首页 > 解决方案 > 哪些是用于将对象复制到 Cloud Storage 存储分区的凭据

问题描述

我需要将一个对象(文件)复制到名为destination-bucket1.

管理员仅向命名service-account1的服务帐户提供了写入权限destination-bucket1,并且没有个人帐户对destination-bucket1. service-account1此外,现有策略不允许为该服务帐户 ( ) 创建密钥。

我正在通过名为instance1的 SSH 访问 Compute Engine VM 实例,该实例位于相同的service-account1,因此instance1可以访问destination-bucket1via service-account1

如果我gsutil cp file1.bin gs://destination-bucket1使用 Cloud SDK 凭据运行命令,我会使用自己的凭据来访问destination-bucket1. 这就是为什么这个操作应该失败 - 因为访问被拒绝。

问题是,如果我通过 SSH 执行以下命令instance1

gsutil cp file1.bin gs://destination-bucket1

我应该使用instance1服务帐户service-account1的凭据还是我自己的凭据?

标签: google-cloud-platformgoogle-cloud-storagegoogle-iam

解决方案


您必须使用有权写入存储桶的帐户的凭据。

如果您自己的帐户有权写入存储桶并且您想使用它,您可以使用以下命令从 VM 登录您的帐户gcloud auth login

为了在使用自己的默认服务帐户的计算引擎中使用 gsutil cp 命令,您需要:

通过控制台访问您的实例,停止它,按编辑,向下滚动以访问范围并将存储范围设置为读写或完全访问。

然后转到您的存储桶并编辑您的权限,您可以根据需要将 Compute Engine 的服务帐户设置为存储桶所有者、读取器...。

转到 API 和服务并启用 Storage Transfer API

然后通过在您的实例中运行以下命令从您的虚拟机中删除旧的 gsutil 权限:

sudo rm -r ~/.gsutil

现在您应该可以使用 gsutil 命令了


推荐阅读