This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# Workload authentication via SPIFFE JWT-SVIDs. The discovery document and
|
||||
# JWKS contain public verification material, so this backend carries no secret.
|
||||
resource "vault_jwt_auth_backend" "spire" {
|
||||
path = "jwt-spire"
|
||||
description = "SPIFFE JWT-SVID workload authentication"
|
||||
oidc_discovery_url = "https://spire-oidc.ad.ddupan.top"
|
||||
bound_issuer = "https://spire-oidc.ad.ddupan.top"
|
||||
}
|
||||
|
||||
# First end-to-end identity. Keep the subject exact: this role is deliberately
|
||||
# not a wildcard escape hatch for every workload in the trust domain.
|
||||
resource "vault_jwt_auth_backend_role" "spire_poc" {
|
||||
backend = vault_jwt_auth_backend.spire.path
|
||||
role_name = "spire-poc"
|
||||
role_type = "jwt"
|
||||
|
||||
user_claim = "sub"
|
||||
bound_audiences = ["openbao"]
|
||||
bound_claims = {
|
||||
sub = "spiffe://ddupan.top/ns/spire-poc/sa/spire-jwt-poc"
|
||||
}
|
||||
|
||||
token_policies = [vault_policy.spire_poc.name]
|
||||
token_no_default_policy = true
|
||||
token_ttl = 300
|
||||
token_max_ttl = 900
|
||||
}
|
||||
@@ -14,6 +14,11 @@ resource "vault_policy" "ai_agent_ssh" {
|
||||
policy = file("${path.module}/policies/ai-agent-ssh.hcl")
|
||||
}
|
||||
|
||||
resource "vault_policy" "spire_poc" {
|
||||
name = "spire-poc"
|
||||
policy = file("${path.module}/policies/spire-poc.hcl")
|
||||
}
|
||||
|
||||
resource "vault_policy" "snapshot" {
|
||||
name = "snapshot"
|
||||
policy = file("${path.module}/policies/snapshot.hcl")
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Intentionally grants no secret access. This policy proves that an exact
|
||||
# SPIFFE ID can exchange a JWT-SVID for a bounded OpenBao token and inspect or
|
||||
# revoke only that token.
|
||||
path "auth/token/lookup-self" {
|
||||
capabilities = ["read"]
|
||||
}
|
||||
|
||||
path "auth/token/revoke-self" {
|
||||
capabilities = ["update"]
|
||||
}
|
||||
Reference in New Issue
Block a user