Google Cloud Storage Signed URL

魏衡/盛骏

2020 年 9 月 01 日

Google Cloud Storage Signed URL

Google Cloud Storage 提供了以下选项的存取控制:


  1. IAM权限:允许存取 Project 里的所有 bucket 和 object。通过 IAM,您可以控制对整个 project 所有 bucket 和 object 的存取权限, 但是无法针对个别 bucket 或是 object 做控制。

  2. Access control list(ACL):允许对单个 bucket 和 objects 进行读写的控制。当您需详细地控制个别的资源时,可以使用 ACL。

  3. Signed URL:通过产生的 URL 网址可以进行存取和读写。无论取得共享网址的人是否拥有Google帐户,每个取得共享网址的人皆可在特定的时间存取 object。

  4. Signed policy document:指定可以上传到bucket的内容。在Policy文件中,可以比 Signed URL更精准地掌握例如:文件大小、内容类型等上传属性。网站拥有者可通过 Signed policy document 允许访问者将文件上传到 Google Cloud Storage。


本文将介绍如何是用第三种方法:Signed URL 来对 Object 进行上传下载。


一 、创建 Service Account


Service Account 是 Machine to Machine 通讯时,权限管理的账号。我们通过以下三步获得具有存储管理权限的 Service Account:


  1. 创建Service Account

  2. 授权Service Account

  3. 下载Service Account Key文件

  4. 在客户端激活Service Account


1 创建 Service Account


在 GCP 的 Console 中选择 IAM->Service Account,选择 Create Service Account:





2 授权 Service Account


创建好 Service Account 后,在 IAM 中对这个 Service Account 进行授权。




给这个 Service Account 分配 Storage Admin 的权限。此时在 GCS 的 Permission 中可以看到这个 Service Account 对每个 Bucket 都有了 Admin 的权限。


也可以采用真的每个 Bucket 单独授权的模式,在 IAM 中取消这个 Service Account 的权限。进入到 GCS 管理界面,针对每个 Bucket 进行授权。


3 下载 Service Account Key 文件


在 IAM 的 Service Account 中创建 Service Account Key:




这个文件会下载到本地。


4 在客户端激活 Service Account


在安装有 gcloud 客户端的机器上激活 Service Account:



二 采用 Signed URL 下载文件


1 查看下载文件


通过 GCS 的命令行工具 gsutil,创建 Signed URL 的链接。


我们对非 public 对文件进行 Signed URL 操作:



2 生成 Signed URL


在命令行中:



可以看到 GCP 返回 Signed URL 链接:



3 使用 Signed URL 下载文件


用浏览器打开这个链接,可以直接下载;也可以用 curl 命令手工下载:




三 用 Signed URL 上传文件


1 生成一个上传文件



2 使用 gsutil 生成 signed URL



3 上传文件



可以看到上传成功。


四 用 Signed URL 实现断点续传上传文件


GCS Signed URL 支持断点续传。具体实现方式如下:


1 生成文件



2 gsutil 生成 Signed URL



得到如下返回



3 生成上传链接



返回如下:



将上传地址取出:



4 上传并中断



中断上传



5 查看上传的大小



返回值中有 Range 信息:



6 生成剩余文件



7 上传剩余文件



8 验证



上传的文件和本地文件一致。


五 总结


通过 Signed URL 可以实现:


  1. 下载

  2. 上传

  3. 支持断点续传的上传


2020 年 9 月 01 日 22:591330

评论

发布
暂无评论
发现更多内容

架构师训练营-week1-学习总结

晓-Michelle

极客大学架构师训练营

架构师训练营第一周总结

allen

食堂就餐卡系统设计文档

15359861984

架构师 - 入学篇

X﹏X

极客大学架构师训练营

食堂就餐卡系统设计

王新涵

架构师训练营- 第一周 - 学习总结

stardust20

食堂就餐卡系统设计

林昱榕

极客大学架构师训练营 食堂就餐卡系统设计

食堂就餐卡系统

SuperLab

假如黑夜来临

zhoo299

随笔 随笔杂谈

食堂就餐卡系统设计

胡江涛

系统设计 极客大学架构师训练营 就餐卡

第一周总结

chenzt

食堂就餐系统设计

Glowry

极客大学架构师训练营

食堂就餐卡系统

chenzt

第一周作业 食堂就餐卡系统uml图

战峰

UML示例

Geek_196d0f

架构师训练营 - 第一周作业二

teslə

训练营第一章笔记

Mr冰凉

2020-06-06-食堂就餐卡系统设计

路易斯李李李

架构师训练营0期第一周学习总结

王新涵

架构师训练营第一周作业-王韬

W_T

极客大学架构师训练营 作业

架构师训练营-week1-作业-食堂就餐卡系统架构设计

晓-Michelle

极客大学架构师训练营

架构师训练营 第一周 食堂就餐卡系统设计

且听且吟

极客大学架构师训练营

【总结】架构师如何做架构

魔曦

架构 架构师 极客大学架构师训练营

食堂就餐卡系统设计

娄江国

极客大学架构师训练营

【第一周】命题作业——食堂就餐卡系统设计

三尾鱼

学习 极客大学架构师训练营

第一周学习总结

15359861984

week01小结

Geek_196d0f

架构师训练营第一次作业

曾祥斌

极客时间架构师训练营 - week1 - 作业1

jjn0703

极客大学架构师训练营

训练营第一周作业

Mr冰凉

架构师训练营0期第1周-总结+作业

林毋梦

极客大学架构师训练营

Google Cloud Storage Signed URL-InfoQ