无法读取 Vault 机密 - 使用 Vault Sidecar Injector
Unable to read Vault secrets - using Vault Sidecar Injector
无法使用以下设置读取存储在路径 /secrets/apims/ABC_CONFIG 的 Vault 中的秘密
在 Vault 中创建的策略:
vault policy write policy_name - <<EOF
path "secret/apims/*" {
capabilities = ["read"]
}
在 Vault 中创建的角色
vault write auth/kubernetes/role/role_name\
bound_service_account_names=service_account_name \
bound_service_account_namespaces=default \
policies=policy_name \
ttl=24h
在外部保险库上使用 Kubernetes 保险库 sidecar 注入器。在 Kubernetes 上的部署看起来像
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "nginx-5"
namespace: "default"
labels:
app: "nginx-5"
spec:
replicas: 1
selector:
matchLabels:
app: "nginx-5"
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-credentials.conf: secret/ABC_CONFIG
vault.hashicorp.com/role: role_name
labels:
app: "nginx-5"
spec:
containers:
- name: "nginx-5"
image: "nginx:latest"
serviceAccountName: service_account_name
虽然 Kubernetes 已通过 Vault 成功授权,但读取特定密钥失败并显示 403。
感谢您的帮助。
看起来 Vault 角色中定义的服务帐户和角色名称与部署中的不匹配。
- 服务帐号=service_account_name
- 角色 = role_name
vault write auth/kubernetes/role/role_name\
bound_service_account_names=service_account_name \
bound_service_account_namespaces=default \
policies=policy_name \
ttl=24h
- 服务帐户 = sa-vault-auth
- 角色 = apims
spec:
replicas: 1
selector:
matchLabels:
app: "nginx-5"
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-credentials.conf: secret/ABC_CONFIG
vault.hashicorp.com/role: apims
labels:
app: "nginx-5"
spec:
containers:
- name: "nginx-5"
image: "nginx:latest"
serviceAccountName: sa-vault-auth
...
这还假设 policies=policy_name
是您最初在 Vault 中创建的策略的名称。
无法使用以下设置读取存储在路径 /secrets/apims/ABC_CONFIG 的 Vault 中的秘密
在 Vault 中创建的策略:
vault policy write policy_name - <<EOF
path "secret/apims/*" {
capabilities = ["read"]
}
在 Vault 中创建的角色
vault write auth/kubernetes/role/role_name\
bound_service_account_names=service_account_name \
bound_service_account_namespaces=default \
policies=policy_name \
ttl=24h
在外部保险库上使用 Kubernetes 保险库 sidecar 注入器。在 Kubernetes 上的部署看起来像
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "nginx-5"
namespace: "default"
labels:
app: "nginx-5"
spec:
replicas: 1
selector:
matchLabels:
app: "nginx-5"
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-credentials.conf: secret/ABC_CONFIG
vault.hashicorp.com/role: role_name
labels:
app: "nginx-5"
spec:
containers:
- name: "nginx-5"
image: "nginx:latest"
serviceAccountName: service_account_name
虽然 Kubernetes 已通过 Vault 成功授权,但读取特定密钥失败并显示 403。
感谢您的帮助。
看起来 Vault 角色中定义的服务帐户和角色名称与部署中的不匹配。
- 服务帐号=service_account_name
- 角色 = role_name
vault write auth/kubernetes/role/role_name\
bound_service_account_names=service_account_name \
bound_service_account_namespaces=default \
policies=policy_name \
ttl=24h
- 服务帐户 = sa-vault-auth
- 角色 = apims
spec:
replicas: 1
selector:
matchLabels:
app: "nginx-5"
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-credentials.conf: secret/ABC_CONFIG
vault.hashicorp.com/role: apims
labels:
app: "nginx-5"
spec:
containers:
- name: "nginx-5"
image: "nginx:latest"
serviceAccountName: sa-vault-auth
...
这还假设 policies=policy_name
是您最初在 Vault 中创建的策略的名称。