跳到主要內容

Cloud Storage權限存取的奧妙

今天介紹一下Cloud Storage如何使用專案角色認證來給予權限... 首先,我們需要到要請求存取的專案中,找出一些專案的資訊... 包含專案ID與專案的Role ID,這兩個直可以對應在Bucket權限設定中的Project與Group兩個Entity上,簡單的設定說明如下:

讀取專案ID,然後複製下來...


在權限授與的地方,可以用文字owners-, editors-, viewers-等字眼,後面加上project id作為授與權限的對象,再給予Access的權限對應,即可將bucket授與對象專案的相對角色相關權限。
\

例如,給予project 288********的所有editor角色具備write的權限,則可以使用

ENTITY = project
NAME = 288********
ACCESS = Writer

這樣的一組設定來完成

另外,如果透過專案的Role ID來做權限授與的話,也可以達到相似的效果,這邊可以在Storage的setting頁面找到這個專案的對應role id




這邊可以直接複製role id直接貼到NAME欄位,然後ENTITY選擇Group,在給予對應的Access權限...




在存完檔案之後,重新瀏覽後,可以發現該設定會被轉換成專案的對應權限...



透過這樣的設定,我們可以簡單的讓專案之間彼此可以互相傳遞資料,而不用特別去auth個人的帳戶給執行主機,也可以避免一些存取上的風險 :D


最後,可能有人會想到使用vm instance的service account來做權限授與...
下面是一個GCE instance,目前開放auth使用instance內建的service account (有掛active那組)



而在另一個專案的bucket給予這個instance內建的account權限之後:

經測試可以正常存取該bucket



但如果使用A專案所建立的Service Account去認證Cloud SDK(參考這邊),則最後無法去存取已經授與權限的Service Account....





結論:

1. 我們可以使用project與role的權限授與方式來給予其他專案存取此專案Bucket的權限
2. Service Account會跟隨專案,即使其他專案給予這個Service Account存取權限,也無法跨專案存取Bucket

以上,給大家參考


留言

這個網誌中的熱門文章

Share a chrome plugin for manage google cloud platform

好玩意兒報報.... 同事的新作,把Google Project List在Chrome Plugin中! 對一次管理多個專案的人來說,真得超方便的拉! 下載: https://chrome.google.com/webstore/detail/gdclauncher/bicgkglnnilldakpenngnblekooejnpg 使用說明: 1. Use browser url bar to quick search: Type "gdcl" in browser Press "TAB" to start search Type the project id key word then select the search result... 2. Using quick launch bar... You can search by keyword or click project name to go to the project or gae link to go to gae or go to billing page....

透過Google Apps Script結合Google Form做即時郵件通知

體驗過Google Apps Script的功能後,也發現他結合GmailApps的模組 GmailApps的應用可以用在表單填寫完成後,做發信的通知 例如您開立了一個訂購的表單,為了要在第一時間通知商家有訂單進入 就可以直接呼叫Gmail做發信的通知,讓手持Smart Phone的我們可以很快的知道生意上門了! 下面規劃三個function,其中: onCommit():為form commit時候觸發的function,需要掛載於form commit trigger上 jsonArrToTable():目的將json array解析成為一個Table getLastRowTable():目的將整個table的回傳過濾為剩下第一筆(表頭,含有Form的欄位說明)與最後一筆(原則上就是剛剛送出的那一筆表單) 完整程式碼如下: function onCommit(){   var sheet = SpreadsheetApp.getActiveSheet();   var rows = sheet.getDataRange();   var numRows = rows.getNumRows();   var values = rows.getValues();   var content = getLastRowTable(values);   var htmlBody = "Hi Admin: <br/><br/>有訂單拉,檢查一下吧! <br/><br/>" + content + '<br/><br/>Send by Google Apps';   GmailApp.sendEmail(     " your-email-address@gmail.com ",      "Order Confirm Notice",      htmlBody,      {from: ' from-email-...

Cloud Monitor嚐鮮

GCP上,我們非常想要的一個功能,終於問世.... Cloud Monitor來了!