このページでは、公開アクセスを防止するバケットの設定と組織のポリシーの制約の使用方法について説明します。公開アクセスの防止により、バケットとオブジェクトへの公開アクセスを制限できます。
始める前に
Cloud Storage で公開アクセスの防止を使用する前に、必要な IAM ロールがあることを確認し、公開アクセスの防止の適用に関する考慮事項を確認してください。
必要なロールを取得する
プロジェクト、フォルダ、または組織レベルで公開アクセス防止の組織ポリシーを管理するには、組織の組織ポリシー管理者(roles/orgpolicy.policyAdmin)ロールを付与するよう管理者に依頼してください。この事前定義ロールには、プロジェクト、フォルダ、組織レベルで公開アクセスの防止を管理するために必要な権限が含まれています。このロールに含まれる権限については、組織管理者のロールの詳細をご覧ください。
バケットでの公開アクセス防止の設定を管理するには、バケットに対するストレージ管理者(roles/storage.admin)ロールを付与するよう管理者に依頼してください。このロールには、バケットでの公開アクセスの防止を管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
- storage.buckets.update
- storage.buckets.setIamPolicy
ストレージ管理者のロールに含まれるその他の権限については、ストレージ管理者のロールの詳細をご覧ください。
考慮事項を確認する
始める前に、公開アクセスをブロックしてもワークフローが中断されないことを確認することをおすすめします。詳細については、既存のリソースで適用する際の考慮事項をご覧ください。
バケット設定を使用する
このセクションでは、個々のバケットに対して公開アクセス防止を適用または削除する方法と、個々のバケットのステータスを確認する方法について説明します。
公開アクセスの防止を設定する
個々のバケットの公開アクセスの防止設定を変更するには:
コンソール
-  Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
- バケットのリストで、公開アクセスの防止を適用または削除するバケットの名前をクリックします。 
- [バケットの詳細] ページで、[権限] タブをクリックします。 
- [公開アクセス] カードで、[公開アクセスの防止] をクリックして公開アクセスの防止を適用するか、[一般公開アクセスを許可] をクリックして公開アクセスの防止を削除します。 
- [確認] をクリックします。 
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
適切なフラグを指定して、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
- gcloud CLI をインストールして初期化します。これにより、 - Authorizationヘッダーのアクセス トークンを生成できます。
- 次の情報が含まれる JSON ファイルを作成します。 - { "iamConfiguration": { "publicAccessPrevention": "STATE", } }- ここで、 - <var>STATE</var>は- enforcedまたは- inheritedです。
- cURLを使用して、目的の- fieldsを含む- PATCHBucket リクエストで 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 の [バケット] ページに移動します。
- 公開アクセスの防止のステータスを表示するバケットの名前をクリックします。 
- [権限] タブをクリックします。 
- [公開アクセス] カードにバケットのステータスが表示されます。 
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage buckets describe コマンドを使用し、--format フラグを指定します。
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を含む- GETBucket リクエストで 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 制約を使用して、組織のポリシーの作成と管理の手順に沿って操作します。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
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 です。たとえば、組織 ID に- 123456789012、フォルダ ID に- 245321、プロジェクト ID に- my-pet-projectを使用します。
詳しくは、制約の使用をご覧ください。
disable-enforce 使用時の出力の例を次に示します。
etag: BwVJi0OOESU=
booleanPolicy: {}
constraint: constraints/storage.publicAccessPrevention公開アクセス防止のステータスを表示する
プロジェクト、フォルダ、組織レベルで公開アクセス防止のステータスを表示するには:
コンソール
storage.publicAccessPrevention 制約を使用して、組織のポリシーの作成と管理の手順に沿って操作します。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
describe --effective コマンドを使用します。
gcloud beta resource-manager org-policies describe \ constraints/storage.publicAccessPrevention --effective \ --RESOURCE RESOURCE_ID
ここで
- RESOURCEは、公開アクセス防止のステータスを表示するリソースです。たとえば、- organization、- project、- folderです。
- RESOURCE_IDは、リソースの ID です。たとえば、組織 ID には- 123456789012、フォルダ ID には- 245321、プロジェクト ID には- my-pet-projectなどです。
詳しくは、制約の使用をご覧ください。