S3 Block Public Accessとバケットポリシーを理解する
S3の非公開化を、BPAによる公開抑止とポリシーによる必要な利用者への許可に分けて学びます。
この単元で学ぶこと
- 公開抑止の設定を区別する
- S3の操作と資源の許可を設計する
- 複数のアクセス制御を評価する
本文解説
1. 公開と認可 S3はオブジェクトをキーで保存するサービスです。インターネットからサービスへ到達できることと、匿名の利用者がデータを読めることは別です。社内資料は公開を抑止し、業務ロールだけに読取りを許可します。
2. BPAの役割 Block Public Accessは、誤った公開許可を抑えるガードレールです。アカウントやバケット等の適用レベルを確認します。バケットだけを解除しても、上位で有効な制限を打ち消せません。BPA自体が業務利用者へのAllowを作るわけでもありません。
3. ACLの二つの設定 BlockPublicAclsは新しい公開ACLの設定要求を拒否します。IgnorePublicAclsは公開ACLによる許可を無視します。禁止する要求と無視する既存許可を区別しましょう。既存ACLを一括削除する操作ではありません。
4. ポリシーの二つの設定 BlockPublicPolicyは新しい公開バケットポリシーの設定を拒否します。RestrictPublicBucketsは公開ポリシーがあるバケットのアクセスを制限し、許可された同一アカウントやAWSサービス等へ絞ります。公開ポリシー中のクロスアカウント許可にも影響し得ます。
5. 読む操作と一覧する操作 業務ロールへreports/配下だけを読む権限を渡すなら、GetObjectと対象オブジェクトARNを考えます。ListBucketはバケット内の一覧を得る別の操作です。一覧ができても本文を読めるとは限らず、本文の読取りだけが必要な設計もあります。
6. 所有権と明示的拒否 Bucket owner enforcedではACLを無効にしポリシーで認可を管理します。適用される明示的DenyはAllowより優先します。EC2アプリには長期アクセスキーを埋め込まず、必要な権限を持つIAMロールを使用します。
7. 暗号化も別の層 保存時暗号化だけでは公開を防げません。通信にはTLSを要求し、SSE-KMSの読取りではS3の権限に加えてKMS側も確認します。到達経路、S3の認可、鍵の認可はそれぞれ失敗原因になります。
8. 変更時の確認 BPAを解除しても既存の公開ポリシーやACLは消えません。解除によって以前の許可が有効になる危険を調べます。まず業務上必要な主体・操作・資源を記録し、想定ロールでの成功と匿名アクセスの失敗を確かめます。
図解
重要ポイント
- BPAは公開抑止、ポリシーは具体的認可を担う。
- オブジェクト読取りとバケット一覧は別操作。
- 暗号化と非公開化を混同しない。
間違えやすい点
- BPAがIAMのAllowを作ると考える。
- 暗号化したから匿名公開しても安全と考える。
- 上位BPAをバケット設定だけで解除できると考える。
用語解説
- BPA
- 公開ACLや公開ポリシー等による露出を抑止する設定。
- 資源ベースのポリシー
- バケット等の資源側に付けるアクセス制御。
- 明示的Deny
- 対象の要求を明確に拒否するポリシー効果。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
- https://docs.aws.amazon.com/aws-certification/latest/solutions-architect-associate-03/solutions-architect-associate-03.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
確認問題の出題・採点や学習履歴の保存にはログインが必要です。