当前位置: 首页 > 知识库问答 >
问题:

如何调试谷歌云存储的访问控制问题?

陈哲
2023-03-14

在学习如何使用谷歌计算引擎和谷歌云存储时,我遇到了一个ACL问题。在我自己的计算机上,使用我自己的SSH凭据,我可以用我的bucket做任何我想做的事情。但是当我使用基于Web的SSH客户机登录到我的compute实例时,我只能从bucket中读取。将数据复制到bucket时会出现“AccessDeniedException:403权限不足”错误。(我正在用Gsutil做所有这些复制实验。)

这对我来说毫无意义。唯一的服务帐户被授予了项目编辑器角色,我确认了bucket ACL列表为所有者提供了对项目编辑器角色和服务帐户的访问权限。我还尝试将服务帐户更改为具有“写”权限,而不是桶上的“所有者”权限,但这没有帮助。最后,在本地计算机上执行所有这些操作时,我将为相同的默认服务帐户使用下载的ssh密钥,所以我不明白为什么它会发生变化。

问题的一部分是我看不出橡胶在哪里遇到了道路--我得到的只是一辆403,没有更多的信息。我看不到gsutil在做什么(事实上,我甚至不确定gsutil是如何获得其凭据的,因为当您通过控制台ssh时,这一切都是自动完成的--我只是假设它在服务帐户下进行日志记录)。

很明显,我想解决这个直接的问题,但我也希望有任何关于如何在将来调试这些问题的提示。

共有1个答案

养研
2023-03-14

默认情况下,compute engine上的gsutil不使用您的个人用户凭据。相反,它将自动获取凭据,以充当为该VM配置的服务帐户(通常是Compute Engine默认服务帐户)。

该服务帐户需要两件事才能写到GCS:1.)来自GCS的写到特定位置的权限,以及2.)写到GCS的作用域。

听起来好像您已经将服务帐户设置为项目编辑器,甚至使其成为有问题的桶的所有者,所以您已经处理了第1项。但是,默认情况下,GCE只授予实例访问存储的只读范围。这很可能就是为什么读对你有用,而写对你没用的原因。

 类似资料:
  • 我试图设计一个应用程序,从我的谷歌云存储帐户下载适当的声音文件。该应用程序不访问用户帐户,但我自己的帐户。 我的阅读让我相信,最合适的模式是服务账户https://code.google.com/p/google-api-java-client/wiki/OAuth2#Service_Accounts 不幸的是,开发人员决定不提供Android的例子。他们确实提供了一个很好的例子,只是简单的Jav

  • 我想从Google Play Analytics获取数据,它存储在Google云存储中。经过研究,洛特发现,并没有直接的API来获取谷歌播放分析报告数据。因此,我找到了通过GoogleAPI客户端PHP库链接访问GooglePlay帐户报告的方法,并遵循了给定的方法。我已经创建了服务帐户,授予了所有者权限,并启用了谷歌云api。 在链接中显示的代码中,如果我使用var_dump($bucket),

  • 我使用Reactjs创建一个网站并将其托管在Firebase上,并使用google cloud函数上的和设置,以处理函数。网站有一个

  • 我正在使用请求将文件上传到谷歌云存储。 请求是: 我得到以下错误作为响应: 我在某处读到,我需要打开谷歌云存储JSON API。是否必须打开谷歌云存储JSON API,或者是否有其他解决方案来修复此错误?

  • 我正在尝试在我的节点中获取谷歌云存储(GCS)的图像文件。使用Axios客户端的js应用程序。在使用PC的开发模式下,我传递了一个承载令牌,所有这些都正常工作。 但是,我需要在Google Kubernetes Engine(GKE)上托管的集群的生产中使用它。 我做了推荐的教程来创建一个服务号(GSA),然后我vinculed与kubernetes帐户(KSA),通过工作负载身份方法,但当我尝试