当前位置: 首页 > 知识库问答 >
问题:

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

公良信然
2023-03-14

我想授予服务帐户访问Google Secrets Manager中的秘密的权限。

我可以像这样获得这个秘密:

gcloud beta secrets versions access 1 --secret="thesecret" --project="myproject"

但是当我的服务号尝试相同的命令时,gCloud会发出以下错误:

错误:(gcloud.beta.secrets.versions.access)权限被拒绝:请求的身份验证范围不足。

主要问题是:我还需要做些什么来确保服务帐户可以访问该机密?

我已授予该服务帐户“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

但文件中有这样一个概念:

如果成员只需要访问单个机密的值,则不要授予该成员访问所有机密的能力。例如,可以在单个机密上授予服务号秘密访问器角色(角色/secretmanager.secret访问器)。

所以,这就像iam策略绑定可以与特定的机密关联一样,但我不确定我可以使用哪些gcloud命令或terraform资源来创建这种关联。

共有1个答案

于恺
2023-03-14

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

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.secretAccessor
 类似资料:
  • 我们正在尝试创建一个与谷歌管理SDK的集成,以便能够检索,更新和创建帐户在我们的领域。但是,我们不断收到一个403错误,表明我们没有被授权访问Resource/API。 我们正在使用从一个服务帐户获得的凭据,该帐户启用了域范围的授权,并且具有以下两个作用域:https://www.googleapis.com/auth/admin.directory.user.readonly,https://w

  • 我在谷歌云平台上创建了一个项目,并为我的gmail帐户创建了一个OAuth服务帐户id。使用此服务帐户id,我无法阅读电子邮件,因为它说我无法访问此范围Gmail只读。 我通过谷歌搜索发现,我需要从Gsuite admin获得范围访问权限,但如果提供了访问权限,它表示可以使用该权限检索所有组织用户的电子邮件。这个信息正确吗?如果是的话,有没有其他方法可以访问我账户的电子邮件? 下面是我用来访问电子

  • 为了更清楚地说明,我明白最终必须有人被信任。例如,ops工程师可以拥有自己的凭据来访问Vault,并获得相同数据库的密码。这将允许用户访问,但不允许该用户模拟服务。是否有任何理由ops工程师也应该知道服务自己的凭据,以便在初始化后访问保险库?

  • 我正在尝试通过我的android应用程序访问特定帐户的google drive。此外,我还可以使用google选项登录,这样用户就可以通过google登录应用程序,这将是play services使用的google帐户。 但是,我想在特定的google drive帐户上存储一些文件,比如说

  • 我正在调查AWS/Google云基础架构系统是否可以混合,我的要求之一是从一个系统到另一个系统的安全和简单的身份验证。目前,我需要从一个Google Cloud VM实例连接到一个受限的AWS S3 bucket。 我的问题通常是:有没有办法做到这一点,什么是最好的方法。我相信每个人都希望有机会使用多个云提供商为他们的基础设施提供高安全性、易用性和维护性。 经过一些研究,我发现唯一可能的方法是通过

  • 我有一个Terraform用来管理我的云资源的服务帐户,我们称之为。我需要给予它足够的访问权限来创建/删除/编辑其他服务帐户,但不能更改它自己或项目中不应该接触的其他SAs。 我试着在那里添加一个条件,但看起来‘服务帐户’不是可以在条件(?)中使用的资源类型之一。下面是绑定该角色的HCL片段(我使用Terraform的事实与此无关): 当我删除该条件时,一切正常,但的权限远远超过它所需的权限。它甚