首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让服务帐户访问特定的秘密?

如何让服务帐户访问特定的秘密?
EN

Stack Overflow用户
提问于 2020-05-18 17:45:58
回答 1查看 2.8K关注 0票数 8

我想授予一个服务帐户访问一个秘密在谷歌秘密经理。

I可以访问这样的秘密:

代码语言:javascript
复制
gcloud beta secrets versions access 1 --secret="thesecret" --project="myproject"

但是,当我的服务帐户尝试使用相同的命令时,gcloud会发出以下错误:

错误:(gcloud.beta.secrets.versions.access) PERMISSION_DENIED: Request没有足够的身份验证范围。

主要问题是:,我还需要做什么来确保服务帐户能够访问这个秘密?

我已经批准了Terraform中的服务帐户“角色/秘书管理员.”,如下所示:

代码语言:javascript
复制
resource google_project_iam_binding the-binding {
  project = myproject
  role = "roles/secretmanager.secretAccessor"
  members = [
    "serviceAccount:theserviceaccount@someotherproject.iam.gserviceaccount.com",
  ]
}

我可以验证它在gcp控制台中都有这个角色,如下所示:

代码语言:javascript
复制
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资源来创建这样的关联。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 21:00:00

第一个问题是,我弄错了我的环境配置要使用的服务帐户。因此,我已经授予了对服务帐户的访问权限,但毕竟我并没有使用它(显然,在我的情况下,它们的初始化并不一致)。通过在尝试访问秘密之前运行这个命令,我修正了这个问题:

代码语言:javascript
复制
gcloud config set account theserviceaccount@someotherproject.iam.gserviceaccount.com

另外,我没有意识到有不止一个toplevel gcloud命令可以让您修改iam策略绑定。我一直在探索gcloud iam ...,而我需要的是:

代码语言:javascript
复制
gcloud beta secrets add-iam-policy-binding projects/myproject/secrets/mysecret --member serviceAccount:theserviceaccount@someotherproject.iam.gserviceaccount.com --role roles/secretmanager.secretAccessor
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61875761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档