本頁面說明如何使用禁止公開存取值區設定,以及禁止公開存取組織政策限制。禁止公開存取功能可限制值區和物件的公開存取權。
事前準備
在 Cloud Storage 中使用禁止公開存取功能前,請確認您具備必要的 IAM 角色,並詳閱強制執行禁止公開存取功能的注意事項。
取得必要角色
如要在專案、資料夾或機構層級管理禁止公開存取機構政策,請要求管理員授予您機構的機構政策管理員 (roles/orgpolicy.policyAdmin) 角色。這個預先定義的角色具備在專案、資料夾或機構層級管理禁止公開存取功能所需的權限。如要瞭解這個角色包含的權限,請參閱機構管理員角色詳細資料。
如要管理 bucket 的禁止公開存取設定,請要求管理員授予 bucket 的「儲存空間管理員」角色 (roles/storage.admin)。這個角色具備管理值區禁止公開存取設定所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.buckets.updatestorage.buckets.setIamPolicy
如要瞭解「儲存空間管理員」角色包含的其他權限,請參閱儲存空間管理員角色詳細資料。
審查注意事項
開始前,建議您先確認封鎖公開存取權後,不會導致任何工作流程中斷。詳情請參閱「對現有資源強制執行時的注意事項」。
使用 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是相關值區的名稱。例如:my-bucket。FLAG:--public-access-prevention可啟用禁止公開存取功能,--no-public-access-prevention則可停用這項功能。
如果成功,回應會類似以下範例:
Updating gs://my-bucket/... Completed 1
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 bucket:
下例示範如何為值區將禁止公開存取設定為 inherited:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例會強制禁止公開存取 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是相關值區的名稱。例如:my-bucket。
XML API
XML API 無法用來管理「不可公開存取」限制。請改用其他 Cloud Storage 工具,例如 Google Cloud 控制台。
查看禁止公開存取狀態
如要查看個別 bucket 的禁止公開存取狀態,請按照下列步驟操作:
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
按一下要查看禁止公開存取狀態的 bucket 名稱。
按一下「Permissions」(權限) 分頁標籤。
「公開存取權」資訊卡會顯示值區的狀態。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用加上 --format 旗標的 gcloud storage buckets describe 指令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(public_access_prevention)"
其中 BUCKET_NAME 是您要查看狀態的值區名稱。例如: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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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是相關值區的名稱。例如: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。
如需更多操作說明,請參閱「使用限制」。