akv-manager 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +83 -0
- package/package.json +39 -0
- package/public/index.html +1001 -0
- package/server.js +552 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Thomaz Capra
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# akv-manager
|
|
2
|
+
|
|
3
|
+
A local web console to browse and manage **Azure Key Vaults** — secrets, keys,
|
|
4
|
+
certificates, and expiry — across every subscription you can see.
|
|
5
|
+
|
|
6
|
+
**No credentials are stored or bundled.** It calls `az` once to mint a short-lived
|
|
7
|
+
token (reusing your existing `az login`, so it respects MFA / conditional access) and
|
|
8
|
+
then talks to Azure's REST APIs directly. Every user runs it as **their own** Azure
|
|
9
|
+
identity, with exactly the permissions their `az login` grants. The server binds to
|
|
10
|
+
`127.0.0.1` only — it is never exposed to the network.
|
|
11
|
+
|
|
12
|
+
## Run it
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx akv-manager
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
That's it — it starts a local server, opens your browser, and uses whatever account
|
|
19
|
+
you're logged into with `az`. Prerequisites:
|
|
20
|
+
|
|
21
|
+
- **Node.js ≥ 18**
|
|
22
|
+
- **Azure CLI** (`az`) installed and signed in (`az login`)
|
|
23
|
+
|
|
24
|
+
If you're not signed in, the UI tells you to run `az login` and press Refresh.
|
|
25
|
+
|
|
26
|
+
## What you can do
|
|
27
|
+
|
|
28
|
+
- **Overview** — accounts, subscriptions, and vault counts per environment.
|
|
29
|
+
- **Subscriptions** — switch the active subscription.
|
|
30
|
+
- **Key Vaults** — live Resource Graph sweep across every subscription you can read;
|
|
31
|
+
filter, sort, see RBAC-vs-policy auth and SKU. Open a vault to inspect/edit its
|
|
32
|
+
**secrets, keys and certificates**.
|
|
33
|
+
- reveal a secret value, **create** secrets (one or in batch with a common expiry),
|
|
34
|
+
**edit** values (current value pre-filled), and **batch** enable/disable/set-expiry.
|
|
35
|
+
- **Expiry** — scan every readable vault for secrets/certs that are expired or near
|
|
36
|
+
expiry, plotted on a time horizon.
|
|
37
|
+
|
|
38
|
+
## Configuration (all optional, via environment variables)
|
|
39
|
+
|
|
40
|
+
| Variable | Default | Purpose |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `PORT` | `4173` | Port to listen on (auto-increments if busy). |
|
|
43
|
+
| `HOST` | `127.0.0.1` | Bind address. Keep it local. |
|
|
44
|
+
| `AZBO_NO_OPEN` | — | Set to anything to skip auto-opening the browser. |
|
|
45
|
+
| `AZBO_TITLE` | `Keyvault Console` | Custom title shown in the sidebar. |
|
|
46
|
+
| `AZBO_ENV_RULES` | — | JSON `[["pattern","Label"], …]` mapping subscription-name patterns to environment labels. |
|
|
47
|
+
| `AZ_PATH` | `az` | Path to the Azure CLI binary. |
|
|
48
|
+
| `AZ_TIMEOUT` | `120000` | Per-`az`-call timeout (ms). |
|
|
49
|
+
|
|
50
|
+
By default environments are inferred from common keywords (`dev`, `test`, `qa`,
|
|
51
|
+
`stage`, `uat`, `prod`, `sandbox`). If your subscription names use a different
|
|
52
|
+
convention, map them yourself, e.g.:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
AZBO_ENV_RULES='[["ANDS","Dev"],["ANIS","Int"],["ANQS","QA"],["APPH","Prod"]]' npx akv-manager
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Notes on access
|
|
59
|
+
|
|
60
|
+
- Seeing a vault in the list is **management-plane** visibility. Reading its secrets
|
|
61
|
+
is a separate **data-plane** permission — the UI shows 🔒 when you lack it.
|
|
62
|
+
- Some vaults restrict access by **IP firewall**. If you're off the corporate VPN you
|
|
63
|
+
may be blocked at the network layer — the UI flags this as 🚫 *firewall / VPN*, not a
|
|
64
|
+
permission problem.
|
|
65
|
+
- Write actions (create/edit/enable/disable) only succeed where you have write
|
|
66
|
+
permission; failures are reported per item.
|
|
67
|
+
|
|
68
|
+
## Publishing (for maintainers)
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm publish # name must be available on the registry you publish to
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Until then you can run it straight from a tarball or git:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm pack # produces akv-manager-x.y.z.tgz
|
|
78
|
+
npx ./akv-manager-1.0.0.tgz # or: npx <git-url>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## License
|
|
82
|
+
|
|
83
|
+
[MIT](./LICENSE) © Thomaz Capra
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "akv-manager",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Local web console to browse and manage Azure Key Vaults — secrets, keys, certificates, expiry — using your own az login. No credentials are stored.",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "server.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"akv-manager": "server.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"server.js",
|
|
12
|
+
"public/",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"author": "Thomaz Capra",
|
|
17
|
+
"scripts": {
|
|
18
|
+
"start": "node server.js",
|
|
19
|
+
"dev": "node --watch server.js"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"azure",
|
|
23
|
+
"keyvault",
|
|
24
|
+
"key-vault",
|
|
25
|
+
"secrets",
|
|
26
|
+
"certificates",
|
|
27
|
+
"az",
|
|
28
|
+
"azure-cli",
|
|
29
|
+
"dashboard",
|
|
30
|
+
"cli"
|
|
31
|
+
],
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"express": "^4.19.2"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=18"
|
|
37
|
+
},
|
|
38
|
+
"license": "MIT"
|
|
39
|
+
}
|