アクセスポイントとオブジェクト所有権
アクセス範囲を明確に定め、リスクのあるクロスアカウントACLを避けます。
「アクセスポイントとオブジェクト所有権」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
ACLが危険な理由
従来のACL(アクセスコントロールリスト)はオブジェクト単位のアクセス許可を付与できますが、IAMやバケットポリシーよりも前から存在する仕組みであり、大規模環境では監査が困難です。
最大の危険はアカウント間アップロードです。別のアカウントが書き込んだオブジェクトをそのアカウントが所有すると、バケット所有者がそのオブジェクトを制御できなくなる可能性があります。
S3 Object Ownership
S3 Object Ownershipは、アップロードされたオブジェクトの所有者を明確にします。推奨設定のBucket owner enforcedではACLが完全に無効になり、バケット所有者がすべてのオブジェクトを自動的に所有します。
ACLを無効にすると、すべてのアクセスをIAMとバケットポリシーで一貫して管理できるため、把握や監査がはるかに容易になります。
Bucket Owner Enforced
Object OwnershipをBucket owner enforcedに設定すると、ACLは適用されなくなり、アクセスを付与することも一切できなくなります。
これは現在、新しいバケットのデフォルト設定であり、AWSが推奨するベストプラクティスです。1つの設定で、アカウント間の所有権に関する混乱やミスを招きやすい問題を完全に排除できます。
所有権の問題
アカウントAがバケットを所有し、アカウントBがそこへログをアップロードするとします。従来のACLの動作では、オブジェクトをBが所有するため、Aは自分のバケットのコンテンツを読み取ったり削除したりできません。
Bucket owner enforcedを使うと、この問題が解決します。誰がアップロードしたかに関係なく、Aがすべてのオブジェクトを自動的に所有し、バケット所有者が完全な制御を取り戻せます。
アクセスポイントとは
S3 Access Pointsは、バケットに関連付けられた名前付きネットワークエンドポイントで、それぞれが独自のアクセスポリシーを持ちます。
すべてのアプリケーションで使う巨大で複雑なバケットポリシーを1つ作る代わりに、用途ごとに専用のアクセスポイントを作成し、それぞれに単純で対象を限定したポリシーを設定します。これにより、アクセスの管理と監査がはるかに容易になります。
アクセスポイントの利点
1つの共有バケットポリシーは、利用するチームが増えるにつれて複雑で危険になります。アクセスポイントを使うと、それを小さなポリシーに分割できます。
各アクセスポイントをVPCに制限し、独自の名前と権限を設定して、個別に無効化できます。そのため、1つのチームの要件を満たすために、全員のアクセスを緩める必要はありません。
arn:aws:s3:us-east-1:111122223333:accesspoint/finance-apVPC制限付きアクセスポイント
アクセスポイントは、特定のVPC(Virtual Private Cloud)からのリクエストだけを受け付けるように設定できます。これにより、そのアクセスポイント経由でアクセスするオブジェクトは、パブリックインターネットから完全に到達不能になります。
機密データへのアクセスを、プライベートなネットワーク経路を通る内部ワークロードだけに限定するための、明確な方法です。
マルチリージョンアクセスポイント
Multi-Region Access Pointsを使うと、複数のリージョンにあるバケットへルーティングする単一のグローバルエンドポイントを利用できます。
セキュリティの観点では、グローバルに分散したデータのポリシー管理を簡素化し、自動フェイルオーバーも提供します。そのため、リージョンごとのバケット名をハードコードしなくてもアプリケーションを継続して動作させられます。
正しいアカウント間共有
アカウント間で共有する場合は、ACLではなく、バケットポリシー、アクセスポイント、Object Ownershipを組み合わせてください。
Bucket owner enforcedを設定し、対象を限定したバケットポリシーまたはアクセスポイントポリシーで別のアカウントにアクセスを許可します。これにより、ACLが引き起こす所有権の混乱なしに、監査可能で取り消し可能なアカウント間アクセスを実現できます。
アクセスポイントポリシー
各アクセスポイントには独自のアクセスポイントポリシーがあり、バケットポリシーと合わせて評価されます。バケットポリシーからアクセスポイントに委任し、アクセスポイント経由のアクセスだけを許可することもできます。
これにより、単純で制限の厳しいバケットポリシーを1つ維持しながら、アプリケーションごとの権限を、確認や取り消しが容易な小さく独立したアクセスポイントポリシーで表現できます。
ベストプラクティスのまとめ
現在のS3アクセス管理の方針は明確です。Bucket owner enforcedでACLを無効にし、IAMとバケットポリシーでアクセスを管理し、アクセスポイントを使ってアプリケーションごとのポリシーを小さく、対象を限定したものにします。
この組み合わせは、従来のACL中心の方式よりも安全で、監査も大幅に容易です。
クイックチェック
最もすっきりした解決策を選んでください。
まとめ
従来のACLは、アカウント間の所有権に関する問題を引き起こし、監査も困難です。S3のObject OwnershipをBucket owner enforcedに設定してACLを無効にし、すべてのオブジェクトを適切に所有できるようにしたうえで、IAMとバケットポリシーによってアクセスを管理してください。S3 Access Pointsを使えば、アプリケーションごとに小さく対象を限定したポリシーを設定でき、必要に応じてVPCに制限できます。グローバルなデータにはMulti-Region Access Pointsを使用します。これらを組み合わせることで、ACLを監査可能な最小権限のアクセスモデルに置き換えられます。
よくある質問
「アクセスポイントとオブジェクト所有権」レッスンは無料ですか?
はい。「アクセスポイントとオブジェクト所有権」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「アクセスポイントとオブジェクト所有権」で何を学びますか?
アクセス範囲を明確に定め、リスクのあるクロスアカウントACLを避けます。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「アクセスポイントとオブジェクト所有権」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- パブリックアクセスのブロックとバケットポリシー
- アクセスポイントとオブジェクト所有権
- Amazon Macieによる機密データの検出
- データライフサイクルと安全な削除