セッションポリシーとタグベースのスコープ設定
ロールを引き受ける時点で権限をさらに絞り込みます。
「セッションポリシーとタグベースのスコープ設定」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
Assume時の絞り込み
ロール自体を編集せずに、ロールに付与した権限を特定のセッションで制限したい場合があります。セッションポリシーとセッションタグを使用すると、ロールを引き受けるその時点で権限を絞り込めます。これらの高度なSTS機能は、きめ細かくスケーラブルな最小権限を実現し、試験でも評価される考え方です。
セッションポリシーとは
セッションポリシーは、AssumeRoleに渡すインラインポリシーまたは管理ポリシーです(PolicyまたはPolicyArnsを使用します)。新しい権限を付与するものではなく、そのセッションでロールが持つ既存の権限をフィルタリングするだけです。実効権限は、ロールのポリシーとセッションポリシーの共通部分になります。
共通部分のロジック
結果が共通部分になるため、セッションポリシーによって、ロールがすでに許可している範囲を超える操作をセッションに許可することはできません。ロールがs3:*を許可し、セッションポリシーがs3:GetObjectだけを許可している場合、そのセッションでできるのはオブジェクトの取得だけです。このため、セッションポリシーは、より広範なロールから権限を絞り込んだ一部だけを安全に付与する方法になります。
ユースケース
よくある使用例として、強力な単一のロールをオーケストレーションツールが引き受け、ジョブごとに、そのジョブを1つのバケットまたは1つのリソースグループに制限するセッションポリシーをアタッチする方法があります。基盤となるロールの範囲が広くても、各セッションは厳密に制限されます。これにより、用途ごとに細かく設定した多数のロールを作成せずに済みます。
セッションポリシーの渡し方
このCLIスニペットは、セッションをさらに制限するインラインセッションポリシーの渡し方を示しています。これらのアクションを有効にするには、ロールですでに許可されている必要があります。
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Broad \
--role-session-name job-42 \
--policy file://restrict.jsonセッションタグの概要
セッションタグは、AssumeRoleの実行時にセッションへ付加するキーと値の属性です。Tagsパラメータで渡すと、リクエストコンテキストの一部になり、ポリシーからaws:PrincipalTagを通じて参照できます。セッションタグによって、ロールを引き受けるユーザーに関する属性を、すべての認可判断に反映できます。
タグでABACを実現する
セッションタグは、assumed roleに対するAttribute-Based Access Control (ABAC)の基盤です。ポリシーで、セッションのaws:PrincipalTag/Projectがリソースのaws:ResourceTag/Projectと等しいことを要求し、プロジェクトタグが一致する場合にのみアクセスを許可できます。1つのポリシーを多くのプロジェクトに適用できるため、きれいにスケールします。
トランジティブタグ
ロールをチェーンすると、通常のセッションタグは引き継がれません。タグをtransitiveとして指定すると、チェーン内で後続のロールを引き受けたときにもタグが保持されます。これにより、元のユーザーの部署などの属性を複数の段階にわたってアイデンティティに追従させることができ、一貫したABACに役立ちます。
タグ付けの権限
セッションタグを渡すには、sts:AssumeRoleに加えてsts:TagSession権限が必要です。信頼ポリシーでは、許可するタグキーや値を制限することもできます。誰がどのセッションタグを設定できるかを制御することで、ユーザーが権限のあるタグ値を自分で割り当ててアクセス権を得ることを防げます。
両方のツールを組み合わせる
セッションポリシーとセッションタグは連携して機能します。タグはABACの照合においてセッションが誰を表すかを示し、セッションポリシーはセッションで実行できる操作を何に制限するかを定めます。両者を組み合わせることで、1つの広範なロールから、範囲を厳密に限定した多数のセッションを安全に提供できます。これは、試験で重視される洗練されたスケーラブルな設計です。
まとめ
セッションポリシーを使用して、セッションごとにロールの権限と積集合を取り、権限を縮小します。権限を追加するために使うことはできません。セッションタグ(sts:TagSessionを使用)でaws:PrincipalTagを介したABACを制御し、ロールチェーンで引き継ぐタグには推移的な設定を付けます。これらのSTS機能により、少数の再利用可能なロールから、セッション単位の最小権限を実現できます。
クイックチェック
セッションの権限範囲を確認しましょう。
振り返り
AssumeRoleに渡すセッションポリシーは、ロールの権限と積集合を取り、権限を縮小しますが、拡大することはありません。セッションタグ(sts:TagSessionが必要)はaws:PrincipalTagを通じてABACに利用され、推移的なタグはロールチェーンをまたいで引き継がれます。両者を組み合わせることで、少数の再利用可能なロールからセッション単位の最小権限を実現できます。
よくある質問
「セッションポリシーとタグベースのスコープ設定」レッスンは無料ですか?
はい。「セッションポリシーとタグベースのスコープ設定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「セッションポリシーとタグベースのスコープ設定」で何を学びますか?
ロールを引き受ける時点で権限をさらに絞り込みます。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「セッションポリシーとタグベースのスコープ設定」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- STSが一時認証情報を発行する仕組み
- AssumeRoleとセッションの有効期間
- 外部IDと混乱した代理人問題
- セッションポリシーとタグベースのスコープ設定