Files
homelab-infra/infrastructure/shared-postgresql/terraform/identity.tf
T
panxiao81 3a2fe5fa0c
yaml / yaml (pull_request) Successful in 41s
ansible / collection-test (pull_request) Successful in 2m41s
terraform / validate (pull_request) Successful in 2m41s
ansible / lint (pull_request) Successful in 4m36s
feat: 纳管共享 etcd 与 k3s 外 PostgreSQL 高可用及备份
2026-09-25 19:34:48 +00:00

36 lines
1.7 KiB
Terraform

# 复用现有 JWT-SVID 验证挂载,独立身份仅授权此服务所需路径。
resource "vault_policy" "postgresql" {
name = "homelab-postgresql-provisioner"
policy = <<-EOT
path "pki/sign/homelab-pg-prod" { capabilities = ["update"] }
path "pki/sign/homelab-pg-dev" { capabilities = ["update"] }
path "pki/sign/homelab-etcd-client" { capabilities = ["update"] }
path "kv/data/infra/postgresql/prod" { capabilities = ["create", "read", "update"] }
path "kv/data/infra/postgresql/dev" { capabilities = ["create", "read", "update"] }
path "kv/metadata/infra/postgresql/prod" { capabilities = ["read"] }
path "kv/metadata/infra/postgresql/dev" { capabilities = ["read"] }
path "kv/data/infra/etcd/consumers/patroni-pg-prod" { capabilities = ["read"] }
path "kv/data/infra/postgresql/ayatori/prod" { capabilities = ["create", "read", "update"] }
path "kv/data/infra/postgresql/ayatori/dev" { capabilities = ["create", "read", "update"] }
path "kv/metadata/infra/postgresql/ayatori/prod" { capabilities = ["read"] }
path "kv/metadata/infra/postgresql/ayatori/dev" { capabilities = ["read"] }
path "auth/token/lookup-self" { capabilities = ["read"] }
path "auth/token/revoke-self" { capabilities = ["update"] }
EOT
}
resource "vault_jwt_auth_backend_role" "postgresql" {
backend = "jwt-spire"
role_name = "homelab-postgresql"
role_type = "jwt"
user_claim = "sub"
bound_audiences = ["openbao"]
bound_claims = {
sub = "spiffe://ddupan.top/dev/panxiao81"
}
token_policies = [vault_policy.postgresql.name]
token_no_default_policy = true
token_ttl = 900
token_max_ttl = 900
}