バケット ポリシーのみ

は、

このページでは、バケット ポリシーのみ機能について説明します。この機能を使用すると、Cloud Storage リソースに一貫したアクセス制御を行うことができます。この機能をバケットで有効にすると、バケットレベルの Cloud Identity and Access Management(Cloud IAM)権限で、バケットとそれに含まれるオブジェクトにアクセスできます。アクセス制御リスト(ACL)は無効になり、ACL で付与されたアクセス権は取り消されます。この機能の使用方法については、バケット ポリシーのみの使用をご覧ください。

概要

Cloud Storage には、バケットとオブジェクトへのアクセスを制御する方法が 2 つあります。1 つは Cloud Identity and Access Management(Cloud IAM)、もう 1 つはアクセス制御リスト(ACL)です。この 2 つは並行して機能します。ユーザーに Cloud Storage リソースへのアクセスを許可するには、いずれかの方法でユーザーに権限を付与する必要があります。Cloud IAM は GCP 全体で使用され、バケットレベルやプロジェクト レベルできめ細かく権限を付与できます。ACL は Cloud Storage でのみ使用されます。権限オプションは少なくなりますが、オブジェクト単位で権限を付与できます。

Cloud Storage のバケット ポリシーのみ機能を使用すると、統一した権限管理を行うことができます。この機能を使用すると、Cloud Storage リソースに対する ACL がすべて無効になり、Cloud Storage リソースへのアクセスは Cloud IAM によって制御されます。

バケット ポリシーのみを使用する場合

バケット ポリシーのみ機能は、次のような場合に使用します。

  • 1 つの権限管理システムで Cloud Storage リソースへのアクセスを制御したい。

  • GCP リソース全体で一貫したアクセス制御を実施したい。

  • バケット内のオブジェクトが多く、オブジェクト単位でアクセスを管理したくない。

  • Cloud Audit Loggingドメインで制限された共有など、GCP のセキュリティ機能を使用したい。これらの機能は、ACL ではなく、Cloud IAM ポリシーで付与されたアクセスのみを追跡します。

  • オブジェクトのアップローダにオブジェクトに対するフルアクセスを許可したくない。

次のような場合は、バケット ポリシーのみ機能を使用しないでください。

  • 従来の ACL でバケット内の特定のオブジェクトに対するアクセスを許可したい。

  • オブジェクトのアップローダに特定のオブジェクトに対してフルアクセスを許可したいが、バケット内の他のオブジェクトに対する権限は制限したい。

制限事項

バケット ポリシーのみには、次の制限があります。

  • Cloud Storage にエクスポートする特定の GCP サービスは、バケット ポリシーのみが有効になっているバケットにエクスポートできません。次のようなサービスが該当します。

    Stackdriver、使用状況レポートまたはカスタム イメージの Compute Engine でのエクスポート、Cloud Audit Logging、Firebase GCP 統合、Cloud SQL Exports、Cloud Spanner、Cloud Billing、Cloud Datastore など。

有効にした場合の動作

バケット ポリシーのみは、新しいバケットを作成するときに有効にできます。また、既存のバケットに対してバケット ポリシーのみを明示的に有効にすることもできます。

有効にすると、ACL の次の機能が停止します。

  • バケットとオブジェクトの ACL の設定、読み取り、変更。これらの処理をリクエストすると、400 Bad Request エラーが発生します。

  • BucketAccessControlsDefaultObjectAccessContolsObjectAccessControls メソッドを使用した JSON API リクエスト。リクエストすると 400 Bad Request エラーが発生します。

  • バケットまたはオブジェクト メタデータのフル プロジェクションの JSON API リクエスト。リクエストすると、レスポンスの一部として空の ACL リストが返されます。

  • gsutil コマンド(cp -pmv -prsync -p)。バケット ポリシーのみのバケットがソースでも宛先でもコマンドが失敗します。

  • 個々のオブジェクトの所有権。この所有権によって許可されたアクセス権は取り消され、バケットとオブジェクト メタデータのリクエストから owner フィールドがなくなります。

新しいバケットを作成するときにバケット ポリシーのみを有効にすると、バケットに追加の Cloud IAM 役割が自動的に付与されます。これにより、バケットのデフォルト オブジェクト ACL から継承したオブジェクトの権限が維持されます。既存のバケットでバケット ポリシーのみを有効にする場合は、このような役割を手動で適用する必要があります。バケットのデフォルト オブジェクト ACL を変更した場合は、異なる役割セットの適用が必要になることもあります。

元に戻した場合の動作

バケット ポリシーのみを無効にして ACL を復旧できるように、Cloud Storage は既存の ACL を 90 日間保存しています。この間にバケット ポリシーのみを無効にすると、次のようになります。

  • 保存された ACL でオブジェクトが制御されます。

  • バケット ポリシーのみを有効にした後にバケットに追加されたオブジェクトは、バケットのデフォルト オブジェクト ACL でアクセス権が付与されます。

ACL の使用状況の確認

Stackdriver には、バケットでの ACL の使用状況を追跡できる 2 つの指標があります。これらの指標を使用すると、バケット ポリシーのみを有効にした場合の影響を判断できます。

指標 説明
storage.googleapis.com/authz/acl_based_object_access_count 現在は成功しているが、バケット ポリシーのみを有効にすると失敗するオブジェクト リクエストの数。
storage.googleapis.com/authz/object_specific_acl_mutation_count 従来の ACL API に送信され、ACL の取得または変更を含むリクエストの数。

Stackdriver の指標の詳細については、指標、時系列、リソースをご覧ください。

ACL と同等の Cloud IAM

ACL と Cloud IAM のバケットに対する権限は同期しています。バケット ポリシーのみを有効にしても、バケットに対するユーザーのアクセス権に影響しません。

オブジェクトの場合、特に新しいオブジェクトでデフォルト オブジェクト ACL が設定されている場合は、Cloud IAM で現在許可されていない権限が ACL で付与されることがあります。バケット ポリシーのみを有効にしたときに既存のユーザーがオブジェクトにアクセスできるように、次の表を参考にして適切な Cloud IAM 役割をユーザーに割り当ててください。

オブジェクトに対する ACL の権限 同等の Cloud IAM の役割
READER roles/storage.legacyObjectReader
OWNER roles/storage.legacyObjectOwner

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。