我正在使用以下python方法创建gcp实例:
compute.instances().insert(project=project, zone=zonee, body=config).execute()
在配置变量中,我添加了serviceAccount部分:
"serviceAccounts": [
{
"email": SA-email,
"scopes": [
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring.write",
"https://www.googleapis.com/auth/service.management.readonly",
"https://www.googleapis.com/auth/servicecontrol"
"https://www.googleapis.com/auth/trace.append",
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/cloud-platform"
]
}
]
我不确定该给该SA电子邮件分配什么角色。如果我要提到访问范围,是否意味着这些角色必须分配给SA-email?
当我运行以上代码时。实例创建失败。
我对SA,角色和范围感到非常困惑。
我应该检查哪些属性以解决上述问题。
答案 0 :(得分:1)
服务帐户是属于您的应用程序或虚拟机而不是单个最终用户的特殊Google帐户。服务帐户的作用类似于与应用程序关联的身份,应用程序使用服务帐户在应用程序和GCP服务之间进行身份验证,这样用户就不会直接参与1。
服务帐户非常独特,因为该服务帐户不仅是身份,而且还是附加了IAM策略的资源,这些策略确定谁可以使用此服务帐户,因此它既是身份又是身份资源。
例如,如果您授予Bob带有服务帐户用户角色的计算实例管理员角色,则他可以创建和管理使用服务帐户的计算引擎实例。将IAM角色授予该服务帐户后,您便可以将该服务帐户分配给一个或多个新的虚拟机实例,现在Bob将具有对该实例的管理员访问权限。概括地说,必须授予用户帐户服务帐户用户角色,并且必须授予服务帐户角色以访问GCP资源。
服务帐户访问权限是为您的实例指定权限的旧方法,用于替换IAM角色。它们专门用于基于启用的API的默认帐户或自动创建的服务帐户。在存在IAM角色之前,访问范围是向服务帐户授予权限的唯一方法,尽管它们现在不是授予权限的主要方法,但在将实例配置为作为服务运行时,仍必须设置服务帐户访问范围帐户。但是,当您使用自定义服务帐户时,将不会使用访问范围,而是会使用IAM角色。因此,当您为计算实例使用默认服务帐户时,它将默认使用范围而不是IAM角色。
对于您的config变量,您可以从完整列表中选择访问范围,也可以创建自定义服务帐户并分配IAM角色。