這份文件說明了常見的資料共用及協作情境,包括如何設定專案和 bucket 的身分與存取權管理 (IAM) 政策,以實作這些情境。
儲存及維護私人資料
在這個情境中,一間公司的行銷分析師想要使用 Cloud Storage 備份收益預測與銷售預測等機密資料,並且要確保只有行銷分析師能存取這些資料。公司的 IT 部門負責監督與管理公司的 Cloud Storage 帳戶,他們的主要管理職責包含建立及共用值區,以便讓全公司各個部門都能存取 Cloud Storage。
如要滿足行銷分析師對機密性及隱私權的需求,您所設定的值區與物件權限必須讓 IT 人員能夠維護儲存試算表的值區,但無法檢視/下載儲存於值區中的資料。為此,您需要建立名為 finance-marketing 的 bucket,並將列出的資源下列角色授予指定的主體:
| 角色 | 資源 | 主體 | 說明 |
|---|---|---|---|
| Storage 舊版 bucket 擁有者 | bucket finance-marketing |
IT 人員 | 只要將值區的舊版 Storage 值區擁有者角色授予 IT 員工,他們就能執行常見的值區管理工作,例如刪除物件和變更值區的 IAM 政策。IT 人員也可以列出 finance-marketing bucket 的內容,但無法查看或下載任何內容。 |
| Storage 物件使用者 | bucket finance-marketing |
行銷分析師 | 將 bucket 的 Storage 物件使用者角色授予行銷分析師,她就能上傳、查看、更新及刪除 bucket 中的物件。 |
有了這些角色,除了市場分析師之外,任何人都無法查看或下載 bucket 中的物件。IT 人員仍可列出 finance-marketing bucket 的內容,並視需要刪除及取代 bucket 中儲存的檔案。
實作這個情境
你的動作
請採取下列行動,以便在這種情境下進行實作:
建立名為
finance-marketing的 bucket。如需逐步說明,請參閱「建立 bucket」。為 bucket 指派 Storage 舊版 bucket 擁有者角色給每位 IT 人員。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。
IT 人員動作
IT 人員應採取下列行動,以便在這種情境下進行實作:
- 將 bucket 的「Storage 物件使用者」角色授予行銷分析師。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。
廠商集放箱
在這個情境中,一間建設公司與執行多項建築專案計劃的多間建築設計事務所共事。建設公司想要為廠商設立一個集放箱,讓他們針對不同的專案里程碑上傳建築計劃。集放箱必須確保建設公司客戶的隱私權受到保護;換句話說,集放箱不能讓廠商檢視彼此的工作內容。為此,您需要為每間建築公司建立個別 bucket,並為列出的資源,向指定主體授予下列角色:
| 角色 | 資源 | 主體 | 說明 |
|---|---|---|---|
| 版主 | 整體專案 | 建設公司經理 | 只要將專案層級的「擁有者」角色授予建築公司經理,她就能為各個供應商建立 bucket。 |
| Storage 物件檢視者 | 整體專案 | 建設公司經理 | Storage 物件檢視者可讓營造公司經理下載供應商上傳的物件。 |
| Storage 繼承 Bucket 擁有者 | 每個供應商 bucket | 建設公司經理 | Storage 舊版 bucket 擁有者角色可讓營造公司經理列出各 bucket 的內容,並在每個專案里程碑結束時刪除物件。 |
| Storage 物件管理員 | 每個供應商 bucket | 與值區相關的廠商 | 為每個供應商的 bucket 授予「Storage Object Admin」(Storage 物件管理員) 角色,供應商就能完全控管 bucket 中的物件,包括上傳物件、列出 bucket 中的物件,以及控管每個物件的存取權。這項權限無法讓廠商變更或檢視整體值區的角色等中繼資料,也無法讓他們列出或檢視專案中其他值區,因此可以保障各間廠商的隱私權。 |
實作這個情境
你的動作
請採取下列行動,以便在這種情境下進行實作:
- 授予建築公司經理專案的「擁有者」角色,以及專案的「Storage 物件檢視者」角色。如需逐步操作說明,請參閱「授予單一角色」。
建築公司經理動作
建設公司經理應採取下列行動,以便在這種情境下進行實作:
為各間廠商分別建立不同值區。如需逐步說明,請參閱「建立 bucket」。
由於施工經理具有「擁有者」角色,因此她建立的每個 bucket 都會自動取得「Storage 繼承 Bucket 擁有者」角色。
為每個供應商提供各自 bucket 的 Storage 物件管理員角色。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。
如果任何供應商打算使用 Google Cloud 控制台,請提供其值區的連結,格式如下:
https://console.cloud.google.com/storage/browser/BUCKET_NAME其中
BUCKET_NAME是供應商 bucket 的名稱。
供應商動作
每間廠商皆須採取下列行動,以便在這種情境下進行實作:
將物件上傳至指派給他們的值區;最簡單的方法是透過 Google Cloud 控制台。其他方法 (例如 Google Cloud CLI) 則需要額外設定才能使用。如需逐步說明,請參閱「上傳物件」。
已驗證的瀏覽器下載作業
在這個情境中,客戶希望透過簡單的瀏覽器下載,將檔案提供給特定個人。您可以使用 Cloud Storage 驗證 Cookie 執行這項操作。如要下載物件,使用者必須登入有效帳戶進行驗證,包括 Google Workspace、Cloud Identity、Gmail 和員工身分聯盟。下列已驗證的使用者可以下載物件:
在物件本身的存取控管清單 (ACL) 中,具有
READ或FULL_CONTROL權限的使用者。在值區或物件所在專案的 Identity and Access Management (IAM) 政策中,具備
storage.objects.get權限的使用者。
其他使用者會收到 403 Forbidden (access denied) 錯誤。
如要使用這項功能,請授予使用者存取物件的權限,然後提供物件的特殊網址。使用者點選網址後,Cloud Storage 會提示他們登入帳戶 (如果尚未登入),然後將物件下載到電腦。
實作這個情境
您可以透過下列四個一般步驟實作 Cookie 型驗證:
建立值區。如需逐步說明,請參閱「建立 bucket」一節。
假設您在自己擁有的專案中建立 bucket,系統會自動授予權限,讓您將物件上傳至 bucket,以及變更 bucket 的存取權。
上傳要共用的物件。如需逐步說明,請參閱「上傳物件」。
授予使用者物件存取權。常見做法是修改 bucket 的 IAM 政策,將 Storage Object Viewer 角色授予特定使用者,這會套用至 bucket 中的所有物件。如需逐步說明,請參閱「在 bucket 層級政策新增主體」。
提供物件的特殊網址給使用者。
已驗證的瀏覽器下載作業會透過特定網址端點存取 Cloud Storage。請使用下列網址:
https://storage.cloud.google.com/BUCKET_NAME/OBJECT_NAME其中:
BUCKET_NAME是包含所需物件的 bucket 名稱。例如:my-bucket。OBJECT_NAME是所需物件的名稱。例如:pets/dog.png。
只有具備適當存取權限的使用者才能查看,因此您提供這個網址的方式並不重要。您可以將網址直接傳送給使用者,或是張貼在網頁上。
使用群組控管存取權
在這個情境中,您想要將物件提供給特定使用者,例如受邀試用新軟體的使用者。此外,您想邀請多位使用者,但不想為每位使用者個別設定權限。但您也不希望將物件設為公開讀取,並傳送連結給受邀客戶存取物件,因為連結可能會傳送給未受邀的使用者。
如要處理這個情況,其中一種方式是使用 Google 群組。您可以建立群組,並只將受邀的使用者加入群組。然後將物件的完整存取權授予該群組即可:
| 角色 | 資源 | 主體 | 說明 |
|---|---|---|---|
| Storage 物件檢視者 | 您的 bucket | Google 群組 | 只要將 bucket 的 Storage 物件檢視者角色授予 Google 群組,該群組中的任何客戶都能查看 bucket 中的物件。非該群組成員的使用者均無法存取這些物件。 |
實作這個情境
建立一個 Google 群組,然後將客戶加入其中。如需逐步操作說明,請參閱建立群組。
建立值區。如需逐步說明,請參閱「建立 bucket」。
將物件上傳至值區。如需逐步說明,請參閱「上傳物件」。
將物件存取權授予該 Google 群組。
您可以使用 IAM 角色 storage.objectViewer 將值區中所有物件的檢視權限授予群組。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。
如果您只想將值區中部分物件的存取權授予群組,請針對這些個別物件設定「讀取者」ACL。如需逐步操作說明,請參閱「設定 ACL」。
與群組共用適當的要求端點,讓他們知道如何存取物件。
舉例來說,使用 Google Cloud 控制台時,網址
https://console.cloud.google.com/storage/browser/BUCKET_NAME會將您導向 bucketBUCKET_NAME中的物件清單。
使用代管資料夾控管存取權
在這個情境中,您有多位客戶,每位客戶都擁有一個包含自訂圖片的專屬網站。您希望顧客只能將圖片上傳到自家網站,而不能上傳到其他網站。當客戶取消帳戶時,您想停用網站上圖片的公開存取權,但避免刪除圖片,以免客戶想重新啟用帳戶。
如要處理這種情況,可以使用代管資料夾。您可以在 bucket 中建立多個代管資料夾,並使用 IAM 控管客戶和使用者對個別代管資料夾的存取權。
實作這個情境
建立值區。
為每個客戶網站,在 bucket 中建立代管資料夾。
為每個代管資料夾設定 IAM 政策,授予客戶 Storage 物件使用者 (
roles/storage.objectUser) 角色,讓客戶可以將物件上傳至代管資料夾,以及從代管資料夾移除物件。針對所有代管資料夾,設定 IAM 政策,將 Storage 物件檢視者 (
roles/storage.objectViewer) 角色授予主體allUsers,這樣代管資料夾中的圖片物件就能公開檢視。或者,您也可以授予自訂角色,為
allUsers提供storage.objects.getIAM 權限。客戶取消帳戶時,請移除 IAM 政策,撤銷客戶對相關聯代管資料夾的 Storage 物件使用者 (
roles/storage.objectUser) 角色。如要停用該代管資料夾中物件的公開存取權,請移除授予allUsers「Storage 物件檢視者」(roles/storage.objectViewer) 角色的 IAM 政策。