我在我的 Google App Engine 日志中发现了几个奇怪的请求:
2620:0:1000:3001:1c2f:1188:9a2a:f8d8 - - [26/Oct/2015:16:29:55 -0700]“HEAD /an/object/path HTTP/1.1”404 - -“curl/7.35.0”“xxx.appspot.com”ms=2 cpu_ms=0 cpm_usd=0 instance=- app_engine_release=1.9.27 trace_id=-
其中 /an/object/path 是 Google Cloud Storage 默认存储桶中对象的路径,用户应该不知道该路径。
我曾尝试使用另一个帐户列出存储桶内容:
gsutil ls gs://xxx.appspot.com
给出“AccessDeniedException:403 Forbidden”,并且
什么也没显示。
gsutil acl 获取 gs://xxx.appspot.com/...
输出:
[
{
"entity": "project-owners-1096471376163",
"projectTeam": {
"projectNumber": "1096471376163",
"team": "owners"
},
"role": "OWNER"
},
{
"entity": "project-editors-1096471376163",
"projectTeam": {
"projectNumber": "1096471376163",
"team": "editors"
},
"role": "OWNER"
},
{
"entity": "project-viewers-1096471376163",
"projectTeam": {
"projectNumber": "1096471376163",
"team": "viewers"
},
"role": "READER"
},
{
"entity": "user-00b4903a978e00507e97b8a0898de74c6896e15ea3bf3e4c4fcdcbc4eb209c8f",
"entityId": "00b4903a978e00507e97b8a0898de74c6896e15ea3bf3e4c4fcdcbc4eb209c8f",
"role": "OWNER"
}
]
所以我怀疑
- 我的帐户被黑客入侵,并且/或者
- 存储桶/对象的权限设置错误,以及/或
- 有一些有缺陷的 API 可能可以列出/查询存储桶内容。
假设我的账户被黑了,黑客可以直接获取 bucket 对象,他/她实际上并不需要向 GAE 发送请求,所以 2 和 3 的可能性也很高。
所以我想问一下我可以使用什么工具/命令来检查我的存储桶是否真的可以安全地防止公众访问。
对于情况 3,也许许多其他帐户也会受到影响。
答案1
正如解释的那样文档,您可以使用 gsutil 来完成。
就像是 :
gsutil acl get gs://«path-to-object»
从我读到的您更新的问题来看,回顾我刚刚链接的相同文档,您可以看到返回的含义如下:
项目业主还拥有该物体的所有权,
项目编辑者也拥有该对象的所有权,
项目查看者还具有该对象的读取权限,
第一个上传该对象的人拥有它的所有权。