Google Cloud Storage Sign URL

在Google Cloud Storage的使用上有數存種取資料的方式,其中有種存取很有趣,稱作Sign URL....
透過Sign URL,可以指定下載的網址在固定的時間內可以讀取資源
超過該時間,則URL就失效

一般我們用程式來取Sign URL,但是gsutil已經支援Sign URL了唷!這邊就來介紹一下gsutil的Sign URL操作方式... (官方說明:https://cloud.google.com/storage/docs/gsutil/commands/signurl)

gsutil signurl [options] <private-key-file> gs://some-bucket/some-object/

我們實際操作一下,針對物件位置gs://mitaccp300-dra-asia/10M.dat進行下載簽章:

$ gsutil signurl -d 1m -p notasecret /path/to/mykey.p12 gs://mitaccp300-dra-asia/10M.dat

其中參數的意義為:

  • -d: 簽章有效的長度
  • -p: p12 key的密碼
  • /path/to/mykey.p12: p12 key的路徑位置
  • gs://mitaccp300-dra-asia/10M.dat: 需要簽章的物件位置

執行結果如下

URL HTTP Method Expiration Signed URL
gs://mitaccp300-dra-asia/10M.dat GET 2015-04-23 23:59:44 https://storage.googleapis.com/mitaccp300-dra-asia/10M.dat?GoogleAccessId=860835453338-ifhbcaql190oimo0ecp3rp5lkggvapq2@developer.gserviceaccount.com&Expires=1429804784&Signature=dplM53lcwE7...xI7WFr7EJTPtMuNzil4%3D

其中紅色部分即是我們可以不透過認證而可以下載的URL.. 直接把網址貼到瀏覽器即可以在不通過驗證的情況下存取該物件,這樣,資料的安全性部分就更有保障了!

除了下載簽章,gsutil也直接支援了上傳URL的簽章,下面是簡單的說明:

gsutil signurl -m PUT [optopns] <private-key-file> gs://<bucket>/<obj>
簽章的參數說明:
  1. -m PUT: 代表使用gsutil中上傳的方法
  2. -d 1h: 代表該簽章可用的時間長度
  3. -c text/plan: 代表該物件上傳後的型態描述
  4. <private-key-file>: 代表綁定的p12 key位置
  5. gs://<bucket>/<obj>:  代表要簽章的cloud storage位置
實際執行狀況

$ gsutil signurl -m PUT -d 1m -p notasecret /path/to/mykey.p12 gs://mitaccp300-dra-asia/10M.dat

URL HTTP Method Expiration Signed URL
gs://mitaccp300-dra-asia/10M.dat PUT 2015-04-24 00:18:51 https://storage.googleapis.com/mitaccp300-dra-asia/10M.dat?GoogleAccessId=860835453338-ifhbcaql190oimo0ecp3rp5lkggvapq2@developer.gserviceaccount.com&Expires=1429805931&Signature=XHF0gOty0XFWh3DsYI7ABF%2FzO....ZTQN1D0l8IpkUq8%3D

如果使用上傳的簽署方式,需要搭配form傳遞資料的指令或是網頁程式來完成實際上傳的動作。以上,給大家參考!