本頁面說明如何使用禁止公開存取值區設定和禁止公開存取組織政策限制。您可以使用禁止公開存取,對值區和物件的公開存取權增設限制。
事前準備
在 Cloud Storage 中使用禁止公開存取功能前,請確認您具備必要的 IAM 角色,並查看強制執行禁止公開存取功能的考量因素。
取得必要角色
如要在專案、資料夾或機構層級管理禁止公開存取的機構政策,請要求管理員授予您機構的「機構政策管理員」(roles/orgpolicy.policyAdmin
) 角色。這個預先定義的角色包含在專案、資料夾或機構層級管理公開存取預防功能所需的權限。如要進一步瞭解這個角色包含的權限,請參閱機構管理員角色的詳細資訊。
如要管理值區的禁止公開存取設定,請要求管理員授予您該值區的儲存空間管理員 (roles/storage.admin
) 角色。這個角色具備管理值區禁止公開存取功能所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.buckets.update
storage.buckets.setIamPolicy
如要進一步瞭解 Storage 管理員角色的其他權限,請參閱 Storage 管理員角色的詳細資訊。
審查注意事項
開始前,建議您確認禁止公開存取權不會導致任何工作流程中斷。詳情請參閱「在現有資源上強制執行時的考量事項」。
使用值區設定
本節說明如何對個別值區強制執行及移除禁止公開存取的功能,以及如何檢查個別值區的狀態。
設定禁止公開存取
如要變更個別值區的公開存取預防設定,請按照下列步驟操作:
控制台
- 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。
在值區清單中,點選要強制執行或移除「禁止公開存取」的值區名稱。
在「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,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區上強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區上強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在值區中強制禁止公開存取:
下例示範如何將值區的公開存取限制設為 inherited
:
REST API
JSON API
建立包含下列資訊的 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 無法用於管理不可公開存取限制。請改用 Google Cloud 控制台等其他 Cloud Storage 工具。
查看禁止公開存取狀態
如要查看個別值區的禁止公開存取狀態,請按照下列步驟操作:
控制台
- 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。
按一下要查看其禁止公開存取狀態的 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
使用
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 無法用於管理不可公開存取限制。請改用 Google Cloud 控制台等其他 Cloud Storage 工具。
使用機構政策
本節說明如何強制執行及移除禁止公開存取的機構政策,以及如何查看政策狀態。
設定禁止公開存取
如要在專案、資料夾或機構層級設定禁止公開存取功能,請按照下列步驟操作:
控制台
請按照「建立及管理機構政策」一文的操作說明,使用 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。
如需更多操作說明,請參閱「使用限制」。