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 在不停止虚拟机的情况下修改gcloud虚拟机服务帐户权限_Google Cloud Platform_Virtual Machine_Gcloud - Fatal编程技术网

Google cloud platform 在不停止虚拟机的情况下修改gcloud虚拟机服务帐户权限

Google cloud platform 在不停止虚拟机的情况下修改gcloud虚拟机服务帐户权限,google-cloud-platform,virtual-machine,gcloud,Google Cloud Platform,Virtual Machine,Gcloud,我正试图将一个文件从谷歌云虚拟机上传到云存储桶中 预期会失败,因为与VM关联的服务帐户没有权限: $ gsutil cp file.png gs://bucket/ Copying file://file.png [Content-Type=image/png]... AccessDeniedException: 403 Insufficient Permission 据我所知,有两种方法可以解决这个问题: 从VM web管理面板修改作用域 更改bucket的权限并添加具有写访问权限的服务帐

我正试图将一个文件从谷歌云虚拟机上传到云存储桶中

预期会失败,因为与VM关联的服务帐户没有权限:

$ gsutil cp file.png gs://bucket/
Copying file://file.png [Content-Type=image/png]...
AccessDeniedException: 403 Insufficient Permission
据我所知,有两种方法可以解决这个问题:

  • 从VM web管理面板修改作用域
  • 更改bucket的权限并添加具有写访问权限的服务帐户(我更喜欢这样做,因为另一个选项似乎允许访问同一项目中的所有bucket)
但是,这两种解决方案似乎都要求停止VM,这是有问题的,因为它是生产服务器


有没有办法在不停止VM的情况下修复此问题?

有两种方法可以控制授予计算引擎VM的权限

  • 访问范围
  • 分配给实例的服务帐户
  • 这两种方法一起工作。计算引擎实例的可用总权限由服务帐户控制。访问范围然后限制分配给虚拟机的权限

    必须关闭VM才能更改访问范围。更改服务帐户角色不需要重新启动VM

    有关云存储访问的此问题:

    如果服务帐户具有授予云存储访问权限的云存储角色,但存储的访问范围设置为“无”,则即使服务帐户具有所需的角色,VM也将无法访问云存储。在这种情况下,您必须关闭VM以更改访问范围以启用对云存储的访问

    如果VM访问范围已启用存储,但服务帐户没有云存储角色,则VM将无法访问云存储。在这种情况下,向服务帐户添加云存储角色将授予对云存储的访问权限,而无需重新启动VM

    访问范围(OAuth范围)是Google Cloud IAM之前存在的一种遗留机制。鉴于您正在生产环境中使用此VM,并且不希望关闭该实例,我建议您执行以下操作:

    • 将VM访问范围设置为“允许完全访问所有云API”
    • 创建具有所需角色的新服务帐户,并将该服务帐户分配给计算引擎VM实例

    • 有两种方法可以控制授予计算引擎VM的权限

    • 访问范围
    • 分配给实例的服务帐户
    • 这两种方法一起工作。计算引擎实例的可用总权限由服务帐户控制。访问范围然后限制分配给虚拟机的权限

      必须关闭VM才能更改访问范围。更改服务帐户角色不需要重新启动VM

      有关云存储访问的此问题:

      如果服务帐户具有授予云存储访问权限的云存储角色,但存储的访问范围设置为“无”,则即使服务帐户具有所需的角色,VM也将无法访问云存储。在这种情况下,您必须关闭VM以更改访问范围以启用对云存储的访问

      如果VM访问范围已启用存储,但服务帐户没有云存储角色,则VM将无法访问云存储。在这种情况下,向服务帐户添加云存储角色将授予对云存储的访问权限,而无需重新启动VM

      访问范围(OAuth范围)是Google Cloud IAM之前存在的一种遗留机制。鉴于您正在生产环境中使用此VM,并且不希望关闭该实例,我建议您执行以下操作:

      • 将VM访问范围设置为“允许完全访问所有云API”
      • 创建具有所需角色的新服务帐户,并将该服务帐户分配给计算引擎VM实例

      将服务帐户添加到bucket(作为资源)不需要关闭或重新启动VM。更改VM作用域确实需要关闭VM。@JohnHanley有趣的是,我尝试过,添加了所有类型的写入权限,但仍然出现此错误。。。我可能错过了什么,不确定。不管怎样,我最终停止了VM并修改了作用域,它现在工作得很好。计算引擎VM作用域限制授予服务帐户的权限。如果您取消选择了云存储的作用域,那么是的,您将需要关闭VM以更改作用域。请注意,作用域不向服务帐户授予权限,作用域限制已分配的权限。VM作用域是在实现IAM和服务帐户之前存在的一种遗留机制。我的建议是启用VM的所有作用域,然后限制分配给服务帐户的角色。将服务帐户添加到bucket(作为资源)不需要关闭或重新启动VM。更改VM作用域确实需要关闭VM。@JohnHanley有趣的是,我尝试过,添加了所有类型的写入权限,但仍然出现此错误。。。我可能错过了什么,不确定。不管怎样,我最终停止了VM并修改了作用域,它现在工作得很好。计算引擎VM作用域限制授予服务帐户的权限。如果您取消选择了云存储的作用域,那么是的,您将需要关闭VM以更改作用域。请注意,作用域不向服务帐户授予权限,作用域限制已分配的权限。VM作用域是在实现IAM和服务帐户之前存在的一种遗留机制。我的建议是启用VM的所有作用域,然后限制分配给服务帐户的角色。