本頁面說明如何使用禁止公開存取值區設定,以及禁止公開存取組織政策限制。您可以透過禁止公開存取功能,限制值區和物件的公開存取權。
事前準備
在 Cloud Storage 使用禁止公開存取功能前,請確認您具備必要的 IAM 角色,並詳閱強制執行禁止公開存取功能的注意事項。
取得必要角色
如要在專案、資料夾或機構層級管理禁止公開存取組織政策,請要求管理員授予您機構的「組織政策管理員」(roles/orgpolicy.policyAdmin) 角色。這個預先定義的角色具備必要權限,可在專案、資料夾或組織層級管理禁止公開存取功能。如要瞭解這個角色包含的權限,請參閱組織管理員角色的詳細資料。
如要管理 bucket 的公開存取權防護設定,請要求管理員授予您該 bucket 的 Storage 管理員 (roles/storage.admin) 角色。這個角色具備管理值區公開存取權防護措施所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
storage.buckets.updatestorage.buckets.setIamPolicy
如要瞭解 Storage 管理員角色包含的其他權限,請參閱 Storage 管理員角色的詳細資料。
注意事項
開始操作前,建議您先確認封鎖公開存取權後,工作流程不會因此中斷。詳情請參閱「對現有資源強制執行時的注意事項」。
使用 bucket 設定
本節說明如何對個別 bucket 強制執行及移除禁止公開存取的功能,以及如何檢查個別 bucket 的狀態。
設定禁止公開存取
如要變更個別 bucket 的公開存取預防措施設定,請按照下列步驟操作:
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要強制執行或移除「禁止公開存取」的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
在「Public access」(公開存取權) 資訊卡,點按「Prevent public access」(禁止公開存取) 強制執行這項功能,或按一下「Allow public access」(允許公開存取) 移除這項功能。
按一下「確認」。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage buckets update 指令並加上適當的旗標:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。FLAG是--public-access-prevention(啟用禁止公開存取功能) 或--no-public-access-prevention(停用這項功能)。
如果成功,回應會類似以下範例:
Updating gs://my-bucket/... Completed 1
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會強制禁止公開存取 bucket:
下列範例會將 bucket 的公開存取權預防措施設為 inherited:
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會強制禁止公開存取 bucket:
下列範例會將 bucket 的公開存取預防措施設為 inherited:
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會強制禁止公開存取 bucket:
下列範例會將 bucket 的公開存取權預防措施設為 inherited:
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會強制禁止公開存取 bucket:
以下範例會將 bucket 的公開存取權禁止設定為 inherited:
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會強制禁止公開存取 bucket:
以下範例會將 bucket 的公開存取權禁止設定為 inherited:
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
下列範例會對 bucket 強制執行公開存取防護機制:
下列範例會將 bucket 的公開存取權預防措施設為 inherited:
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
下列範例會對 bucket 強制執行公開存取防護機制:
以下範例會將 bucket 的公開存取權禁止設定為 inherited:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
下列範例會對 bucket 強制執行公開存取防護機制:
下列範例會將 bucket 的公開存取權預防措施設為 inherited:
Rust
下列範例會對 bucket 強制執行公開存取防護機制:
以下範例會將 bucket 的公開存取權禁止設定為 inherited:
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "iamConfiguration": { "publicAccessPrevention": "STATE", } }其中
<var>STATE</var>為enforced或inherited。使用
cURL來透過包含所需fields的PATCH值區要求呼叫 JSON API:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=iamConfiguration"其中:
JSON_FILE_NAME是您在上一步建立的 JSON 檔案路徑。BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。
XML API
XML API 無法用於管理禁止公開存取功能。請改用其他 Cloud Storage 工具,例如 Google Cloud 控制台。
查看禁止公開存取狀態
如要查看個別 bucket 的禁止公開存取狀態,請按照下列步驟操作:
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
按一下要查看公開存取防範狀態的值區名稱。
按一下「Permissions」(權限) 分頁標籤。
「Public access」(公開存取權) 資訊卡會顯示值區的狀態。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 gcloud storage buckets describe 指令,並加上 --format 旗標:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(public_access_prevention)"
其中 BUCKET_NAME 是要查看狀態的 bucket 名稱。例如:my-bucket。
如果成功,回應會類似以下範例:
public_access_prevention:inherited
用戶端程式庫
C++
詳情請參閱「Cloud Storage C++ API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過包含所需fields的GET值區要求呼叫 JSON API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=iamConfiguration"
其中
BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。回應類似下列範例:
{ "iamConfiguration": { ... "publicAccessPrevention": "FLAG" } }其中
FLAG為inherited或enforced。
XML API
XML API 無法用於管理禁止公開存取功能。請改用其他 Cloud Storage 工具,例如 Google Cloud 控制台。
使用組織政策
本節說明如何強制執行及移除禁止公開存取組織政策,以及如何檢查政策狀態。
設定禁止公開存取
如要在專案、資料夾或組織層級設定禁止公開存取功能,請按照下列步驟操作:
控制台
按照「建立及管理組織政策」的指示,使用 storage.publicAccessPrevention 限制。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud beta resource-manager org-policies 指令:
gcloud beta resource-manager org-policies STATE \ constraints/storage.publicAccessPrevention \ --RESOURCE RESOURCE_ID
其中:
STATE的值可能如下:enable-enforce:強制禁止公開存取資源。disable-enforce:停用資源的公開存取預防措施。delete:從資源中移除組織政策限制,讓資源繼承父項資源的值。
RESOURCE是要設定禁止公開存取的資源。例如:organization、project或folder。RESOURCE_ID是資源 ID。例如,123456789012代表組織 ID、245321代表資料夾 ID,或my-pet-project代表專案 ID。
詳情請參閱「使用限制」一節。
以下是使用 disable-enforce 時的輸出範例:
etag: BwVJi0OOESU=
booleanPolicy: {}
constraint: constraints/storage.publicAccessPrevention查看禁止公開存取狀態
如要在專案、資料夾或機構層級查看禁止公開存取狀態,請按照下列步驟操作:
控制台
按照「建立及管理組織政策」的操作說明,使用 storage.publicAccessPrevention 限制。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 describe --effective 指令:
gcloud beta resource-manager org-policies describe \ constraints/storage.publicAccessPrevention --effective \ --RESOURCE RESOURCE_ID
其中:
RESOURCE是要查看公開存取權防護狀態的資源。例如:organization、project或folder。RESOURCE_ID是資源 ID。舉例來說,123456789012代表組織 ID,245321代表資料夾 ID,my-pet-project則代表專案 ID。
詳情請參閱「使用限制」一節。