使用谷歌云中的服务帐户使用terraform管理核心基础设施

使用谷歌云中的服务帐户使用terraform管理核心基础设施,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我正在使用Terraform v0.13.5.1,希望管理核心基础设施,如创建文件夹、文件夹上的IAM角色、组织策略、创建项目、创建服务帐户等 问题: 我们无法在组织级别或文件夹级别创建服务帐户,因此如何使用服务帐户管理此infra 谢谢正如您所说,在组织级别创建服务帐户是不可能的。所以解决方案是,第一次创建一个项目,并在该项目下创建一个服务帐户,从那时起Terraform就可以使用该帐户 您可以通过GCP控制台或gcloud命令行执行上述操作。或者,您甚至可以使用Terraform进行初始运行

我正在使用Terraform v0.13.5.1,希望管理核心基础设施,如创建文件夹、文件夹上的IAM角色、组织策略、创建项目、创建服务帐户等

问题: 我们无法在组织级别或文件夹级别创建服务帐户,因此如何使用服务帐户管理此infra


谢谢

正如您所说,在组织级别创建服务帐户是不可能的。所以解决方案是,第一次创建一个项目,并在该项目下创建一个服务帐户,从那时起Terraform就可以使用该帐户

您可以通过GCP控制台或gcloud命令行执行上述操作。或者,您甚至可以使用Terraform进行初始运行,并以普通用户身份而不是服务帐户身份进行身份验证(即,如果您有创建项目、服务帐户和设置组织/文件夹级别策略等权限,请使用您的用户运行Terraform)

即使服务帐户只是项目的一部分,也可以为其指定组织或文件夹级别的角色。为了拥有创建文件夹、组织策略、创建服务帐户等的权限,您可以通过引用向该服务帐户授予所需的权限

比如说

  • 用于创建文件夹和管理IAM策略-
    角色/resourcemanager.folderAdmin
  • 对于组织策略-
    角色/orgpolicy.policyAdmin
  • 用于创建项目-
    角色/resourcemanager.projectCreator

服务帐户是为项目创建并由项目拥有的。您可以在任何项目中创建服务帐户,然后在任何项目/文件夹/组织(包括您不拥有或管理的项目/文件夹/组织)中使用该服务帐户。例如,如果我知道电子邮件地址,我可以将您的服务帐户添加到我的项目中

创建服务帐户后,您可以在组织和文件夹级别将该服务帐户添加到IAM,并分配适当的角色,如文件夹管理员、组织管理员、项目创建者等。尽量使用最低权限,因为这些权限是在子级继承的:(组织->文件夹->项目)或(文件夹->项目))

创建服务帐户并分配正确的角色后,您可以配置Terraform以使用该服务帐户,或者设置环境变量
GOOGLE_APPLICATION_CREDENTIALS
指向服务帐户JSON文件,或者在*.tf文件中指定GOOGLE provider
CREDENTIALS