最初为实例设置错误的范围后,恢复访问权限

时间:2018-11-07 06:05:48

标签: google-cloud-storage google-compute-engine permission-denied service-accounts

我最近创建了一个VM,但是错误地赋予了默认服务帐户Storage: Read Only权限,而不是“身份和API访问”下的预期Read Write权限,因此来自VM的GCS写入操作现在失败了。

enter image description here enter image description here

我意识到自己的错误,因此按照this answer中的建议,我停止了VM,将范围更改为Read Write,然后启动了VM。但是,当我进行SSH登录时,尝试创建存储桶时仍然出现403错误。

$ gsutil mb gs://some-random-bucket
Creating gs://some-random-bucket/...
AccessDeniedException: 403 Insufficient OAuth2 scope to perform this operation.
Acceptable scopes: https://www.googleapis.com/auth/cloud-platform

如何解决此问题?。我使用的是默认服务帐户,并且没有IAM权限才能创建新帐户。

$ gcloud auth list
Credentialed Accounts
ACTIVE  ACCOUNT
*       (projectnum)-compute@developer.gserviceaccount.com

3 个答案:

答案 0 :(得分:0)

尝试使用您的用户帐户创建Google Cloud Storage存储桶。

键入gcloud auth login并访问您提供的链接,在该链接中,复制代码并将其粘贴到命令行中。

然后gsutil mb gs://bucket-name

答案 1 :(得分:0)

该安全模型具有两个作用,即API作用域和IAM权限。访问由它们的与决定。因此,您需要一个可接受的范围和足够的IAM权限才能执行任何操作。

这意味着您可以拥有2个具有默认服务帐户的VM,但是两者的访问级别不同。

为简单起见,通常只需要设置IAM权限并使用云平台API身份验证范围。

要检查是否有此设置,请转到云控制台中的VM,您会看到类似以下内容的

  

Cloud API访问范围

     

允许完全访问所有Cloud API

默认情况下,当您通过SSH进入虚拟机时,gcloud将作为虚拟机上的服务帐户登录。我不建议您以自己的身份登录,否则您或多或少会破坏gcloud的配置以读取默认服务帐户。

完成此设置后,您应该可以正确使用gsutil。

答案 2 :(得分:0)

我建议您通过运行下面的gcloud命令尝试将范围“ cloud-platform”添加到实例中

  

gcloud alpha计算实例设置范围INSTANCE_NAME [--zone = ZONE]   [--scopes = [SCOPE,...] [--service-account = SERVICE_ACCOUNT

在作用域中放入“ https://www.googleapis.com/auth/cloud-platform”,因为它可以完全访问所有Google Cloud Platform资源。

这里是gcloud documentation