Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
d945ba3
feat(varlock): proxy request signing via transform= on @proxy rules
theoephraim Aug 14, 2026
c8750f1
refactor(varlock): per-scheme option specs for proxy transform valida…
theoephraim Aug 14, 2026
d035397
feat(varlock): aws-sigv4 proxy transform scheme
theoephraim Aug 14, 2026
a617e8c
refactor(varlock): plugin-registered transform schemes; move aws-sigv…
theoephraim Aug 26, 2026
d6a7b3f
docs: sigv4 scheme covers S3-compatible services; categorize proxy pl…
theoephraim Aug 28, 2026
968258b
feat(varlock): built-in http-basic transform scheme
theoephraim Aug 28, 2026
1b68f60
feat(varlock): http-basic username/password surface + item-name guard…
theoephraim Aug 28, 2026
1ff66ba
feat(varlock): transform item options use $ITEM references, captured …
theoephraim Aug 28, 2026
bea9ff6
feat(varlock): http-basic literal password with secretIn=username
theoephraim Aug 28, 2026
0e2d0c8
docs: clarify username ref vs secretIn=username for http-basic
theoephraim Aug 28, 2026
a8b4d33
docs: sync reference pages to the current transform surface; pin exam…
theoephraim Aug 28, 2026
e4b27a1
refactor(varlock): drop secretIn; http-basic username/password are sy…
theoephraim Aug 30, 2026
e4625ac
test: cover getTransformRoleKeys across scheme shapes
theoephraim Aug 30, 2026
a6193c2
fix(varlock): address open PR review findings on the transform surface
theoephraim Aug 30, 2026
1cdbfb1
fix(varlock): block interpolating a sensitive value into a transform …
theoephraim Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .bumpy/aws-sigv4-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@varlock/aws-sigv4-plugin": minor
---

Initial release: adds the aws-sigv4 request-signing scheme to the credential proxy. The agent's AWS SDK signs with placeholder credentials; the proxy re-signs with the real keys, deriving region/service from the request, with optional region/service allowlists.
5 changes: 5 additions & 0 deletions .bumpy/proxy-request-signing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
varlock: minor
---

Credential proxy: request signing via transform= on @proxy rules. Generic HMAC (hmac-sha256/hmac-sha512) signs the final outbound request with a signing secret the agent never holds, and http-basic writes Basic auth headers the proxy composes from the real secret (base64 encoding otherwise hides placeholders from substitution). Transform options reference credential items with $ITEM syntax; the references are captured without resolving, so secret values never enter rule data. Plugins can register additional signing schemes (option specs drive validation and placeholder management; the signer runs in the proxy per matching request).
81 changes: 79 additions & 2 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
},
"catalog": {
"@sindresorhus/is": "^7.2.0",
"@smithy/protocol-http": "^5.6.0",
"@smithy/signature-v4": "^5.7.0",
"@types/bun": "^1.3.11",
"@types/node": "25.3.2",
"ansis": "^4.2.0",
Expand Down
22 changes: 22 additions & 0 deletions packages/plugins/aws-sigv4/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# @varlock/aws-sigv4-plugin

Adds an `aws-sigv4` request-signing scheme to the [varlock credential proxy](https://varlock.dev/guides/proxy/).

The agent's AWS SDK signs requests normally, using the placeholder credentials varlock injects into its environment. The proxy parses the region and service out of the inbound credential scope, strips the placeholder signature, and re-signs the request with the real keys at the network boundary. The secret access key never enters the agent's environment, and the agent cannot produce a valid signature itself.

```env-spec
# @plugin(@varlock/aws-sigv4-plugin)
# ---
# @proxy(domain="*.amazonaws.com", transform={
# scheme="aws-sigv4", keyId=$AWS_ACCESS_KEY_ID,
# allowedServices=[bedrock, s3],
# })
AWS_SECRET_ACCESS_KEY=somePlugin()

# @sensitive
AWS_ACCESS_KEY_ID=somePlugin()
```

Not just AWS: the same scheme brokers credentials for any SigV4-authenticated service, including S3-compatible stores (Cloudflare R2, MinIO, Backblaze B2, DigitalOcean Spaces) and DynamoDB-compatible endpoints. Point the rule's `domain` at the service's endpoint.

See the [plugin docs](https://varlock.dev/plugins/aws-sigv4/) for all options and limitations.
57 changes: 57 additions & 0 deletions packages/plugins/aws-sigv4/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"name": "@varlock/aws-sigv4-plugin",
"description": "Varlock plugin adding AWS SigV4 request re-signing to the credential proxy (the agent signs with placeholder credentials; the proxy re-signs with the real keys)",
"version": "0.0.0",
"type": "module",
"homepage": "https://varlock.dev/plugins/aws-sigv4/",
"bugs": "https://github.com/dmno-dev/varlock/issues",
"repository": {
"type": "git",
"url": "https://github.com/dmno-dev/varlock.git",
"directory": "packages/plugins/aws-sigv4"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
"./plugin": "./dist/plugin.cjs"
},
"files": ["dist"],
"scripts": {
"dev": "tsup --watch",
"build": "tsup",
"test": "vitest",
"typecheck": "tsc --noEmit"
},
"keywords": [
"varlock",
"plugin",
"varlock-plugin",
"aws",
"sigv4",
"signature-v4",
"credential-proxy",
"request-signing",
"env",
".env",
"dotenv",
"environment variables",
"env vars",
"config"
],
"author": "dmno-dev",
"license": "MIT",
"engines": {
"node": ">=22"
},
"peerDependencies": {
"varlock": "workspace:^"
},
"devDependencies": {
"@smithy/protocol-http": "catalog:",
"@smithy/signature-v4": "catalog:",
"@types/node": "catalog:",
"tsup": "catalog:",
"varlock": "workspace:^",
"vitest": "catalog:"
}
}
Loading