Cloud Storage のバケットとオブジェクトへのアクセス権を持つユーザーと、アクセスのレベルを制御します。
均一アクセスまたはきめ細かいアクセス制御を選択する
バケットを作成するときに、均一アクセスときめ細かいアクセスのどちらで権限を適用するかを決める必要があります。
均一(推奨): 均一なバケットレベルのアクセスを使用すると、Identity and Access Management(IAM)のみを使用して権限を管理できます。IAM は、バケット内のオブジェクトまたはオブジェクトのグループに含まれ、共通の名前接頭辞を持つすべてのオブジェクトに権限を適用します。IAM では、マネージド フォルダ、IAM Conditions、ドメインで制限された共有、Workforce Identity の連携など、ACL では使用できない機能も使用できます。
きめ細かい管理: [きめ細かい管理] オプションを使用すると、IAM とアクセス制御リスト(ACL)を併用して権限を管理できます。ACL は、Amazon S3 と相互運用できるように設計された Cloud Storage 用のレガシー アクセス制御システムです。ACL では、オブジェクト単位でアクセス権を指定することもできます。
きめ細かいアクセスでは、2 つの異なるアクセス制御システム間で調整が必要になります。このため、意図しないデータ漏洩が発生する可能性が高くなり、リソースにアクセスできるユーザーの監査は複雑になります。特に、個人を特定できる情報などの機密データを含むオブジェクトが存在する場合は、均一なバケットレベルのアクセスを有効にしてバケットにデータを保存することをおすすめします。
ACL での IAM 権限の使用
Cloud Storage には、バケットとオブジェクトへのアクセス権を付与する方法が 2 つあります。1 つは IAM であり、もう 1 つはアクセス制御リスト(ACL)です。この 2 つは並行して機能します。ユーザーに Cloud Storage リソースへのアクセスを許可するには、どちらか一方の方法でユーザーに権限を付与するだけでかまいません。たとえば、バケットの IAM ポリシーで数人のユーザーのみにバケット内のオブジェクト データの読み取りを許可していて、バケット内のオブジェクトの 1 つに一般公開されている ACL がある場合、そのオブジェクトが公開されます。
通常は、IAM を使用してリソースへのアクセスを制御することをおすすめします。IAM は、Google Cloud 全体の権限を制御し、バケットレベルとプロジェクト レベルで権限を付与できます。意図しない情報公開のリスクを軽減するために、バケット内の複数のオブジェクトに適用される権限には IAM を使用することをおすすめします。IAM のみを使用するには、均一のバケットレベルのアクセス権を有効にして、すべての Cloud Storage リソースに対する ACL を禁止します。
ACL は Cloud Storage リソースの権限のみを制御し、権限オプションは制限されますが、個々のオブジェクトに権限を付与できます。ACL は次のような場合に使用します。
- バケット内の個々のオブジェクトへのアクセス権をカスタマイズする場合。
- Amazon S3 からデータを移行する場合。
その他のアクセス制御オプション
IAM と ACL のほかに、次のツールを使用してリソースへのアクセスを制御できます。
署名付き URL(クエリ文字列認証)
署名付き URL を使用して、生成した URL を通じて、オブジェクトへの読み取りアクセスや書き込みアクセスを期間限定で付与します。URL を共有する全員が、ユーザー アカウントを持っているかどうかにかかわらず、指定した期間、オブジェクトにアクセスできます。
IAM と ACL に追加して、署名付き URL を使用できます。たとえば、IAM を使用してバケットに対するアクセス権を数人のユーザーにのみ付与した後、そのバケット内の特定のリソースに他のユーザーがアクセスできるようにする署名付き URL を作成できます。
署名付き URL の各作成方法をご覧ください。
署名付きポリシー ドキュメント
署名付きポリシー ドキュメントを使用して、バケットにアップロードできる内容を指定します。ポリシー ドキュメントでは、サイズ、コンテンツの種類などのアップロード特性を、署名付き URL よりも細かく制御できます。ウェブサイトの所有者はポリシー ドキュメントを使用して、訪問者に Cloud Storage へのファイルのアップロードを許可できます。
IAM と ACL に追加して、署名付きポリシー ドキュメントを使用できます。たとえば、IAM を使用して、組織内のユーザーがオブジェクトをアップロードできるようにした後、特定の条件を満たすオブジェクトのみをウェブサイト訪問者がアップロードできるようにする署名付きポリシー ドキュメントを作成できます。
Firebase セキュリティ ルール
Firebase セキュリティ ルールを使用すると、Firebase SDK for Cloud Storage を使用して、モバイルアプリとウェブアプリに対してきめ細かい属性ベースのアクセス制御を行えます。たとえば、誰がオブジェクトをアップロードまたはダウンロードできるか、オブジェクトの大きさはどれくらいか、またはオブジェクトをいつダウンロードできるかを指定できます。
公開アクセスの防止
公開アクセスの防止を使用して、バケットとオブジェクトへの公開アクセスを制限します。公開アクセスの防止を有効にすると、allUsers
と allAuthenticatedUsers
によりアクセス権を付与されているユーザーは、データにアクセスできなくなります。
認証情報のアクセス境界
認証情報のアクセス境界を使用して、OAuth 2.0 アクセス トークンで使用できる権限の範囲を限定します。まず、トークンがアクセスできるバケットと、そのバケットで使用可能な権限の上限を指定する認証情報のアクセス境界を定義します。次に、OAuth 2.0 アクセス トークンを作成し、認証情報のアクセス境界を考慮した新しいアクセス トークンと交換します。
バケット IP フィルタリング
バケット IP フィルタリングを使用して、リクエストの送信元 IP アドレスに基づいてバケットへのアクセスを制限します。バケット IP フィルタリングは、不正なネットワークがバケットとそのデータにアクセスできないようにすることで、セキュリティを強化します。許可された IP アドレス範囲のリストを構成できます。これには、パブリック IP アドレス、パブリック IP アドレスの範囲、Virtual Private Cloud 内の IP アドレスが含まれます。リストにない IP アドレスからのリクエストはすべてブロックされます。その結果、バケットにアクセスできるのは承認されたユーザーのみになります。
次のステップ
- IAM 権限の使用方法を学習する。
- Cloud Storage に固有の IAM の権限とロールを確認する。
- バケットとオブジェクトの ACL の設定に関連する共有と共同作業のシナリオの例を確認する。
- 公共インターネット上でデータに誰でもアクセスできるようにする方法を確認する。
- 署名付き URL の使用方法を確認する。