アイデンティティベースとリソースベースのポリシー
アイデンティティに関連付けるポリシーと、リソースに設定するポリシーを比較します。
「アイデンティティベースとリソースベースのポリシー」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
アタッチ先は 2 つ
AWS の権限は、2 つの場所にアタッチされたポリシーから生じます。アイデンティティ(ユーザー、グループ、ロール)にアタッチする場合と、リソース(S3 バケットや KMS キーなど)にアタッチする場合です。どの種類が適用され、どのように組み合わされるかを理解することは試験に不可欠です。クロスアカウントアクセスは、この違いに完全に左右されるためです。
アイデンティティベースのポリシー
アイデンティティベースのポリシーは IAM プリンシパルにアタッチされ、そのプリンシパルが実行できる操作を定義します。プリンシパル自身にアタッチされるため、Principal 要素はありません。AWS 管理ポリシー、カスタマー管理ポリシー、インラインポリシーがあり、権限を付与する最も一般的な方法です。
リソースベースのポリシー
リソースベースのポリシーはリソースに直接アタッチされ、アクセスを許可する対象を指定する Principal 要素を含みます。S3 バケットポリシー、KMS キーポリシー、SQS キューポリシー、Lambda 関数ポリシーなどが例です。1 つのリソースについて、誰(Principal)に何を許可するか(Action)を指定します。
バケットポリシーの例
この S3 バケットポリシーは、別のアカウントに読み取りアクセスを許可します。Principal には信頼するアカウントが指定されています。この指定ができるのはリソースベースのポリシーだけです。
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::444455556666:root" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::shared-data/*"
}同一アカウントの仕組み
単一アカウント内では、アイデンティティベースのポリシーとリソースベースのポリシーは和集合として組み合わされます。つまり、どちらか一方が許可し、拒否されていなければ、リクエストは許可されます。したがって、ユーザーのポリシーまたはバケットポリシーのどちらかが許可していれば、S3 オブジェクトにアクセスできます。どちらか一方がアクセスを開けば十分です。
クロスアカウントの仕組み
クロスアカウントアクセスでは、より厳格なルールが適用され、両方の側で許可する必要があります。プリンシパル側にはアクションを許可するアイデンティティベースのポリシーが必要で、かつ相手のアカウントにあるリソースベースのポリシーでも、そのプリンシパルへのアクセスを許可する必要があります。どちらか一方が欠けるとリクエストは拒否されます。これは試験で頻繁に問われる違いです。
ロールにはリソースポリシーがない
ロールの信頼ポリシーは、技術的にはリソースベースのポリシーの一種です。そのため、クロスアカウントでロールを引き受けるには、信頼ポリシーに加えて、呼び出し元の sts:AssumeRole アイデンティティ権限が必要です。信頼ポリシーをリソースベースとして認識すると、アクセスがどのように許可されるかを一貫した考え方で理解できます。
対応しているサービス
すべてのサービスがリソースベースのポリシーをサポートしているわけではありません。対応する主なサービスは、S3、KMS、SQS、SNS、Lambda、Secrets Manager、ECR です。サービスがリソースポリシーに対応していない場合、クロスアカウントアクセスはロールの引き受けによって許可する必要があります。選択した方法が対象サービスで実際に可能かどうかを、試験で問われることがあります。
適切な種類の選択
「このチームはこれらの操作を実行できる」という一般的な権限には、アイデンティティベースのポリシーを使用します。特定の外部プリンシパルにアクセスを許可する場合、対応サービスでクロスアカウント共有を有効にする場合、またはリソース自体に付随する権限を設定する場合は、リソースベースのポリシーを使用します。
両方の側を監査する
アクセスはどちらの側からも発生する可能性があるため、監査では両方を確認する必要があります。IAM Access Analyzer はリソースベースのポリシーを調べ、外部または一般公開されているリソースを見つけます。アイデンティティ側では、ポリシーシミュレーションと最終アクセス情報が役立ちます。完全なレビューでは、どちらか一方の種類だけを確認して終わらせません。
全体のまとめ
同一アカウントのアクセスは和集合(どちらかのポリシーが許可すればよい)ですが、クロスアカウントアクセスでは、アイデンティティポリシーとリソースポリシーの両方で許可する必要があります。アイデンティティポリシーには Principal がなく、リソースポリシーにはあります。シナリオに合ったポリシーの種類を選び、どのサービスがリソースベースのポリシーに対応しているかも覚えておきましょう。
理解度チェック
ポリシーの種類を判断する力を確認しましょう。
まとめ
アイデンティティベースのポリシーはプリンシパルにアタッチされ、Principal 要素を持ちません。リソースベースのポリシーはリソースにアタッチされ、Principal を指定します。同一アカウントのアクセスは両者の和集合であり、クロスアカウントアクセスでは両方の許可が必要です。リソースポリシーに対応しているサービスは一部(S3、KMS、SQS、SNS、Lambda、Secrets Manager、ECR)だけなので、それ以外ではロールの引き受けを使用します。
よくある質問
「アイデンティティベースとリソースベースのポリシー」レッスンは無料ですか?
はい。「アイデンティティベースとリソースベースのポリシー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「アイデンティティベースとリソースベースのポリシー」で何を学びますか?
アイデンティティに関連付けるポリシーと、リソースに設定するポリシーを比較します。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「アイデンティティベースとリソースベースのポリシー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IAMポリシードキュメントの構造
- アイデンティティベースとリソースベースのポリシー
- ポリシー評価の決定フロー
- 条件、ワイルドカード、ポリシー変数