我想授予一个服务帐户访问一个秘密在谷歌秘密经理。
I可以访问这样的秘密:
gcloud beta secrets versions access 1 --secret="thesecret" --project="myproject"但是,当我的服务帐户尝试使用相同的命令时,gcloud会发出以下错误:
错误:(gcloud.beta.secrets.versions.access) PERMISSION_DENIED: Request没有足够的身份验证范围。
主要问题是:,我还需要做什么来确保服务帐户能够访问这个秘密?
我已经批准了Terraform中的服务帐户“角色/秘书管理员.”,如下所示:
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但是有一个来自文档的概念
如果成员只需要访问单个秘密的值,则不要授予该成员访问所有机密的能力。例如,您可以在单个秘密上授予服务帐户秘密访问器角色(角色/秘管理器。
因此,这就像iam-策略绑定可以与特定的秘密有亲缘关系,但我不确定我可以使用哪些gcloud命令或terraform资源来创建这样的关联。
发布于 2020-05-18 21:00:00
第一个问题是,我弄错了我的环境配置要使用的服务帐户。因此,我已经授予了对服务帐户的访问权限,但毕竟我并没有使用它(显然,在我的情况下,它们的初始化并不一致)。通过在尝试访问秘密之前运行这个命令,我修正了这个问题:
gcloud config set account theserviceaccount@someotherproject.iam.gserviceaccount.com另外,我没有意识到有不止一个toplevel gcloud命令可以让您修改iam策略绑定。我一直在探索gcloud iam ...,而我需要的是:
gcloud beta secrets add-iam-policy-binding projects/myproject/secrets/mysecret --member serviceAccount:theserviceaccount@someotherproject.iam.gserviceaccount.com --role roles/secretmanager.secretAccessorhttps://stackoverflow.com/questions/61875761
复制相似问题