Open1

S3のパブリックアクセスブロック設定についてBing AIに聞いてみた

ふじしろふじしろ

対象ページ
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html

Q:

  • BlockPublicAcls
  • BlockPublicPolicy
  • IgnorePublicAcls
  • RestrictPublicBuckets
    上記の設定がそれぞれどのような意味を持つのか具体的な事例を元に解説

A:
Amazon S3のパブリックアクセスブロックには、4つの設定があります。これらの設定は独立しており、任意の組み合わせで使用できます。各設定は、アクセスポイント、バケット、またはAWSアカウント全体に適用できます¹。

  • BlockPublicAcls: このオプションを有効にすると、指定されたアクセスコントロールリスト(ACL)がパブリックの場合、PUT Bucket acl呼び出しとPUT Object acl呼び出しは失敗します。ただし、バケットとオブジェクトの既存のポリシーとACLは変更されません¹。
  • BlockPublicPolicy: このオプションをバケットに対し有効にすると、指定されたバケットポリシーでパブリックアクセスが許可されている場合、Amazon S3はPUT Bucketポリシーへの呼び出しを拒否します¹。
  • IgnorePublicAcls: このオプションを有効にすると、Amazon S3はバケットとそれに含まれるオブジェクトのすべてのパブリックACLを無視します。この設定を使用すると、パブリックACLを含むPUT Object呼び出しを許可しながら、ACLによって許可されたパブリックアクセスを安全にブロックできます¹。
  • RestrictPublicBuckets: このオプションを有効にすると、Amazon S3はバケットまたはオブジェクトへのパブリックアクセスを制限します。具体的には、次のような動作が行われます¹。
    • パブリックアクセスが許可されている場合、GET Bucket aclおよびGET Object acl呼び出しは失敗します。
    • パブリックアクセスが許可されている場合、GET Bucket policyおよびGET Bucket location呼び出しは失敗します。
    • パブリックアクセスが許可されている場合、GET Object呼び出しは失敗します。

これらの設定を使用することで、Amazon S3バケットやオブジェクトへのパブリックアクセスを制御することができます。詳細については、AWSドキュメントを参照してください。

ソース: Bing との会話
(1) Amazon S3 ストレージへのパブリックアクセスのブロック .... https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html.
(2) Amazon S3 ストレージへのパブリックアクセスのブロック .... https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html.
(3) s3-account-level-public-access-blocks-periodic - AWS Config. https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/s3-account-level-public-access-blocks-periodic.html.
(4) AWS SDKやCLIでS3に対するアカウントレベルの操作を行う場合 .... https://qiita.com/hayao_k/items/daf0337926f199fb7462.

Q:
つまりどういうことなのか、それぞれ簡潔にワンライナーで解説してください
A:
BlockPublicAcls: パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しをブロックします。
BlockPublicPolicy: パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しをブロックします。
IgnorePublicAcls: バケットとオブジェクトのすべてのパブリックACLを無視します。
RestrictPublicBuckets: バケットまたはオブジェクトへのパブリックアクセスを制限します。
これらの設定は、Amazon S3バケットやオブジェクトへのパブリックアクセスを制御するために使用できます。詳細については、[AWSドキュメント]を参照してください。

Q:
今の文脈における下記の用語の意味をそれぞれ解説してください。

  • パブリックACL
  • パブリックアクセス

A:

  • パブリックACL: パブリックACLとは、Amazon S3バケットまたはオブジェクトに設定されたアクセスコントロールリスト(ACL)で、パブリックアクセスが許可されているものを指します。これにより、誰でもそのバケットまたはオブジェクトにアクセスできるようになります。
  • パブリックアクセス: パブリックアクセスとは、Amazon S3バケットまたはオブジェクトが、認証されていないユーザー(つまり、誰でも)からアクセス可能な状態にあることを指します。パブリックアクセスは、バケットポリシーまたはACLによって許可されることがあります。

Q:
ありがとうございます。
パブリックアクセスブロックの4つの設定のT/Fの組み合わせとそれによるアクセスブロックの状態を表にまとめて出力してください。

A:
Amazon S3のパブリックアクセスブロックには、4つの設定があります。これらの設定は独立しており、任意の組み合わせで使用できます。各設定は、アクセスポイント、バケット、またはAWSアカウント全体に適用できます。

BlockPublicAcls BlockPublicPolicy IgnorePublicAcls RestrictPublicBuckets アクセスブロックの状態
False False False False パブリックアクセスが許可されます
True False False False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされます
False True False False パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされます
True True False False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされます
False False True False バケットとオブジェクトのすべてのパブリックACLが無視されます
True False True False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます
False True True False パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます
True True True False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます
False False False True バケットまたはオブジェクトへのパブリックアクセスが制限されます
True False False True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます
False True False True パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます
True True False True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます
False False True True バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます
True False True True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます
False True True True パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます
True True True True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます

これらの設定を使用することで、Amazon S3バケットやオブジェクトへのパブリックアクセスを制御することができます。詳細については、[AWSドキュメント]を参照してください。

Q:
ありがとうございます。
先程の表の"アクセスブロックの状態"列の内容を簡潔にワンライナーで記述した列を追加して再度表を出力してください。

A:
どういたしまして。
先程の表の"アクセスブロックの状態"列の内容を簡潔にワンライナーで記述した列を追加しました。以下が再度表になります。

BlockPublicAcls BlockPublicPolicy IgnorePublicAcls RestrictPublicBuckets アクセスブロックの状態 ワンライナー
False False False False パブリックアクセスが許可されます 何もブロックされません
True False False False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされます パブリックACLの設定がブロックされます
False True False False パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされます パブリックアクセスのポリシーがブロックされます
True True False False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされます パブリックACLとパブリックアクセスのポリシーがブロックされます
False False True False バケットとオブジェクトのすべてのパブリックACLが無視されます パブリックACLが効果を発揮しません
True False True False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます パブリックACLの設定と効果がブロックされます
False True True False パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます パブリックアクセスのポリシーとパブリックACLが効果を発揮しません
True True True False パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視されます パブリックACLとパブリックアクセスのポリシーと効果がすべてブロックされます
False False False True バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックアクセスが制限されます
True False False True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックACLとパブリックアクセスが制限されます
False True False True パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックアクセスのポリシーとパブリックアクセスが制限されます
True True False True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックACLとパブリックアクセスのポリシーとパブリックアクセスが制限されます
False False True True バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックACLが効果を発揮せず、パブリックアクセスが制限されます
True False True True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックACLの設定と効果とパブリックアクセスが制限されます
False True True True パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックアクセスのポリシーと効果とパブリックアクセスが制限されます
True True True True パブリックACLを持つPUT Bucket aclおよびPUT Object acl呼び出しと、パブリックアクセスを許可するバケットポリシーのPUT Bucket policy呼び出しがブロックされ、バケットとオブジェクトのすべてのパブリックACLが無視され、バケットまたはオブジェクトへのパブリックアクセスが制限されます パブリックACLとパブリックアクセスのポリシーと効果とパブリックアクセスがすべて制限されます

これらの設定を使用することで、Amazon S3バケットやオブジェクトへのパブリックアクセスを制御することができます。詳細については、[AWSドキュメント]を参照してください。