@ratelkey/burrow-sdk 0.1.0 → 0.2.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/README.md +21 -30
- package/dist/cjs/Auth.js +39 -0
- package/dist/cjs/Auth.js.map +1 -0
- package/dist/cjs/Burrow.js +19 -3
- package/dist/cjs/Burrow.js.map +1 -1
- package/dist/cjs/BurrowClient.js +22 -14
- package/dist/cjs/BurrowClient.js.map +1 -1
- package/dist/cjs/Oidc.js +49 -0
- package/dist/cjs/Oidc.js.map +1 -0
- package/dist/cjs/Tls.js +3 -1
- package/dist/cjs/Tls.js.map +1 -1
- package/dist/cjs/Transport.js +6 -5
- package/dist/cjs/Transport.js.map +1 -1
- package/dist/esm/Auth.d.ts +31 -0
- package/dist/esm/Auth.d.ts.map +1 -0
- package/dist/esm/Auth.js +34 -0
- package/dist/esm/Auth.js.map +1 -0
- package/dist/esm/Burrow.d.ts +13 -0
- package/dist/esm/Burrow.d.ts.map +1 -1
- package/dist/esm/Burrow.js +19 -3
- package/dist/esm/Burrow.js.map +1 -1
- package/dist/esm/BurrowClient.d.ts +24 -12
- package/dist/esm/BurrowClient.d.ts.map +1 -1
- package/dist/esm/BurrowClient.js +22 -14
- package/dist/esm/BurrowClient.js.map +1 -1
- package/dist/esm/Oidc.d.ts +13 -0
- package/dist/esm/Oidc.d.ts.map +1 -0
- package/dist/esm/Oidc.js +45 -0
- package/dist/esm/Oidc.js.map +1 -0
- package/dist/esm/Tls.d.ts +12 -1
- package/dist/esm/Tls.d.ts.map +1 -1
- package/dist/esm/Tls.js +3 -1
- package/dist/esm/Tls.js.map +1 -1
- package/dist/esm/Transport.d.ts.map +1 -1
- package/dist/esm/Transport.js +6 -5
- package/dist/esm/Transport.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,20 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Read secrets from a self-hosted [RatelKey](https://ratelkey.com) Burrow with a machine identity.
|
|
4
4
|
|
|
5
|
-
This is the Node.js SDK. It lives under `tools/SDKs/<language>/`, one directory per language; each SDK is a
|
|
6
|
-
standalone, independently-published artifact that speaks the same signed machine data-plane protocol. Its API
|
|
7
|
-
mirrors the Kotlin/JVM SDK one-for-one, so a Burrow reads the same way in either language.
|
|
8
|
-
|
|
9
|
-
## What it does
|
|
10
|
-
|
|
11
|
-
A machine authenticates to a Burrow with a per-request **Ed25519 signature** — no session, no long-lived
|
|
12
|
-
bearer token. The private key is generated on the machine during bootstrap and never leaves it. This SDK
|
|
13
|
-
signs each read the same way the `ratel` CLI does, so a machine bootstrapped once works with both.
|
|
14
|
-
|
|
15
5
|
- Single and structured secrets, and individual fields of a structured secret.
|
|
16
|
-
- The machine's own access map (
|
|
17
|
-
-
|
|
18
|
-
|
|
6
|
+
- The machine's own access map (`listProjects`, `listSecrets`).
|
|
7
|
+
- Certificate pinning, or standard CA trust (`TlsMode`).
|
|
8
|
+
- An OIDC token instead of a key (`Burrow.oidc`).
|
|
19
9
|
|
|
20
10
|
## Requirements
|
|
21
11
|
|
|
@@ -24,9 +14,8 @@ signs each read the same way the `ratel` CLI does, so a machine bootstrapped onc
|
|
|
24
14
|
|
|
25
15
|
## Bootstrap a machine
|
|
26
16
|
|
|
27
|
-
From the Burrow dashboard,
|
|
28
|
-
|
|
29
|
-
`~/.burrow/burrows/<slug>/identity.json`. Grant the machine access to the projects/environments it needs.
|
|
17
|
+
From the Burrow dashboard, **Machines → Add machine**, and run the install it gives you on the target host.
|
|
18
|
+
The identity lands at `~/.burrow/burrows/<slug>/identity.json`.
|
|
30
19
|
|
|
31
20
|
## Quick start
|
|
32
21
|
|
|
@@ -49,8 +38,6 @@ const [user, pass] = db.getFields("username", "password"); // in order — de
|
|
|
49
38
|
for (const p of await burrow.listProjects()) console.log(`${p.project}: ${p.categories}`);
|
|
50
39
|
```
|
|
51
40
|
|
|
52
|
-
Resolving the identity and loading its key are synchronous; only the reads themselves are async.
|
|
53
|
-
|
|
54
41
|
Point it at a specific identity by selector or path:
|
|
55
42
|
|
|
56
43
|
```ts
|
|
@@ -70,21 +57,20 @@ const burrow = Burrow.connect({
|
|
|
70
57
|
});
|
|
71
58
|
```
|
|
72
59
|
|
|
73
|
-
##
|
|
60
|
+
## OIDC
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
const burrow = Burrow.oidc({
|
|
64
|
+
burrowUrl: "https://burrow.example.com",
|
|
65
|
+
fingerprint: process.env.BURROW_FINGERPRINT, // omit for a publicly-trusted certificate
|
|
66
|
+
});
|
|
74
67
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
certificate is still the same Burrow, and pinning the certificate would refuse it.
|
|
68
|
+
const apiKey = (await burrow.getSecret("payments/prod/API_KEY")).value;
|
|
69
|
+
```
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
that Burrow's identity at `~/.burrow/burrows/<slug>/known_cert`, shared with the CLI.
|
|
81
|
-
- `TlsMode.PinnedTo("aa:bb:…")` — pin to a known fingerprint (the SHA-256 the Burrow shows in its network
|
|
82
|
-
settings). No first-use trust.
|
|
83
|
-
- `TlsMode.SystemTrust` — standard CA + hostname verification, for a Burrow on a custom domain or Let's
|
|
84
|
-
Encrypt.
|
|
71
|
+
`audience` defaults to `burrowUrl`. GitHub Actions currently requires `permissions: id-token: write`.
|
|
85
72
|
|
|
86
|
-
|
|
87
|
-
certificate never sees the signed request.
|
|
73
|
+
## Certificate trust
|
|
88
74
|
|
|
89
75
|
```ts
|
|
90
76
|
import { Burrow, TlsMode } from "@ratelkey/burrow-sdk";
|
|
@@ -92,6 +78,11 @@ import { Burrow, TlsMode } from "@ratelkey/burrow-sdk";
|
|
|
92
78
|
const burrow = Burrow(null, { tls: TlsMode.SystemTrust });
|
|
93
79
|
```
|
|
94
80
|
|
|
81
|
+
- `TlsMode.Pinned` (default) — trust-on-first-use, stored at `~/.burrow/burrows/<slug>/known_cert`.
|
|
82
|
+
- `TlsMode.PinnedTo("aa:bb:…")` — a fixed fingerprint (from the Burrow's network settings).
|
|
83
|
+
- `TlsMode.SystemTrust` — CA + hostname verification, for a Burrow on a custom domain or Let's Encrypt.
|
|
84
|
+
- `TlsMode.Insecure` — no verification; accepts any certificate. Opt-in only, for a network you already trust. Shortcut: `Burrow().insecureTls(true)`.
|
|
85
|
+
|
|
95
86
|
## Errors
|
|
96
87
|
|
|
97
88
|
Every failure is a `BurrowException`: `BurrowAuthException` (401), `BurrowForbiddenException` (403, no grant),
|
package/dist/cjs/Auth.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OidcAuthorizer = exports.SignedAuthorizer = void 0;
|
|
4
|
+
const Oidc_js_1 = require("./Oidc.js");
|
|
5
|
+
const Signer_js_1 = require("./Signer.js");
|
|
6
|
+
/** Signs each request with the machine's Ed25519 key. */
|
|
7
|
+
class SignedAuthorizer {
|
|
8
|
+
machineId;
|
|
9
|
+
key;
|
|
10
|
+
clientTag;
|
|
11
|
+
now;
|
|
12
|
+
constructor(machineId, key, clientTag, now = Date.now) {
|
|
13
|
+
this.machineId = machineId;
|
|
14
|
+
this.key = key;
|
|
15
|
+
this.clientTag = clientTag;
|
|
16
|
+
this.now = now;
|
|
17
|
+
}
|
|
18
|
+
authorize(action, resource) {
|
|
19
|
+
return Promise.resolve(Signer_js_1.MachineSigner.sign(this.machineId, this.key, action, resource, this.clientTag, this.now()));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.SignedAuthorizer = SignedAuthorizer;
|
|
23
|
+
/** Mints a provider OIDC token per request and sends it as a bearer. No key; the Burrow identifies the machine
|
|
24
|
+
* from the token's claims. */
|
|
25
|
+
class OidcAuthorizer {
|
|
26
|
+
audience;
|
|
27
|
+
clientTag;
|
|
28
|
+
machineId = "";
|
|
29
|
+
constructor(audience, clientTag) {
|
|
30
|
+
this.audience = audience;
|
|
31
|
+
this.clientTag = clientTag;
|
|
32
|
+
}
|
|
33
|
+
async authorize() {
|
|
34
|
+
const token = await (0, Oidc_js_1.mintOidcToken)(this.audience);
|
|
35
|
+
return { Authorization: `Bearer ${token}`, "Ratel-Client": this.clientTag };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.OidcAuthorizer = OidcAuthorizer;
|
|
39
|
+
//# sourceMappingURL=Auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/Auth.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,2CAA4C;AAc5C,yDAAyD;AACzD,MAAa,gBAAgB;IAEhB;IACQ;IACA;IACA;IAJnB,YACW,SAAiB,EACT,GAAc,EACd,SAAiB,EACjB,MAAoB,IAAI,CAAC,GAAG;QAHpC,cAAS,GAAT,SAAS,CAAQ;QACT,QAAG,GAAH,GAAG,CAAW;QACd,cAAS,GAAT,SAAS,CAAQ;QACjB,QAAG,GAAH,GAAG,CAAyB;IAC5C,CAAC;IAEJ,SAAS,CAAC,MAAc,EAAE,QAAkB;QAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,yBAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;CACF;AAXD,4CAWC;AAED;+BAC+B;AAC/B,MAAa,cAAc;IAGI;IAAmC;IAFvD,SAAS,GAAG,EAAE,CAAC;IAExB,YAA6B,QAAgB,EAAmB,SAAiB;QAApD,aAAQ,GAAR,QAAQ,CAAQ;QAAmB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAErF,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;CACF;AATD,wCASC"}
|
package/dist/cjs/Burrow.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Burrow = exports.DEFAULT_CLIENT_TAG = exports.SDK_VERSION = void 0;
|
|
4
|
+
const Auth_js_1 = require("./Auth.js");
|
|
4
5
|
const BurrowClient_js_1 = require("./BurrowClient.js");
|
|
5
6
|
const Identity_js_1 = require("./Identity.js");
|
|
6
7
|
const Tls_js_1 = require("./Tls.js");
|
|
@@ -16,7 +17,8 @@ exports.DEFAULT_CLIENT_TAG = `ratel-sdk-node/${exports.SDK_VERSION}`;
|
|
|
16
17
|
*/
|
|
17
18
|
function open(target, options = {}) {
|
|
18
19
|
const id = Identity_js_1.Identities.select(target);
|
|
19
|
-
|
|
20
|
+
const clientTag = options.clientTag ?? exports.DEFAULT_CLIENT_TAG;
|
|
21
|
+
return new BurrowClient_js_1.DefaultBurrowClient(id.burrowUrl, new Auth_js_1.SignedAuthorizer(id.machineId, id.loadPrivateKey(), clientTag), options.tls ?? Tls_js_1.TlsMode.Pinned, id.directory);
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Connect with an explicit identity — for an app that manages its own key material rather than reading the
|
|
@@ -24,7 +26,21 @@ function open(target, options = {}) {
|
|
|
24
26
|
*/
|
|
25
27
|
function connect(options) {
|
|
26
28
|
const key = (0, Identity_js_1.parseEd25519PrivateKey)(options.privateKeyPem, "provided PEM");
|
|
27
|
-
|
|
29
|
+
const clientTag = options.clientTag ?? exports.DEFAULT_CLIENT_TAG;
|
|
30
|
+
return new BurrowClient_js_1.DefaultBurrowClient(options.burrowUrl, new Auth_js_1.SignedAuthorizer(options.machineId, key, clientTag), options.tls ?? Tls_js_1.TlsMode.Pinned, options.pinStoreDir ?? null);
|
|
28
31
|
}
|
|
29
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Connect with OIDC — for a CI workflow (GitHub Actions today) that reads secrets with no key. Each call
|
|
34
|
+
* mints a fresh provider token for {@link OidcConnectOptions.audience} and sends it as a bearer; the Burrow
|
|
35
|
+
* verifies it against the machine's trust policy. There is no key and nothing written to disk.
|
|
36
|
+
*
|
|
37
|
+
* TLS defaults to {@link OidcConnectOptions.fingerprint} when given (pin the burrow's public key, from its
|
|
38
|
+
* Network settings) and otherwise to system trust — trust-on-first-use is useless on an ephemeral runner.
|
|
39
|
+
*/
|
|
40
|
+
function oidc(options) {
|
|
41
|
+
const clientTag = options.clientTag ?? exports.DEFAULT_CLIENT_TAG;
|
|
42
|
+
const tls = options.tls ?? (options.fingerprint ? Tls_js_1.TlsMode.PinnedTo(options.fingerprint) : Tls_js_1.TlsMode.SystemTrust);
|
|
43
|
+
return new BurrowClient_js_1.DefaultBurrowClient(options.burrowUrl, new Auth_js_1.OidcAuthorizer(options.audience ?? options.burrowUrl, clientTag), tls, null);
|
|
44
|
+
}
|
|
45
|
+
exports.Burrow = Object.assign(open, { DEFAULT_CLIENT_TAG: exports.DEFAULT_CLIENT_TAG, connect, oidc });
|
|
30
46
|
//# sourceMappingURL=Burrow.js.map
|
package/dist/cjs/Burrow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Burrow.js","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":";;;AAAA,uDAA2E;AAC3E,+CAAmE;AACnE,qCAAmC;AAEnC,2FAA2F;AAC9E,QAAA,WAAW,GAAG,OAAO,CAAC;AAEnC,4GAA4G;AAC/F,QAAA,kBAAkB,GAAG,kBAAkB,mBAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Burrow.js","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAC7D,uDAA2E;AAC3E,+CAAmE;AACnE,qCAAmC;AAEnC,2FAA2F;AAC9E,QAAA,WAAW,GAAG,OAAO,CAAC;AAEnC,4GAA4G;AAC/F,QAAA,kBAAkB,GAAG,kBAAkB,mBAAW,EAAE,CAAC;AAuClE;;;;;GAKG;AACH,SAAS,IAAI,CAAC,MAAsB,EAAE,UAAyB,EAAE;IAC/D,MAAM,EAAE,GAAG,wBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAAkB,CAAC;IAC1D,OAAO,IAAI,qCAAmB,CAC5B,EAAE,CAAC,SAAS,EACZ,IAAI,0BAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,EAClE,OAAO,CAAC,GAAG,IAAI,gBAAO,CAAC,MAAM,EAC7B,EAAE,CAAC,SAAS,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,OAAuB;IACtC,MAAM,GAAG,GAAG,IAAA,oCAAsB,EAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAAkB,CAAC;IAC1D,OAAO,IAAI,qCAAmB,CAC5B,OAAO,CAAC,SAAS,EACjB,IAAI,0BAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,EACvD,OAAO,CAAC,GAAG,IAAI,gBAAO,CAAC,MAAM,EAC7B,OAAO,CAAC,WAAW,IAAI,IAAI,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,IAAI,CAAC,OAA2B;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,0BAAkB,CAAC;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAO,CAAC,WAAW,CAAC,CAAC;IAC/G,OAAO,IAAI,qCAAmB,CAC5B,OAAO,CAAC,SAAS,EACjB,IAAI,wBAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EACpE,GAAG,EACH,IAAI,CACL,CAAC;AACJ,CAAC;AAoCY,QAAA,MAAM,GAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAlB,0BAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC"}
|
package/dist/cjs/BurrowClient.js
CHANGED
|
@@ -3,26 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DefaultBurrowClient = void 0;
|
|
4
4
|
const Errors_js_1 = require("./Errors.js");
|
|
5
5
|
const Model_js_1 = require("./Model.js");
|
|
6
|
-
const
|
|
6
|
+
const Tls_js_1 = require("./Tls.js");
|
|
7
7
|
const Transport_js_1 = require("./Transport.js");
|
|
8
|
-
/** The default {@link BurrowClient}:
|
|
8
|
+
/** The default {@link BurrowClient}: authenticates each request via its {@link Authorizer} and talks to the
|
|
9
|
+
* Burrow over the pinned transport. */
|
|
9
10
|
class DefaultBurrowClient {
|
|
10
11
|
burrowUrl;
|
|
11
|
-
|
|
12
|
-
key;
|
|
13
|
-
clientTag;
|
|
14
|
-
now;
|
|
12
|
+
authorizer;
|
|
15
13
|
transport;
|
|
16
|
-
|
|
14
|
+
machineId;
|
|
15
|
+
/** The trust mode the client was created with, so `insecureTls(false)` can restore it. */
|
|
16
|
+
tls;
|
|
17
|
+
pinStoreDir;
|
|
18
|
+
constructor(burrowUrl, authorizer, tls,
|
|
17
19
|
/** Where this Burrow's pinned key is kept — its identity directory. Null for a caller that has none. */
|
|
18
|
-
pinStoreDir
|
|
20
|
+
pinStoreDir) {
|
|
19
21
|
this.burrowUrl = burrowUrl;
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
22
|
+
this.authorizer = authorizer;
|
|
23
|
+
this.machineId = authorizer.machineId;
|
|
24
|
+
this.tls = tls;
|
|
25
|
+
this.pinStoreDir = pinStoreDir;
|
|
24
26
|
this.transport = new Transport_js_1.Transport(burrowUrl, tls, pinStoreDir);
|
|
25
27
|
}
|
|
28
|
+
insecureTls(enabled = true) {
|
|
29
|
+
// Rebuild the transport rather than mutate it; no request has gone out yet (the transport dials lazily),
|
|
30
|
+
// so this is free before the first read. `false` reverts to the mode the client was constructed with.
|
|
31
|
+
this.transport = new Transport_js_1.Transport(this.burrowUrl, enabled ? Tls_js_1.TlsMode.Insecure : this.tls, this.pinStoreDir);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
26
34
|
async getSecret(coordinate) {
|
|
27
35
|
const c = Model_js_1.SecretCoordinate.parse(coordinate);
|
|
28
36
|
if (c.project.length === 0 || c.environment.length === 0 || c.name.length === 0) {
|
|
@@ -51,8 +59,8 @@ class DefaultBurrowClient {
|
|
|
51
59
|
return new Model_js_1.ProjectAccess(typeof o["project"] === "string" ? o["project"] : "", Array.isArray(categories) ? categories.filter((c) => typeof c === "string") : []);
|
|
52
60
|
});
|
|
53
61
|
}
|
|
54
|
-
signedGet(action, resource, path) {
|
|
55
|
-
const headers =
|
|
62
|
+
async signedGet(action, resource, path) {
|
|
63
|
+
const headers = await this.authorizer.authorize(action, resource);
|
|
56
64
|
return this.transport.get(path, headers);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurrowClient.js","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":";;;AACA,2CAAuD;AACvD,yCAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"BurrowClient.js","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/Oidc.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oidcProviderDetected = oidcProviderDetected;
|
|
4
|
+
exports.mintOidcToken = mintOidcToken;
|
|
5
|
+
const Errors_js_1 = require("./Errors.js");
|
|
6
|
+
/**
|
|
7
|
+
* Mints a provider OIDC token for the machine data plane — the CI path, where the client holds no key and
|
|
8
|
+
* proves itself with a short-lived token its provider signs. GitHub Actions is the provider today.
|
|
9
|
+
*
|
|
10
|
+
* The token's audience must be the value the Burrow's trust policy requires; the Burrow verifies the token's
|
|
11
|
+
* signature against the provider's keys and matches its claims (repository, workflow, environment) to that
|
|
12
|
+
* policy. Nothing here is a secret at rest: the token lives for minutes and is minted per request.
|
|
13
|
+
*/
|
|
14
|
+
/** Whether this process can mint an OIDC token right now (GitHub Actions with `id-token: write`). */
|
|
15
|
+
function oidcProviderDetected() {
|
|
16
|
+
return ((process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]?.length ?? 0) > 0 &&
|
|
17
|
+
(process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]?.length ?? 0) > 0);
|
|
18
|
+
}
|
|
19
|
+
/** Request a token for `audience` from the detected provider. Throws if no provider is available. */
|
|
20
|
+
async function mintOidcToken(audience) {
|
|
21
|
+
const requestUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];
|
|
22
|
+
const requestToken = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];
|
|
23
|
+
if (!requestUrl || !requestToken) {
|
|
24
|
+
throw new Errors_js_1.BurrowAuthException("no OIDC provider detected. In GitHub Actions the workflow needs 'permissions: id-token: write' " +
|
|
25
|
+
"(which sets ACTIONS_ID_TOKEN_REQUEST_URL and ACTIONS_ID_TOKEN_REQUEST_TOKEN)");
|
|
26
|
+
}
|
|
27
|
+
const url = new URL(requestUrl);
|
|
28
|
+
if (audience.length > 0)
|
|
29
|
+
url.searchParams.set("audience", audience);
|
|
30
|
+
let response;
|
|
31
|
+
try {
|
|
32
|
+
// GitHub's token service, publicly trusted — ordinary TLS verification applies.
|
|
33
|
+
response = await fetch(url, {
|
|
34
|
+
headers: { Authorization: `Bearer ${requestToken}`, Accept: "application/json" },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
throw new Errors_js_1.BurrowAuthException(`requesting an OIDC token from the provider: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Errors_js_1.BurrowAuthException(`the OIDC token request failed (HTTP ${response.status})`);
|
|
42
|
+
}
|
|
43
|
+
const body = (await response.json().catch(() => ({})));
|
|
44
|
+
if (typeof body.value !== "string" || body.value.length === 0) {
|
|
45
|
+
throw new Errors_js_1.BurrowAuthException("the OIDC provider returned no token");
|
|
46
|
+
}
|
|
47
|
+
return body.value;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=Oidc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Oidc.js","sourceRoot":"","sources":["../../src/Oidc.ts"],"names":[],"mappings":";;AAYA,oDAKC;AAGD,sCA6BC;AAjDD,2CAAkD;AAElD;;;;;;;GAOG;AAEH,qGAAqG;AACrG,SAAgB,oBAAoB;IAClC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAC9D,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,qGAAqG;AAC9F,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,+BAAmB,CAC3B,iGAAiG;YAC/F,8EAA8E,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEpE,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,gFAAgF;QAChF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,YAAY,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,+BAAmB,CAAC,+CAA+C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3I,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,+BAAmB,CAAC,uCAAuC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAwB,CAAC;IAC9E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,+BAAmB,CAAC,qCAAqC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC"}
|
package/dist/cjs/Tls.js
CHANGED
|
@@ -6,11 +6,13 @@ exports.fingerprintsEqual = fingerprintsEqual;
|
|
|
6
6
|
const node_crypto_1 = require("node:crypto");
|
|
7
7
|
const node_fs_1 = require("node:fs");
|
|
8
8
|
const node_path_1 = require("node:path");
|
|
9
|
-
/** The
|
|
9
|
+
/** The trust modes, as values: `TlsMode.Pinned`, `TlsMode.PinnedTo("aa:bb:…")`, `TlsMode.SystemTrust`, `TlsMode.Insecure`. */
|
|
10
10
|
exports.TlsMode = {
|
|
11
11
|
Pinned: { kind: "pinned" },
|
|
12
12
|
PinnedTo: (fingerprint) => ({ kind: "pinnedTo", fingerprint }),
|
|
13
13
|
SystemTrust: { kind: "systemTrust" },
|
|
14
|
+
/** No verification — accept any certificate. Opt-in only; defeats MITM protection. */
|
|
15
|
+
Insecure: { kind: "insecure" },
|
|
14
16
|
};
|
|
15
17
|
/**
|
|
16
18
|
* SHA-256 of a certificate's PUBLIC KEY (its SubjectPublicKeyInfo) as lowercase colon-separated hex — the
|
package/dist/cjs/Tls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tls.js","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Tls.js","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":";;;AAwDA,oCAIC;AAGD,8CAIC;AAnED,6CAA0D;AAC1D,qCAA6E;AAC7E,yCAA0C;AAgC1C,8HAA8H;AACjH,QAAA,OAAO,GAAG;IACrB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAa;IACrC,QAAQ,EAAE,CAAC,WAAmB,EAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAC/E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAa;IAC/C,sFAAsF;IACtF,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAa;CACjC,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY,CAAC,GAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,6BAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,MAAM,GAAG,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,4FAA4F;AAC5F,SAAgB,iBAAiB,CAAC,CAAS,EAAE,CAAS;IACpD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACjF,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAa,QAAQ;IACF,IAAI,CAAgB;IAErC,YAAY,GAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO;QAChC,gGAAgG;QAChG,IAAI,CAAC;YACH,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;YAC/B,IAAA,uBAAa,EAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC/B,IAAA,oBAAU,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;IACH,CAAC;CACF;AA7BD,4BA6BC"}
|
package/dist/cjs/Transport.js
CHANGED
|
@@ -68,10 +68,11 @@ class Transport {
|
|
|
68
68
|
connect(url) {
|
|
69
69
|
const host = url.hostname;
|
|
70
70
|
const port = url.port.length > 0 ? Number(url.port) : url.protocol === "https:" ? 443 : 80;
|
|
71
|
-
//
|
|
72
|
-
// the
|
|
73
|
-
//
|
|
74
|
-
const
|
|
71
|
+
// SystemTrust does full CA + hostname verification; the pinned modes waive that and verify by public-key
|
|
72
|
+
// pin instead (the cert is reached by IP or a self-signed domain no CA would match); Insecure does neither
|
|
73
|
+
// and accepts any certificate. Only the pinned modes run the pin check in onSecure below.
|
|
74
|
+
const verifying = this.tls.kind === "systemTrust";
|
|
75
|
+
const pinning = this.tls.kind === "pinned" || this.tls.kind === "pinnedTo";
|
|
75
76
|
const socket = url.protocol === "http:"
|
|
76
77
|
? (0, node_net_1.connect)({ host, port })
|
|
77
78
|
: (0, node_tls_1.connect)({
|
|
@@ -79,7 +80,7 @@ class Transport {
|
|
|
79
80
|
port,
|
|
80
81
|
// SNI carries a hostname; an IP literal is not a legal server name.
|
|
81
82
|
...((0, node_net_1.isIP)(host) === 0 ? { servername: host } : {}),
|
|
82
|
-
rejectUnauthorized:
|
|
83
|
+
rejectUnauthorized: verifying,
|
|
83
84
|
});
|
|
84
85
|
return new Promise((resolve, reject) => {
|
|
85
86
|
const finish = (settle) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { KeyObject } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Produces the auth headers for one machine-plane request. Two implementations: {@link SignedAuthorizer} (an
|
|
4
|
+
* Ed25519 key signs each request) and {@link OidcAuthorizer} (a provider-minted bearer token). The client
|
|
5
|
+
* doesn't care which — it awaits `authorize` and hands the headers to the transport.
|
|
6
|
+
*/
|
|
7
|
+
export interface Authorizer {
|
|
8
|
+
/** The machine id, when known client-side. Empty for OIDC, where the Burrow resolves it from the token. */
|
|
9
|
+
readonly machineId: string;
|
|
10
|
+
/** Headers for the request. `resource` is the signed operation's coordinates (Ed25519 only). */
|
|
11
|
+
authorize(action: string, resource: string[]): Promise<Record<string, string>>;
|
|
12
|
+
}
|
|
13
|
+
/** Signs each request with the machine's Ed25519 key. */
|
|
14
|
+
export declare class SignedAuthorizer implements Authorizer {
|
|
15
|
+
readonly machineId: string;
|
|
16
|
+
private readonly key;
|
|
17
|
+
private readonly clientTag;
|
|
18
|
+
private readonly now;
|
|
19
|
+
constructor(machineId: string, key: KeyObject, clientTag: string, now?: () => number);
|
|
20
|
+
authorize(action: string, resource: string[]): Promise<Record<string, string>>;
|
|
21
|
+
}
|
|
22
|
+
/** Mints a provider OIDC token per request and sends it as a bearer. No key; the Burrow identifies the machine
|
|
23
|
+
* from the token's claims. */
|
|
24
|
+
export declare class OidcAuthorizer implements Authorizer {
|
|
25
|
+
private readonly audience;
|
|
26
|
+
private readonly clientTag;
|
|
27
|
+
readonly machineId = "";
|
|
28
|
+
constructor(audience: string, clientTag: string);
|
|
29
|
+
authorize(): Promise<Record<string, string>>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.d.ts","sourceRoot":"","sources":["../../src/Auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,2GAA2G;IAC3G,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gGAAgG;IAChG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChF;AAED,yDAAyD;AACzD,qBAAa,gBAAiB,YAAW,UAAU;IAE/C,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAHX,SAAS,EAAE,MAAM,EACT,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,MAAiB;IAG/C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAG/E;AAED;+BAC+B;AAC/B,qBAAa,cAAe,YAAW,UAAU;IAGnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFzE,QAAQ,CAAC,SAAS,MAAM;gBAEK,QAAQ,EAAE,MAAM,EAAmB,SAAS,EAAE,MAAM;IAE3E,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAInD"}
|
package/dist/esm/Auth.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mintOidcToken } from "./Oidc.js";
|
|
2
|
+
import { MachineSigner } from "./Signer.js";
|
|
3
|
+
/** Signs each request with the machine's Ed25519 key. */
|
|
4
|
+
export class SignedAuthorizer {
|
|
5
|
+
machineId;
|
|
6
|
+
key;
|
|
7
|
+
clientTag;
|
|
8
|
+
now;
|
|
9
|
+
constructor(machineId, key, clientTag, now = Date.now) {
|
|
10
|
+
this.machineId = machineId;
|
|
11
|
+
this.key = key;
|
|
12
|
+
this.clientTag = clientTag;
|
|
13
|
+
this.now = now;
|
|
14
|
+
}
|
|
15
|
+
authorize(action, resource) {
|
|
16
|
+
return Promise.resolve(MachineSigner.sign(this.machineId, this.key, action, resource, this.clientTag, this.now()));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Mints a provider OIDC token per request and sends it as a bearer. No key; the Burrow identifies the machine
|
|
20
|
+
* from the token's claims. */
|
|
21
|
+
export class OidcAuthorizer {
|
|
22
|
+
audience;
|
|
23
|
+
clientTag;
|
|
24
|
+
machineId = "";
|
|
25
|
+
constructor(audience, clientTag) {
|
|
26
|
+
this.audience = audience;
|
|
27
|
+
this.clientTag = clientTag;
|
|
28
|
+
}
|
|
29
|
+
async authorize() {
|
|
30
|
+
const token = await mintOidcToken(this.audience);
|
|
31
|
+
return { Authorization: `Bearer ${token}`, "Ratel-Client": this.clientTag };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=Auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/Auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAc5C,yDAAyD;AACzD,MAAM,OAAO,gBAAgB;IAEhB;IACQ;IACA;IACA;IAJnB,YACW,SAAiB,EACT,GAAc,EACd,SAAiB,EACjB,MAAoB,IAAI,CAAC,GAAG;QAHpC,cAAS,GAAT,SAAS,CAAQ;QACT,QAAG,GAAH,GAAG,CAAW;QACd,cAAS,GAAT,SAAS,CAAQ;QACjB,QAAG,GAAH,GAAG,CAAyB;IAC5C,CAAC;IAEJ,SAAS,CAAC,MAAc,EAAE,QAAkB;QAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;CACF;AAED;+BAC+B;AAC/B,MAAM,OAAO,cAAc;IAGI;IAAmC;IAFvD,SAAS,GAAG,EAAE,CAAC;IAExB,YAA6B,QAAgB,EAAmB,SAAiB;QAApD,aAAQ,GAAR,QAAQ,CAAQ;QAAmB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAErF,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;CACF"}
|
package/dist/esm/Burrow.d.ts
CHANGED
|
@@ -27,6 +27,17 @@ export interface ConnectOptions extends BurrowOptions {
|
|
|
27
27
|
*/
|
|
28
28
|
pinStoreDir?: string;
|
|
29
29
|
}
|
|
30
|
+
/** Options for {@link Burrow.oidc} — a CI workflow reading secrets with no key. */
|
|
31
|
+
export interface OidcConnectOptions extends BurrowOptions {
|
|
32
|
+
burrowUrl: string;
|
|
33
|
+
/** The token audience the Burrow requires. Defaults to `burrowUrl`. */
|
|
34
|
+
audience?: string;
|
|
35
|
+
/**
|
|
36
|
+
* The Burrow's public-key fingerprint to pin (from its Network settings). Omit when the Burrow serves a
|
|
37
|
+
* publicly-trusted certificate. Ignored when `tls` is set explicitly.
|
|
38
|
+
*/
|
|
39
|
+
fingerprint?: string;
|
|
40
|
+
}
|
|
30
41
|
/**
|
|
31
42
|
* Entry point for reading secrets from a Burrow with a machine identity.
|
|
32
43
|
*
|
|
@@ -54,6 +65,8 @@ export interface BurrowFactory {
|
|
|
54
65
|
readonly DEFAULT_CLIENT_TAG: string;
|
|
55
66
|
/** Connect with an explicit identity rather than one discovered under `~/.burrow`. */
|
|
56
67
|
connect(options: ConnectOptions): BurrowClient;
|
|
68
|
+
/** Connect with OIDC — a CI workflow reading secrets with no key (GitHub Actions today). */
|
|
69
|
+
oidc(options: OidcConnectOptions): BurrowClient;
|
|
57
70
|
}
|
|
58
71
|
export declare const Burrow: BurrowFactory;
|
|
59
72
|
//# sourceMappingURL=Burrow.d.ts.map
|
package/dist/esm/Burrow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Burrow.d.ts","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Burrow.d.ts","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,2FAA2F;AAC3F,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,4GAA4G;AAC5G,eAAO,MAAM,kBAAkB,yBAAkC,CAAC;AAElE,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,oGAAoG;IACpG,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAqDD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAEhE,4GAA4G;IAC5G,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC,sFAAsF;IACtF,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAAC;IAE/C,4FAA4F;IAC5F,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,CAAC;CACjD;AAED,eAAO,MAAM,MAAM,EAAE,aAA0E,CAAC"}
|
package/dist/esm/Burrow.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OidcAuthorizer, SignedAuthorizer } from "./Auth.js";
|
|
1
2
|
import { DefaultBurrowClient } from "./BurrowClient.js";
|
|
2
3
|
import { Identities, parseEd25519PrivateKey } from "./Identity.js";
|
|
3
4
|
import { TlsMode } from "./Tls.js";
|
|
@@ -13,7 +14,8 @@ export const DEFAULT_CLIENT_TAG = `ratel-sdk-node/${SDK_VERSION}`;
|
|
|
13
14
|
*/
|
|
14
15
|
function open(target, options = {}) {
|
|
15
16
|
const id = Identities.select(target);
|
|
16
|
-
|
|
17
|
+
const clientTag = options.clientTag ?? DEFAULT_CLIENT_TAG;
|
|
18
|
+
return new DefaultBurrowClient(id.burrowUrl, new SignedAuthorizer(id.machineId, id.loadPrivateKey(), clientTag), options.tls ?? TlsMode.Pinned, id.directory);
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Connect with an explicit identity — for an app that manages its own key material rather than reading the
|
|
@@ -21,7 +23,21 @@ function open(target, options = {}) {
|
|
|
21
23
|
*/
|
|
22
24
|
function connect(options) {
|
|
23
25
|
const key = parseEd25519PrivateKey(options.privateKeyPem, "provided PEM");
|
|
24
|
-
|
|
26
|
+
const clientTag = options.clientTag ?? DEFAULT_CLIENT_TAG;
|
|
27
|
+
return new DefaultBurrowClient(options.burrowUrl, new SignedAuthorizer(options.machineId, key, clientTag), options.tls ?? TlsMode.Pinned, options.pinStoreDir ?? null);
|
|
25
28
|
}
|
|
26
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Connect with OIDC — for a CI workflow (GitHub Actions today) that reads secrets with no key. Each call
|
|
31
|
+
* mints a fresh provider token for {@link OidcConnectOptions.audience} and sends it as a bearer; the Burrow
|
|
32
|
+
* verifies it against the machine's trust policy. There is no key and nothing written to disk.
|
|
33
|
+
*
|
|
34
|
+
* TLS defaults to {@link OidcConnectOptions.fingerprint} when given (pin the burrow's public key, from its
|
|
35
|
+
* Network settings) and otherwise to system trust — trust-on-first-use is useless on an ephemeral runner.
|
|
36
|
+
*/
|
|
37
|
+
function oidc(options) {
|
|
38
|
+
const clientTag = options.clientTag ?? DEFAULT_CLIENT_TAG;
|
|
39
|
+
const tls = options.tls ?? (options.fingerprint ? TlsMode.PinnedTo(options.fingerprint) : TlsMode.SystemTrust);
|
|
40
|
+
return new DefaultBurrowClient(options.burrowUrl, new OidcAuthorizer(options.audience ?? options.burrowUrl, clientTag), tls, null);
|
|
41
|
+
}
|
|
42
|
+
export const Burrow = Object.assign(open, { DEFAULT_CLIENT_TAG, connect, oidc });
|
|
27
43
|
//# sourceMappingURL=Burrow.js.map
|
package/dist/esm/Burrow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Burrow.js","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,4GAA4G;AAC5G,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Burrow.js","sourceRoot":"","sources":["../../src/Burrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAqB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,4GAA4G;AAC5G,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,WAAW,EAAE,CAAC;AAuClE;;;;;GAKG;AACH,SAAS,IAAI,CAAC,MAAsB,EAAE,UAAyB,EAAE;IAC/D,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,OAAO,IAAI,mBAAmB,CAC5B,EAAE,CAAC,SAAS,EACZ,IAAI,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,EAClE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAC7B,EAAE,CAAC,SAAS,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,OAAuB;IACtC,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,OAAO,IAAI,mBAAmB,CAC5B,OAAO,CAAC,SAAS,EACjB,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,EACvD,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAC7B,OAAO,CAAC,WAAW,IAAI,IAAI,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,IAAI,CAAC,OAA2B;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/G,OAAO,IAAI,mBAAmB,CAC5B,OAAO,CAAC,SAAS,EACjB,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EACpE,GAAG,EACH,IAAI,CACL,CAAC;AACJ,CAAC;AAoCD,MAAM,CAAC,MAAM,MAAM,GAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Authorizer } from "./Auth.js";
|
|
2
2
|
import { ProjectAccess, Secret, SecretCoordinate } from "./Model.js";
|
|
3
|
-
import
|
|
3
|
+
import { TlsMode } from "./Tls.js";
|
|
4
4
|
/**
|
|
5
|
-
* Reads secrets from a Burrow as a machine identity. Every call is independently
|
|
6
|
-
*
|
|
5
|
+
* Reads secrets from a Burrow as a machine identity. Every call is independently authenticated — either an
|
|
6
|
+
* Ed25519 signature or a freshly-minted OIDC token — with no session held. Instances are reusable; construct
|
|
7
|
+
* one via `Burrow`.
|
|
7
8
|
*/
|
|
8
9
|
export interface BurrowClient {
|
|
9
10
|
/** The Burrow this client reads from. */
|
|
10
11
|
readonly burrowUrl: string;
|
|
11
|
-
/** The machine identity this client acts as. */
|
|
12
|
+
/** The machine identity this client acts as. Empty when authenticating by OIDC (the Burrow resolves it). */
|
|
12
13
|
readonly machineId: string;
|
|
13
14
|
/**
|
|
14
15
|
* Read a secret by its `project/env/NAME` coordinate, whole, in one signed call. Project the result
|
|
@@ -20,18 +21,29 @@ export interface BurrowClient {
|
|
|
20
21
|
listSecrets(): Promise<SecretCoordinate[]>;
|
|
21
22
|
/** Every project this machine can read, and the environment categories it holds in each. */
|
|
22
23
|
listProjects(): Promise<ProjectAccess[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Turn TLS verification off (or back on) for this client, returning it for chaining —
|
|
26
|
+
* `Burrow().insecureTls(true)`. With it on, any certificate the Burrow presents is accepted: no CA,
|
|
27
|
+
* hostname, or pin check. Opt-in only; it defeats MITM protection, so use it solely on a transport you
|
|
28
|
+
* already trust (a private network, or a deliberate decision to accept the risk on a public IP). Passing
|
|
29
|
+
* `false` restores the trust mode the client was created with.
|
|
30
|
+
*/
|
|
31
|
+
insecureTls(enabled?: boolean): this;
|
|
23
32
|
}
|
|
24
|
-
/** The default {@link BurrowClient}:
|
|
33
|
+
/** The default {@link BurrowClient}: authenticates each request via its {@link Authorizer} and talks to the
|
|
34
|
+
* Burrow over the pinned transport. */
|
|
25
35
|
export declare class DefaultBurrowClient implements BurrowClient {
|
|
26
36
|
readonly burrowUrl: string;
|
|
37
|
+
private readonly authorizer;
|
|
38
|
+
private transport;
|
|
27
39
|
readonly machineId: string;
|
|
28
|
-
|
|
29
|
-
private readonly
|
|
30
|
-
private readonly
|
|
31
|
-
|
|
32
|
-
constructor(burrowUrl: string, machineId: string, key: KeyObject, clientTag: string, tls: TlsMode,
|
|
40
|
+
/** The trust mode the client was created with, so `insecureTls(false)` can restore it. */
|
|
41
|
+
private readonly tls;
|
|
42
|
+
private readonly pinStoreDir;
|
|
43
|
+
constructor(burrowUrl: string, authorizer: Authorizer, tls: TlsMode,
|
|
33
44
|
/** Where this Burrow's pinned key is kept — its identity directory. Null for a caller that has none. */
|
|
34
|
-
pinStoreDir: string | null
|
|
45
|
+
pinStoreDir: string | null);
|
|
46
|
+
insecureTls(enabled?: boolean): this;
|
|
35
47
|
getSecret(coordinate: string): Promise<Secret>;
|
|
36
48
|
listSecrets(): Promise<SecretCoordinate[]>;
|
|
37
49
|
listProjects(): Promise<ProjectAccess[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurrowClient.d.ts","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"BurrowClient.d.ts","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,EAAoB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,4GAA4G;IAC5G,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/C,2EAA2E;IAC3E,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3C,4FAA4F;IAC5F,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAEzC;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAED;wCACwC;AACxC,qBAAa,mBAAoB,YAAW,YAAY;IAQpD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAR7B,OAAO,CAAC,SAAS,CAAY;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;gBAGjC,SAAS,EAAE,MAAM,EACT,UAAU,EAAE,UAAU,EACvC,GAAG,EAAE,OAAO;IACZ,wGAAwG;IACxG,WAAW,EAAE,MAAM,GAAG,IAAI;IAQ5B,WAAW,CAAC,OAAO,UAAO,GAAG,IAAI;IAO3B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa9C,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ1C,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAehC,SAAS;CAIxB"}
|
package/dist/esm/BurrowClient.js
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
import { BurrowTransportException } from "./Errors.js";
|
|
2
2
|
import { ProjectAccess, Secret, SecretCoordinate } from "./Model.js";
|
|
3
|
-
import {
|
|
3
|
+
import { TlsMode } from "./Tls.js";
|
|
4
4
|
import { Transport } from "./Transport.js";
|
|
5
|
-
/** The default {@link BurrowClient}:
|
|
5
|
+
/** The default {@link BurrowClient}: authenticates each request via its {@link Authorizer} and talks to the
|
|
6
|
+
* Burrow over the pinned transport. */
|
|
6
7
|
export class DefaultBurrowClient {
|
|
7
8
|
burrowUrl;
|
|
8
|
-
|
|
9
|
-
key;
|
|
10
|
-
clientTag;
|
|
11
|
-
now;
|
|
9
|
+
authorizer;
|
|
12
10
|
transport;
|
|
13
|
-
|
|
11
|
+
machineId;
|
|
12
|
+
/** The trust mode the client was created with, so `insecureTls(false)` can restore it. */
|
|
13
|
+
tls;
|
|
14
|
+
pinStoreDir;
|
|
15
|
+
constructor(burrowUrl, authorizer, tls,
|
|
14
16
|
/** Where this Burrow's pinned key is kept — its identity directory. Null for a caller that has none. */
|
|
15
|
-
pinStoreDir
|
|
17
|
+
pinStoreDir) {
|
|
16
18
|
this.burrowUrl = burrowUrl;
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
19
|
+
this.authorizer = authorizer;
|
|
20
|
+
this.machineId = authorizer.machineId;
|
|
21
|
+
this.tls = tls;
|
|
22
|
+
this.pinStoreDir = pinStoreDir;
|
|
21
23
|
this.transport = new Transport(burrowUrl, tls, pinStoreDir);
|
|
22
24
|
}
|
|
25
|
+
insecureTls(enabled = true) {
|
|
26
|
+
// Rebuild the transport rather than mutate it; no request has gone out yet (the transport dials lazily),
|
|
27
|
+
// so this is free before the first read. `false` reverts to the mode the client was constructed with.
|
|
28
|
+
this.transport = new Transport(this.burrowUrl, enabled ? TlsMode.Insecure : this.tls, this.pinStoreDir);
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
23
31
|
async getSecret(coordinate) {
|
|
24
32
|
const c = SecretCoordinate.parse(coordinate);
|
|
25
33
|
if (c.project.length === 0 || c.environment.length === 0 || c.name.length === 0) {
|
|
@@ -48,8 +56,8 @@ export class DefaultBurrowClient {
|
|
|
48
56
|
return new ProjectAccess(typeof o["project"] === "string" ? o["project"] : "", Array.isArray(categories) ? categories.filter((c) => typeof c === "string") : []);
|
|
49
57
|
});
|
|
50
58
|
}
|
|
51
|
-
signedGet(action, resource, path) {
|
|
52
|
-
const headers =
|
|
59
|
+
async signedGet(action, resource, path) {
|
|
60
|
+
const headers = await this.authorizer.authorize(action, resource);
|
|
53
61
|
return this.transport.get(path, headers);
|
|
54
62
|
}
|
|
55
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurrowClient.js","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAoB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"BurrowClient.js","sourceRoot":"","sources":["../../src/BurrowClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mints a provider OIDC token for the machine data plane — the CI path, where the client holds no key and
|
|
3
|
+
* proves itself with a short-lived token its provider signs. GitHub Actions is the provider today.
|
|
4
|
+
*
|
|
5
|
+
* The token's audience must be the value the Burrow's trust policy requires; the Burrow verifies the token's
|
|
6
|
+
* signature against the provider's keys and matches its claims (repository, workflow, environment) to that
|
|
7
|
+
* policy. Nothing here is a secret at rest: the token lives for minutes and is minted per request.
|
|
8
|
+
*/
|
|
9
|
+
/** Whether this process can mint an OIDC token right now (GitHub Actions with `id-token: write`). */
|
|
10
|
+
export declare function oidcProviderDetected(): boolean;
|
|
11
|
+
/** Request a token for `audience` from the detected provider. Throws if no provider is available. */
|
|
12
|
+
export declare function mintOidcToken(audience: string): Promise<string>;
|
|
13
|
+
//# sourceMappingURL=Oidc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Oidc.d.ts","sourceRoot":"","sources":["../../src/Oidc.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,qGAAqG;AACrG,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C;AAED,qGAAqG;AACrG,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BrE"}
|
package/dist/esm/Oidc.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BurrowAuthException } from "./Errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Mints a provider OIDC token for the machine data plane — the CI path, where the client holds no key and
|
|
4
|
+
* proves itself with a short-lived token its provider signs. GitHub Actions is the provider today.
|
|
5
|
+
*
|
|
6
|
+
* The token's audience must be the value the Burrow's trust policy requires; the Burrow verifies the token's
|
|
7
|
+
* signature against the provider's keys and matches its claims (repository, workflow, environment) to that
|
|
8
|
+
* policy. Nothing here is a secret at rest: the token lives for minutes and is minted per request.
|
|
9
|
+
*/
|
|
10
|
+
/** Whether this process can mint an OIDC token right now (GitHub Actions with `id-token: write`). */
|
|
11
|
+
export function oidcProviderDetected() {
|
|
12
|
+
return ((process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]?.length ?? 0) > 0 &&
|
|
13
|
+
(process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]?.length ?? 0) > 0);
|
|
14
|
+
}
|
|
15
|
+
/** Request a token for `audience` from the detected provider. Throws if no provider is available. */
|
|
16
|
+
export async function mintOidcToken(audience) {
|
|
17
|
+
const requestUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];
|
|
18
|
+
const requestToken = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];
|
|
19
|
+
if (!requestUrl || !requestToken) {
|
|
20
|
+
throw new BurrowAuthException("no OIDC provider detected. In GitHub Actions the workflow needs 'permissions: id-token: write' " +
|
|
21
|
+
"(which sets ACTIONS_ID_TOKEN_REQUEST_URL and ACTIONS_ID_TOKEN_REQUEST_TOKEN)");
|
|
22
|
+
}
|
|
23
|
+
const url = new URL(requestUrl);
|
|
24
|
+
if (audience.length > 0)
|
|
25
|
+
url.searchParams.set("audience", audience);
|
|
26
|
+
let response;
|
|
27
|
+
try {
|
|
28
|
+
// GitHub's token service, publicly trusted — ordinary TLS verification applies.
|
|
29
|
+
response = await fetch(url, {
|
|
30
|
+
headers: { Authorization: `Bearer ${requestToken}`, Accept: "application/json" },
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
throw new BurrowAuthException(`requesting an OIDC token from the provider: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
35
|
+
}
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
throw new BurrowAuthException(`the OIDC token request failed (HTTP ${response.status})`);
|
|
38
|
+
}
|
|
39
|
+
const body = (await response.json().catch(() => ({})));
|
|
40
|
+
if (typeof body.value !== "string" || body.value.length === 0) {
|
|
41
|
+
throw new BurrowAuthException("the OIDC provider returned no token");
|
|
42
|
+
}
|
|
43
|
+
return body.value;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=Oidc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Oidc.js","sourceRoot":"","sources":["../../src/Oidc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;GAOG;AAEH,qGAAqG;AACrG,MAAM,UAAU,oBAAoB;IAClC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAC9D,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAmB,CAC3B,iGAAiG;YAC/F,8EAA8E,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEpE,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,gFAAgF;QAChF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,YAAY,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,CAAC,+CAA+C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3I,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,mBAAmB,CAAC,uCAAuC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAwB,CAAC;IAC9E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC"}
|
package/dist/esm/Tls.d.ts
CHANGED
|
@@ -26,12 +26,23 @@ export type TlsMode =
|
|
|
26
26
|
*/
|
|
27
27
|
| {
|
|
28
28
|
readonly kind: "systemTrust";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* No verification at all: accept whatever certificate the Burrow presents — no CA check, no hostname check,
|
|
32
|
+
* no pin. Opt-in ONLY, and never a default: it defeats MITM protection, so an active on-path attacker can
|
|
33
|
+
* read or alter the traffic. Use it solely on a transport you already trust by other means (a private
|
|
34
|
+
* network you control, or a deliberate operator decision to accept the risk on a public IP).
|
|
35
|
+
*/
|
|
36
|
+
| {
|
|
37
|
+
readonly kind: "insecure";
|
|
29
38
|
};
|
|
30
|
-
/** The
|
|
39
|
+
/** The trust modes, as values: `TlsMode.Pinned`, `TlsMode.PinnedTo("aa:bb:…")`, `TlsMode.SystemTrust`, `TlsMode.Insecure`. */
|
|
31
40
|
export declare const TlsMode: {
|
|
32
41
|
readonly Pinned: TlsMode;
|
|
33
42
|
readonly PinnedTo: (fingerprint: string) => TlsMode;
|
|
34
43
|
readonly SystemTrust: TlsMode;
|
|
44
|
+
/** No verification — accept any certificate. Opt-in only; defeats MITM protection. */
|
|
45
|
+
readonly Insecure: TlsMode;
|
|
35
46
|
};
|
|
36
47
|
/**
|
|
37
48
|
* SHA-256 of a certificate's PUBLIC KEY (its SubjectPublicKeyInfo) as lowercase colon-separated hex — the
|
package/dist/esm/Tls.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tls.d.ts","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":"AAIA,qEAAqE;AACrE,MAAM,MAAM,OAAO;AACjB;;;;;;;GAOG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AAC7B;;;;GAIG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAC7D;;;GAGG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Tls.d.ts","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":"AAIA,qEAAqE;AACrE,MAAM,MAAM,OAAO;AACjB;;;;;;;GAOG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AAC7B;;;;GAIG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAC7D;;;GAGG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;AAClC;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAElC,8HAA8H;AAC9H,eAAO,MAAM,OAAO;qBACY,OAAO;qCACb,MAAM,KAAG,OAAO;0BACA,OAAO;IAC/C,sFAAsF;uBACpD,OAAO;CACjC,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,IAAI,MAAM,GAAG,IAAI;IASrB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAazB"}
|
package/dist/esm/Tls.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { createHash, X509Certificate } from "node:crypto";
|
|
2
2
|
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
|
-
/** The
|
|
4
|
+
/** The trust modes, as values: `TlsMode.Pinned`, `TlsMode.PinnedTo("aa:bb:…")`, `TlsMode.SystemTrust`, `TlsMode.Insecure`. */
|
|
5
5
|
export const TlsMode = {
|
|
6
6
|
Pinned: { kind: "pinned" },
|
|
7
7
|
PinnedTo: (fingerprint) => ({ kind: "pinnedTo", fingerprint }),
|
|
8
8
|
SystemTrust: { kind: "systemTrust" },
|
|
9
|
+
/** No verification — accept any certificate. Opt-in only; defeats MITM protection. */
|
|
10
|
+
Insecure: { kind: "insecure" },
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
11
13
|
* SHA-256 of a certificate's PUBLIC KEY (its SubjectPublicKeyInfo) as lowercase colon-separated hex — the
|
package/dist/esm/Tls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tls.js","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Tls.js","sourceRoot":"","sources":["../../src/Tls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"AAaA,OAAO,EAA6C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAUnF;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,0GAA0G;IAC1G,OAAO,CAAC,MAAM,CAAgB;gBAG5B,SAAS,EAAE,MAAM,EACA,GAAG,EAAE,OAAO;IAC7B,uGAAuG;IACvG,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5B,wGAAwG;IAClG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBzE,OAAO,CAAC,OAAO;IAgBf,oGAAoG;IACpG,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"AAaA,OAAO,EAA6C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAUnF;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,0GAA0G;IAC1G,OAAO,CAAC,MAAM,CAAgB;gBAG5B,SAAS,EAAE,MAAM,EACA,GAAG,EAAE,OAAO;IAC7B,uGAAuG;IACvG,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5B,wGAAwG;IAClG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBzE,OAAO,CAAC,OAAO;IAgBf,oGAAoG;IACpG,OAAO,CAAC,OAAO;IAkFf,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,QAAQ;CAuBjB"}
|
package/dist/esm/Transport.js
CHANGED
|
@@ -66,10 +66,11 @@ export class Transport {
|
|
|
66
66
|
connect(url) {
|
|
67
67
|
const host = url.hostname;
|
|
68
68
|
const port = url.port.length > 0 ? Number(url.port) : url.protocol === "https:" ? 443 : 80;
|
|
69
|
-
//
|
|
70
|
-
// the
|
|
71
|
-
//
|
|
72
|
-
const
|
|
69
|
+
// SystemTrust does full CA + hostname verification; the pinned modes waive that and verify by public-key
|
|
70
|
+
// pin instead (the cert is reached by IP or a self-signed domain no CA would match); Insecure does neither
|
|
71
|
+
// and accepts any certificate. Only the pinned modes run the pin check in onSecure below.
|
|
72
|
+
const verifying = this.tls.kind === "systemTrust";
|
|
73
|
+
const pinning = this.tls.kind === "pinned" || this.tls.kind === "pinnedTo";
|
|
73
74
|
const socket = url.protocol === "http:"
|
|
74
75
|
? netConnect({ host, port })
|
|
75
76
|
: tlsConnect({
|
|
@@ -77,7 +78,7 @@ export class Transport {
|
|
|
77
78
|
port,
|
|
78
79
|
// SNI carries a hostname; an IP literal is not a legal server name.
|
|
79
80
|
...(isIP(host) === 0 ? { servername: host } : {}),
|
|
80
|
-
rejectUnauthorized:
|
|
81
|
+
rejectUnauthorized: verifying,
|
|
81
82
|
});
|
|
82
83
|
return new Promise((resolve, reject) => {
|
|
83
84
|
const finish = (settle) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../src/Transport.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Burrow, DEFAULT_CLIENT_TAG, SDK_VERSION } from "./Burrow.js";
|
|
2
|
-
export type { BurrowFactory, BurrowOptions, ConnectOptions } from "./Burrow.js";
|
|
2
|
+
export type { BurrowFactory, BurrowOptions, ConnectOptions, OidcConnectOptions } from "./Burrow.js";
|
|
3
3
|
export type { BurrowClient } from "./BurrowClient.js";
|
|
4
4
|
export { ProjectAccess, Secret, SecretCoordinate } from "./Model.js";
|
|
5
5
|
export type { SecretField } from "./Model.js";
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpG,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@ratelkey/burrow-sdk","version":"0.1
|
|
1
|
+
{"name":"@ratelkey/burrow-sdk","version":"0.2.1","description":"Read secrets from a self-hosted RatelKey Burrow with a machine identity.","type":"module","engines":{"node":">=18.17"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/esm/index.d.ts","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./package.json":"./package.json"},"files":["dist","README.md"],"scripts":{"build":"node scripts/build.mjs","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.7.0"},"keywords":["ratelkey","burrow","secrets","sdk"]}
|