Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform terraform GCE服务账户节_Google Cloud Platform_Google Compute Engine_Terraform - Fatal编程技术网

Google cloud platform terraform GCE服务账户节

Google cloud platform terraform GCE服务账户节,google-cloud-platform,google-compute-engine,terraform,Google Cloud Platform,Google Compute Engine,Terraform,我正在GCP上创建一个实例,在使用服务帐户节时遇到了一些问题。当我这样做时: 服务账户{ 电子邮件=“terraformdeploy”-dev@projectxxx.org.com.iam.gserviceaccount.com" 作用域=[] } 该实例不提供该服务帐户,但所有云API访问范围在UI中显示已禁用 如果我这样做: 服务账户{ 电子邮件=“terraformdeploy”-dev@projectxxx.org.com.iam.gserviceaccount.com" 范围=[“云

我正在GCP上创建一个实例,在使用服务帐户节时遇到了一些问题。当我这样做时:

服务账户{
电子邮件=“terraformdeploy”-dev@projectxxx.org.com.iam.gserviceaccount.com"
作用域=[]
}
该实例不提供该服务帐户,但所有
云API访问范围
在UI中显示
已禁用

如果我这样做:

服务账户{
电子邮件=“terraformdeploy”-dev@projectxxx.org.com.iam.gserviceaccount.com"
范围=[“云平台”]
}
实例提供了对所有API的完全访问权限,但奇怪的是,上面的服务帐户没有访问所有这些API的权限。我对如何使用服务帐户这一节感到困惑,因为文档不是很清楚


我可以只分配服务帐户,还是需要指定服务帐户及其作用域?

GCE提供了两种方法来限制实例可以提供的API访问,而您正在了解这两种方法。一个是GCE实例的作用域限制了从该机器到这些服务的任何API请求。例如,如果您的GCE实例不允许GCS写入操作,则无论与该实例关联的服务帐户如何,您都无法执行GCS写入操作

您可以使用SSH登录,使用项目所有者帐户进行身份验证,然后尝试写入GCS,但它将失败。这样做是为了允许额外的一层安全性,如果您知道“此实例组中的实例将只需要GCS读取和StackDriver API访问”,那么这将非常有用

现在,仅当客户端库或gcloud命令在“应用程序默认”位置查找凭据时,才会使用与实例关联的服务帐户。因此,如果您的应用程序包含一个服务帐户json密钥,并从中读取,那么关联的密钥并不重要

因此,您指定的服务帐户使所有应用程序默认使用该帐户凭据执行API请求


也请记住有

是的……我可以很好地做到这一点,但问题是……我似乎无法正确地使用Terraform……如果我只是将SA放入Terraform中……它似乎不会将其附加到GCE实例……但我可以通过控制台创建实例手动创建一个带有服务的实例account.email已定义,作用域保留为空“[]”,已成功创建实例,并按预期禁用了所有API(作用域为零)。使用服务帐户电子邮件和相关作用域创建实例时已启用所需的API。您的问题是,“我可以只分配服务帐户吗,还是需要指定服务帐户及其作用域?”您必须关联您希望该实例使用的作用域。如果不指定作用域,而不管附加的SA如何,该实例将阻止对google服务的所有API调用。