谷歌存储桶文件链接可公开访问,即使不是公开的



我在玩谷歌bucket。水桶不是公共的。这些文件也不是公开的。

在我上传.csv文件之后。我点击它,它在谷歌chrome浏览器中显示了一个复杂的url链接。

现在,如果我使用该链接并在另一个浏览器中打开,如IE,其中没有谷歌帐户登录。我可以获取数据。这是一个缺陷吗?谷歌团队表示,这是权限问题。我尝试删除所有权限,但该文件仍然可以访问。你的水桶也有同样的问题吗。

以下假设bucket名称为xtest,对象名称为test.txt

这个长而复杂的URL包含一个签名,该签名提供访问对象的权限。

如果URL看起来非常复杂,并且不是这样的,那么它可能有一个签名作为URL的一部分。

http://xtest.storage.googleapis.com/test.txt

http://storage.googleapis.com/xtest/test.txt

如果URL不包含允许任何人访问bucket对象的签名,那么接下来的步骤是确定应用了哪些允许匿名访问的权限。

弄清楚对bucket和对象应用了哪些权限

我更喜欢使用CLIgsutil,这样我就有了描述所有权限的精确JSON。

有两种方法可以授予对存储桶和对象的访问权限。Bucket ACL和Bucket IAM策略。

第1部分-Bucket ACL

获取Bucket ACL

gsutil acl get gs://xtest

这将返回一个JSON响应。如果bucket acl包含以下任何一个条目,则您的bucket将被公开。

[
{
"entity": "allUsers",
"role": "READER"
},
{
"entity": "allAuthenticatedUsers",
"role": "READER"
}
]

删除公共权限

allUsers实体允许任何人拥有role指定的权限。allAuthenticatedUsers实体允许任何拥有谷歌帐户的人拥有role指定的权限。

此命令将从bucket ACL中删除allUsers

gsutil acl ch -d allUsers gs:/xtest

此命令将从bucket ACL中删除allAuthenticatedUsers

gsutil acl ch -d allAuthenticatedUsers gs:/xtest

更改存储桶或文件的ACL时,可能需要大约一分钟的时间才能生效。

对对象重复该过程:

gsutil acl get gs://xtest/test.txt

使用类似命令删除任何公共ACL:

gsutil acl ch -d allUsers gs://xtest/test.txt

gsutil acl ch -d allAuthenticatedUsers gs://xtest/test.txt

重复验证公共ACL是否已删除

gsutil acl get gs://xtest

gsutil acl get gs://xtest/test.txt

第2部分-Bucket IAM政策

获取Bucket IAM策略

gsutil iam get gs://xtest

这将返回一个JSON响应。如果bucket IAM策略包含以下任何一个条目,则会暴露您的bucket。

{
"bindings": [
{
"members": [
"allUsers"
],
"role": "roles/storage.legacyBucketReader"
},
{
"members": [
"allAuthenticatedUsers"
],
"role": "roles/storage.objectViewer"
}
],
"etag": "CBM="
}

删除公共权限

allUsers实体允许任何人拥有角色指定的权限。allAuthenticatedUsers实体允许拥有Google帐户的任何人拥有角色指定的权限。

此命令将从bucket IAM策略中删除allUsers。

gsutil iam ch -d allUsers gs://xtest

此命令将从bucket IAM策略中删除所有AuthenticatedUsers。

gsutil iam ch -d allAuthenticatedUsers gs://xtest

对对象重复该过程:

gsutil iam get gs://xtest/test.txt

使用类似命令删除任何公共对象IAM策略:

gsutil iam ch -d allUsers gs://xtest/test.txt

gsutil iam ch -d allAuthenticatedUsers gs://xtest/test.txt

重复验证公共IAM策略是否已删除

gsutil iam get gs://xtest

gsutil iam get gs://xtest/test.txt

相关内容

  • 没有找到相关文章

最新更新