如何区分 Google Cloud Storage 中的 WRITER 和 REMOVER?
How to distinguish between WRITER and REMOVER in Google Cloud Storage?
我正在使用 Google 云存储来保存我的应用程序用户上传的照片。我正在使用服务帐户对 GCS 请求 [1] 进行身份验证。如果用户想要将照片上传到 GCS 的存储桶,将执行以下步骤。
- Android 客户端向我的服务器发送请求,为他提供 GCS 的访问令牌。
- 服务器从服务帐户获取访问令牌(我使用的是 PK12 密钥)。
- 服务器将访问令牌发送回 Android 客户端。
- Android 客户端使用访问令牌根据 GCS 端点对自己进行身份验证并将照片上传到 GCS 的存储桶。
- 照片的元数据保存在我的数据库中。
因为 Google Cloud Storage 仅允许定义对其存储桶和对象的 "READER"、"WRITER"、"OWNER" 权限。我需要授予服务帐户持有人对存储桶的 "WRITER" 权限。 ("Lets a user list, create, overwrite, and delete objects in a bucket".)
现在的问题是,访问令牌可能被某人滥用,可能会删除 GCS 中的所有照片。
如果GCS能区分"WRITER"、"delete permission".
就更好了
可以使用提供的 OAuth2.0 身份验证 [2],但它似乎只能与 GCS 中的 Google 帐户一起使用。
谁能给我建议如何解决我的问题?或者可以帮我找到另一种方法将照片上传到 GCS。
我在考虑为每个用户创建一个单独的存储桶的可能性,但后来我需要为每个用户创建一个服务帐户,我仍然没有找到任何可能如何以编程方式(如果可能的话)。
感谢您的帮助!
您正在寻找 "signed URLs." 正如您所指出的,分发身份验证令牌会赋予客户端充当服务帐户的完全权限(减去适当的范围)。
相反,您应该使用带符号的 URLs。本质上,您为您想要允许的非常具体的操作制作一个 URL,然后您使用您的密钥签署该请求,然后将该请求的 URL 交给用户。它将允许客户只做一件特定的事情。
https://cloud.google.com/storage/docs/access-control?hl=en#Signed-URLs
我正在使用 Google 云存储来保存我的应用程序用户上传的照片。我正在使用服务帐户对 GCS 请求 [1] 进行身份验证。如果用户想要将照片上传到 GCS 的存储桶,将执行以下步骤。
- Android 客户端向我的服务器发送请求,为他提供 GCS 的访问令牌。
- 服务器从服务帐户获取访问令牌(我使用的是 PK12 密钥)。
- 服务器将访问令牌发送回 Android 客户端。
- Android 客户端使用访问令牌根据 GCS 端点对自己进行身份验证并将照片上传到 GCS 的存储桶。
- 照片的元数据保存在我的数据库中。
因为 Google Cloud Storage 仅允许定义对其存储桶和对象的 "READER"、"WRITER"、"OWNER" 权限。我需要授予服务帐户持有人对存储桶的 "WRITER" 权限。 ("Lets a user list, create, overwrite, and delete objects in a bucket".)
现在的问题是,访问令牌可能被某人滥用,可能会删除 GCS 中的所有照片。
如果GCS能区分"WRITER"、"delete permission".
就更好了
可以使用提供的 OAuth2.0 身份验证 [2],但它似乎只能与 GCS 中的 Google 帐户一起使用。
谁能给我建议如何解决我的问题?或者可以帮我找到另一种方法将照片上传到 GCS。
我在考虑为每个用户创建一个单独的存储桶的可能性,但后来我需要为每个用户创建一个服务帐户,我仍然没有找到任何可能如何以编程方式(如果可能的话)。
感谢您的帮助!
您正在寻找 "signed URLs." 正如您所指出的,分发身份验证令牌会赋予客户端充当服务帐户的完全权限(减去适当的范围)。
相反,您应该使用带符号的 URLs。本质上,您为您想要允许的非常具体的操作制作一个 URL,然后您使用您的密钥签署该请求,然后将该请求的 URL 交给用户。它将允许客户只做一件特定的事情。
https://cloud.google.com/storage/docs/access-control?hl=en#Signed-URLs