我想授予服务帐户访问 Google Secrets Manager 中的密钥的权限。
我可以像这样访问秘密:
gcloud beta secrets versions access 1 --secret="thesecret" --project="myproject"
但是当我的服务帐户尝试相同的命令时,gcloud 会发出此错误:
错误:(gcloud.beta.secrets.versions.access)PERMISSION_DENIED:请求的身份验证范围不足。
主要问题是:我还需要做什么来确保服务帐户可以访问机密?
我已在 Terraform 中授予该服务帐户“roles/secretmanager.secretAccessor”,如下所示:
resource google_project_iam_binding the-binding {
project = myproject
role = "roles/secretmanager.secretAccessor"
members = [
"serviceAccount:theserviceaccount@someotherproject.iam.gserviceaccount.com",
]
}
我可以验证它在 gcp 控制台中是否具有该角色,如下所示:
gcloud projects get-iam-policy myproject \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:theserviceaccount@someotherproject.iam.gserviceaccount.com"
ROLE
roles/secretmanager.secretAccessor
但是文档中有这个概念:
如果成员只需要访问单个密钥的值,请不要授予该成员访问所有密钥的能力。例如,您可以在单个密钥上授予服务帐户 Secret Accessor 角色 (roles/secretmanager.secretAccessor)。
因此,就像 iam-policy-binding 可以对特定秘密具有亲和力,但我不确定我可以使用哪些 gcloud 命令或 terraform 资源来创建这种亲和力。