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

如何允许GCP标识修改特定服务帐户

笪涛
2023-03-14

我有一个Terraform用来管理我的云资源的服务帐户,我们称之为resource-manager-sa。我需要给予它足够的访问权限来创建/删除/编辑其他服务帐户,但不能更改它自己或项目中不应该接触的其他SAs。

我试着在那里添加一个条件,但看起来‘服务帐户’不是可以在条件(?)中使用的资源类型之一。下面是绑定该角色的HCL片段(我使用Terraform的事实与此无关):

resource "google_project_iam_member" "service-account" {
  project = var.project
  role    = "roles/iam.serviceAccountAdmin"
  member  = "serviceAccount:${google_service_account.resource-manager-sa.email}"

  condition {
    title      = "Can manage Blah Blah SA"
    expression = "resource.name.extract('/serviceAccounts/{name}').startsWith('blah-blah@')"
  }
}

当我删除该条件时,一切正常,但resource-manager-sa的权限远远超过它所需的权限。它甚至可以修改自己来提升自己的权限。在我添加boom条件后,它无法访问任何服务帐户:

错误:读取或编辑服务帐户“projects/***/ServiceAccounts/blah-blah@**.iam.gServiceAccount.com”时出错:GoogleAPI:错误403:对服务帐户projects/***/ServiceAccounts/blah-blah@**.iam.gServiceAccounts.get执行此操作需要权限iam.serviceAccounts.get,禁止

我觉得我在这里做了一些根本错误的事情,但我找不到一个很好的示例配置来实现我在这里试图实现的目标。


共有1个答案

宗安翔
2023-03-14

服务帐户也是一种资源。因此,您可以在服务帐户级别而不是项目级别为标识分配IAM权限。这意味着您可以创建一个没有权限/角色的服务帐户,并将该服务帐户权限授予另一个服务帐户。

使用Terraform查看google_service_account_iam_member资源。这将为您提供您所要求的粒度,并且不允许权限提升。

 类似资料:
  • 我开发了以下代码,用于自动执行我的一些实例的启动/停止任务,这些实例不需要一直运行,而是在特定范围内运行。 这是我的代码:https://github.com/maartinpii/gcp-shst 我按照谷歌云平台指南(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.

  • 问题内容: MySQL 5.0.45 更改表以允许列为空的语法是什么,或者这是怎么回事: 我将手册解释为仅运行上述内容,它将重新创建该列,这次允许为空。服务器告诉我我有语法错误。我只是看不到他们。 问题答案: 您需要以下内容: 列默认为空。只要未声明或列,就不会有任何问题。

  • 我有多种服务。他们都使用jwt进行授权。但是,当我的服务相互通信时,我不希望它们进行身份验证。当客户端向serviceA发送请求,serviceA需要serviceB提供数据时,serviceA验证令牌就足够了(当客户端向serviceB发送请求时也是如此)。我使用eureka作为注册表,使用openfeign在服务之间进行通信。现在我总是收到这样的401回复: 更具体地说,我的authservi

  • 出于好奇,我正在尝试设置Eclipse,以允许它编译和运行一个带有标准库类的应用程序。 我有两个Java项目,一个包含字符串补丁类(使用一个新方法,与长度相同),另一个应该使用所述方法。设置如下: 主要的java: 编译了补丁后(从而在补丁/bin/java/lang/code>中获得了String.class),我知道我可以很容易地使用: 要正确调用新添加的方法size(),将获得5的结果。 问

  • 我正在使用GKE和Terraform配置一个高可用的kubernetes集群。多个团队将在集群上运行多个部署,我预计大多数部署将在一个自定义命名空间中,主要是出于隔离的原因。 我们的一个开放问题是如何管理集群上的GCP服务帐户。 我可以使用自定义GCP服务帐户创建集群,并调整权限,以便它可以从GCR中提取映像,日志到stackdriver等。我认为这个自定义服务帐户将被GKE节点使用,而不是默认的

  • 问题内容: 如何使用T-SQL更改表中的一个属性以允许为null(不为null-> null)?也许更改表? 问题答案: