【问题标题】:is there any way to add a service account automatically whenever a project is created?有什么方法可以在创建项目时自动添加服务帐户?
【发布时间】:2021-01-26 17:03:23
【问题描述】:

我在 GCP 中的一个组织下有多个项目。我有一个服务帐户,在一个项目上设置了特定范围(用于自动化)。我想将相同的服务帐户作为成员添加到所有其他项目,我手动完成直到现在。

有什么方法可以自动执行此操作,例如每当创建项目时,都应将服务帐户及其范围添加为其成员?

【问题讨论】:

    标签: google-cloud-platform automation google-iam terraform-provider-gcp


    【解决方案1】:

    如果您使用 Terraform 创建项目,想法将保持不变。就像在 GCP 中创建项目一样,它背后有一个等效的 gcloud 命令和一个 REST API。 gcloud 命令具体为gcloud projects add-iam-policy-binding

    gcloud projects add-iam-policy-binding example-project-id-1 \
    --member='serviceAccount:test123@example.domain.com' \
    --role='roles/editor'
    

    Here's 可以使用的 Terraform 示例:

    resource "google_project_iam_binding" "project" {
      project = "your-project-id"
      role    = "roles/editor"
    
      members = [
        "serviceAccount:test123@example.domain.com",
      ]
    }
    
    1. 创建一个main.tf 文件或任何您想调用 Terraform 配置文件。
    2. test123@example.domain.com 替换为您的服务帐户, roles/editor 和你想给它的角色和 your-project-id 与您的项目 ID。
    3. 使用ADC 即或您喜欢并运行的任何其他方式进行身份验证 terraform apply Terraform 配置文件在同一目录中 在。

    我认为您甚至可以为此使用 Ansible。或者,如果您真的想创建一个 Bash 脚本。

    【讨论】:

      【解决方案2】:

      这是资源层次结构的目的。创建服务帐号(在项目中,服务帐号只能存在于项目中),然后在组织或文件夹级别授予;有你想要的权限

      但请注意,所有子资源的权限都是相同的,并且您无法拒绝这些权限(至少目前是这样!)。见IAM Policy Inheritance

      【讨论】:

        猜你喜欢
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多