バケット ポリシーのみ

は、

このページでは、バケット ポリシーのみ機能について説明します。この機能を使用すると、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ドメインで制限された共有など、ACL ではなく Cloud IAM ポリシーを介して付与されたアクセス権のみを追跡する GCP セキュリティ機能を使用したい。

  • オブジェクトのアップローダが常にオブジェクトの完全な制御を持つことを許可したくない。

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

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

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

制限事項

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

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

    Stackdriver、Compute Engine の使用状況レポートまたはカスタム イメージのエクスポート、Cloud Audit Logging、Cloud SQL のエクスポート、Cloud Spanner、Cloud Billing、および Cloud Datastore

有効にした場合の動作

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

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

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

  • BucketAccessControlsDefaultObjectAccessControlsObjectAccessControls メソッドを使用して行われた 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 を取得します。

既存のバケットを移行する際の考慮事項

既存のバケットでバケット ポリシーのみを有効にする場合は、これまで ACL に基づいて付与されていたユーザーとサービスのアクセス権が確実に Cloud IAM に移行されたことを確認する必要があります。このセクションでは、バケットをバケット ポリシーのみに移行するときに実行する必要があるいくつかの手順の概要を説明します。なお、ACL と Cloud IAM の間では、バケットの権限が同期されているため、確認が必要なのはバケット内のオブジェクトへのアクセス権についてであり、バケットへのアクセス権でないことのでご注意ください。

バケットレベルの IAM 権限によるデータの過度な露出を確認する

Cloud IAM に対して ACL に相当する権限を割り当てる前に、次の点を考慮してください。

  • バケットレベルで適用された Cloud IAM 権限はバケット内のすべてのオブジェクトに適用されますが、オブジェクト 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 を変更するために送信されたリクエストの数。

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

これらの指標の値が、ユーザーやサービスがオブジェクトへのアクセスに関して ACL に依存していることを示す場合は、バケット ポリシーのみを有効にする前に、Cloud IAM における同等の権限をバケットに割り当てておく必要があります。

バケットのデフォルトのオブジェクト ACL を確認する

すべてのバケットにはデフォルトのオブジェクト ACL が関連付けられています。オブジェクトをバケットに追加する際に明示的に指定しない限り、バケットに追加された新しいオブジェクトにはこのデフォルトのオブジェクト ACL が適用されます。

バケット ポリシーのみを有効にする前に、バケットが持つデフォルトのオブジェクト ACL を確認してください。バケット ポリシーのみを有効にした後にデフォルトのオブジェクト ACL に関連付けられた権限を付与するかどうかについて検討してください。付与する場合は、Cloud IAM における同等の権限をバケットに割り当てます。

Cloud IAM における同等の権限をオブジェクト ACL に割り当てる

Cloud IAM が現在許可していないアクセス権をオブジェクト ACL が許可している場合があります。バケット ポリシーのみを有効にしたときに既存のユーザーがオブジェクトへのアクセスを失わないようにするには、次の表を使用して対象ユーザーに適切な Cloud IAM 役割を割り当てます

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

次のステップ

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

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

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