共用與協作

這份文件說明了常見的資料共用及協作情境,包括如何設定專案和 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 中儲存的檔案。

實作這個情境

你的動作

請採取下列行動,以便在這種情境下進行實作:

  1. 建立名為 finance-marketing 的 bucket。如需逐步說明,請參閱「建立 bucket」。

  2. 為 bucket 指派 Storage 舊版 bucket 擁有者角色給每位 IT 人員。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。

IT 人員動作

IT 人員應採取下列行動,以便在這種情境下進行實作:

  1. 將 bucket 的「Storage 物件使用者」角色授予行銷分析師。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。

廠商集放箱

在這個情境中,一間建設公司與執行多項建築專案計劃的多間建築設計事務所共事。建設公司想要為廠商設立一個集放箱,讓他們針對不同的專案里程碑上傳建築計劃。集放箱必須確保建設公司客戶的隱私權受到保護;換句話說,集放箱不能讓廠商檢視彼此的工作內容。為此,您需要為每間建築公司建立個別 bucket,並為列出的資源,向指定主體授予下列角色:

角色 資源 主體 說明
版主 整體專案 建設公司經理 只要將專案層級的「擁有者」角色授予建築公司經理,她就能為各個供應商建立 bucket。
Storage 物件檢視者 整體專案 建設公司經理 Storage 物件檢視者可讓營造公司經理下載供應商上傳的物件。
Storage 繼承 Bucket 擁有者 每個供應商 bucket 建設公司經理 Storage 舊版 bucket 擁有者角色可讓營造公司經理列出各 bucket 的內容,並在每個專案里程碑結束時刪除物件。
Storage 物件管理員 每個供應商 bucket 與值區相關的廠商 為每個供應商的 bucket 授予「Storage Object Admin」(Storage 物件管理員) 角色,供應商就能完全控管 bucket 中的物件,包括上傳物件、列出 bucket 中的物件,以及控管每個物件的存取權。這項權限無法讓廠商變更或檢視整體值區的角色等中繼資料,也無法讓他們列出或檢視專案中其他值區,因此可以保障各間廠商的隱私權。

實作這個情境

你的動作

請採取下列行動,以便在這種情境下進行實作:

  1. 授予建築公司經理專案的「擁有者」角色,以及專案的「Storage 物件檢視者」角色。如需逐步操作說明,請參閱「授予單一角色」。

建築公司經理動作

建設公司經理應採取下列行動,以便在這種情境下進行實作:

  1. 為各間廠商分別建立不同值區。如需逐步說明,請參閱「建立 bucket」。

    由於施工經理具有「擁有者」角色,因此她建立的每個 bucket 都會自動取得「Storage 繼承 Bucket 擁有者」角色。

  2. 為每個供應商提供各自 bucket 的 Storage 物件管理員角色。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。

  3. 如果任何供應商打算使用 Google Cloud 控制台,請提供其值區的連結,格式如下:

    https://console.cloud.google.com/storage/browser/BUCKET_NAME

    其中 BUCKET_NAME 是供應商 bucket 的名稱。

供應商動作

每間廠商皆須採取下列行動,以便在這種情境下進行實作:

  1. 將物件上傳至指派給他們的值區;最簡單的方法是透過 Google Cloud 控制台。其他方法 (例如 Google Cloud CLI) 則需要額外設定才能使用。如需逐步說明,請參閱「上傳物件」。

已驗證的瀏覽器下載作業

在這個情境中,客戶希望透過簡單的瀏覽器下載,將檔案提供給特定個人。您可以使用 Cloud Storage 驗證 Cookie 執行這項操作。如要下載物件,使用者必須登入有效帳戶進行驗證,包括 Google Workspace、Cloud Identity、Gmail 和員工身分聯盟。下列已驗證的使用者可以下載物件:

其他使用者會收到 403 Forbidden (access denied) 錯誤。

如要使用這項功能,請授予使用者存取物件的權限,然後提供物件的特殊網址。使用者點選網址後,Cloud Storage 會提示他們登入帳戶 (如果尚未登入),然後將物件下載到電腦。

實作這個情境

您可以透過下列四個一般步驟實作 Cookie 型驗證:

  1. 建立值區。如需逐步說明,請參閱「建立 bucket」一節。

    假設您在自己擁有的專案中建立 bucket,系統會自動授予權限,讓您將物件上傳至 bucket,以及變更 bucket 的存取權。

  2. 上傳要共用的物件。如需逐步說明,請參閱「上傳物件」。

  3. 授予使用者物件存取權。常見做法是修改 bucket 的 IAM 政策,將 Storage Object Viewer 角色授予特定使用者,這會套用至 bucket 中的所有物件。如需逐步說明,請參閱「在 bucket 層級政策新增主體」。

  4. 提供物件的特殊網址給使用者。

    已驗證的瀏覽器下載作業會透過特定網址端點存取 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 中的物件。非該群組成員的使用者均無法存取這些物件。

實作這個情境

  1. 建立一個 Google 群組,然後將客戶加入其中。如需逐步操作說明,請參閱建立群組。

  2. 建立值區。如需逐步說明,請參閱「建立 bucket」。

  3. 將物件上傳至值區。如需逐步說明,請參閱「上傳物件」。

  4. 將物件存取權授予該 Google 群組。

    • 您可以使用 IAM 角色 storage.objectViewer 將值區中所有物件的檢視權限授予群組。如需逐步說明,請參閱「將主體新增至 bucket 層級政策」。

    • 如果您只想將值區中部分物件的存取權授予群組,請針對這些個別物件設定「讀取者」ACL。如需逐步操作說明,請參閱「設定 ACL」。

  5. 與群組共用適當的要求端點,讓他們知道如何存取物件。

    舉例來說,使用 Google Cloud 控制台時,網址https://console.cloud.google.com/storage/browser/BUCKET_NAME會將您導向 bucket BUCKET_NAME 中的物件清單。

使用代管資料夾控管存取權

在這個情境中,您有多位客戶,每位客戶都擁有一個包含自訂圖片的專屬網站。您希望顧客只能將圖片上傳到自家網站,而不能上傳到其他網站。當客戶取消帳戶時,您想停用網站上圖片的公開存取權,但避免刪除圖片,以免客戶想重新啟用帳戶。

如要處理這種情況,可以使用代管資料夾。您可以在 bucket 中建立多個代管資料夾,並使用 IAM 控管客戶和使用者對個別代管資料夾的存取權。

實作這個情境

  1. 建立值區。

  2. 為每個客戶網站,在 bucket 中建立代管資料夾。

  3. 為每個代管資料夾設定 IAM 政策,授予客戶 Storage 物件使用者 (roles/storage.objectUser) 角色,讓客戶可以將物件上傳至代管資料夾,以及從代管資料夾移除物件。

  4. 針對所有代管資料夾,設定 IAM 政策,將 Storage 物件檢視者 (roles/storage.objectViewer) 角色授予主體 allUsers,這樣代管資料夾中的圖片物件就能公開檢視。

    或者,您也可以授予自訂角色,為 allUsers 提供 storage.objects.get IAM 權限。

  5. 客戶取消帳戶時,請移除 IAM 政策,撤銷客戶對相關聯代管資料夾的 Storage 物件使用者 (roles/storage.objectUser) 角色。如要停用該代管資料夾中物件的公開存取權,請移除授予 allUsers「Storage 物件檢視者」(roles/storage.objectViewer) 角色的 IAM 政策。