Google Cloud Storage ACL 不适用于存储桶
Posted
技术标签:
【中文标题】Google Cloud Storage ACL 不适用于存储桶【英文标题】:Google Cloud Storage ACL not working for bucket 【发布时间】:2014-10-09 13:56:44 【问题描述】:我通过托管在 Google Cloud Storage 上的存储桶中的某些用户的电子邮件向他们授予了访问权限。 (例如... jane@gmail.com)。但是,只要该人在 chrome 上登录到他们的 gmail 帐户,他们就无法访问该文件。它只是说权限被拒绝。怎么回事?
我使用的链接类似于: http://storage.googleapis.com/my-bucket/my-object
在我的仪表板上,我已经明确配置了他们的 gmail 帐户,以便能够访问我的存储桶(甚至特定文件)。
我也尝试过使用 gsutil 工具,例如:
gsutil acl ch -u jane@gmail.com:R gs://finance-marketing
但我不断收到一些代码 401 Login Required
消息。我误解了什么吗?特定用户是否必须全部下载 gsutil 并以某种方式授予自己访问权限?
【问题讨论】:
【参考方案1】:当您授予访问权限时,您授予用户使用 OAuth2 凭据访问对象的权限。 Developers Console 在后台执行此身份验证,但 Chrome 对此一无所知,这就是您显示的链接不起作用的原因。
如果不授予用户对项目本身的访问权限(此时他们将能够使用控制台浏览器),您需要用户使用理解 OAuth2 的工具,例如 gsutil。
您还可以通过向用户提供来自控制台本身的链接来利用控制台的幕后 OAuth2,例如: https://console.developers.google.com/m/cloudstorage/b/your-bucket-name/o/your-object-name - 如果用户登录,这应该可以在 Chrome 中工作。
最后,通过 Chrome 访问的另一种选择是使用 Cookie 身份验证,如 https://developers.google.com/storage/docs/authentication 所述。然后您可以提供表单的 URL: https://storage.cloud.google.com/your-bucket-name/your-object-name
如果选择gsutil路由,则需要运行:
gsutil config
设置 gsutil 以使用您的凭据(您要授予访问权限的用户也是如此)。
【讨论】:
我认为最简单的方法是如果我想通过给他们自定义链接来利用 OAuth2:https://console.developers.google.com/m/cloudstorage/b/some-bucket/o/some-file
。这仅适用于单个文件。但是,如果我想授予对整个存储桶(以及其中的所有文件)的访问权限,我该怎么做?我试图授予对我的存储桶的访问权限,但它似乎不适用于放入该存储桶的新文件。
您需要更新存储桶的默认对象 ACL 以授予某人访问所有新文件的权限。见developers.google.com/storage/docs/accesscontrol#defaultobjects
另外,需要注意的是,存储桶 ACL 与访问存储桶中的实际对象没有任何关系,因为每个对象的 ACL 都需要正确设置。
@lot 我在按照该文档设置 ACL 时遇到了一些问题。我决定把它作为一个单独的问题发布在这里:***.com/questions/25393406/…你也请看一下吗?以上是关于Google Cloud Storage ACL 不适用于存储桶的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 gsutil 保留 ACL 的同时将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2
Spring + google cloud:没有可用的“com.google.cloud.storage.Storage”类型的合格bean
ReferenceError:导入@google-cloud/storage 时分配的左侧无效
错误:模块“google.cloud.bigquery_storage”没有属性“BigQueryReadClient”
使用 Cloud Functions for Firebase 和 @google-cloud/storage 删除图像时出现问题