【发布时间】:2015-11-29 18:34:33
【问题描述】:
我正在使用 Google Cloud Storage 来保存我的应用用户上传的照片。我正在使用服务帐户对 GCS 的请求 [1] 进行身份验证。如果用户想要将照片上传到 GCS 的存储桶,则执行以下步骤。
- Android 客户端向我的服务器发送请求,为他提供 GCS 的访问令牌。
- 服务器从服务账户获取访问令牌(我使用的是PK12密钥)。
- 服务器将访问令牌发送回 Android 客户端。
- Android 客户端使用访问令牌对 GCS 端点进行身份验证,并将照片上传到 GCS 的存储桶。
- 照片的元数据保存在我的数据库中。
由于 Google Cloud Storage 只允许为其存储桶和对象定义“READER”、“WRITER”、“OWNER”权限。我需要向服务帐户持有人授予对存储桶的“WRITER”权限。 (“让用户列出、创建、覆盖和删除存储桶中的对象”。)
现在的问题是,访问令牌可能被某人滥用,可能会删除 GCS 中的所有照片。
如果 GCS 能区分“WRITER”、“删除权限”会更好。
可以使用提供的 OAuth2.0 身份验证[2],但它似乎只能与 GCS 中的 Google 帐户一起使用。
谁能给我一个建议如何解决我的问题?或者也许可以帮助我找到另一种将照片上传到 GCS 的方法。
我正在考虑为每个用户创建一个单独的存储桶的可能性,但是我需要为每个用户创建一个服务帐户,但我仍然没有找到任何可能性如何以编程方式执行此操作(如果可能的话)。
感谢您的帮助!
【问题讨论】:
标签: google-app-engine google-cloud-storage service-accounts