AssumeRoleとセッションの有効期間
プリンシパルが自身のアイデンティティをロールの権限に切り替える方法を学びます。
「AssumeRoleとセッションの有効期間」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
権限のためのアイデンティティ交換
AssumeRoleオペレーションを使用すると、プリンシパルは自身のアイデンティティを一時的にロールの権限と交換できます。その結果、時間制限付きのセッションが作成されます。セッションの存続時間と権限の範囲をどのように制御するかは、セッションの存続時間がセキュリティ上のリスクに直接影響するため、SCS-C02で頻出するテーマです。
AssumeRoleセッション
AssumeRoleが成功すると、呼び出し元はarn:aws:sts::ACCOUNT:assumed-role/RoleName/SessionNameのようなARNで識別されるassumed-roleセッションとして動作します。その間、呼び出し元が持つのはロールの権限であり、元の権限ではありません。指定したセッション名は監査のために保持されます。
Duration Seconds
DurationSecondsパラメータは、セッションの存続時間を設定します。最短は900秒(15分)で、最長はロールで定義された上限までです。セッションを短くすると、漏洩した認証情報が有効であり続ける時間を短縮できるため、最小権限の考え方では、実用上可能な最短の期間が推奨されます。
セッションの最大存続時間
各ロールにはMaximumSessionDuration設定があり、1時間から12時間の範囲で指定します。この値を超えるDurationSecondsのリクエストは拒否されます。機密性の高いロールに適切な最大値を設定すると、1回のAssumeRoleでセッションが継続できる時間に上限を設けられます。これは、高リスクのロールに合わせて調整できる制御策です。
ロールチェーンの制限
あるAssumeRoleセッションが別のロールを引き受けることをロールチェーンと呼びます。AWSでは、ロールに設定された最大値にかかわらず、チェーンされたセッションを最長1時間に制限しています。この上限を理解すると、ロールがチェーンされている場合に長時間のリクエストが失敗する理由を説明できます。試験では見落としやすい細かなポイントです。
認証情報の更新
セッションには有効期限があるため、アプリケーションは処理を継続するためにロールを再度引き受ける必要があります。SDKは、インスタンスプロファイルや設定済みのロールプロファイルについて、古い認証情報の期限が切れる前に新しい認証情報を取得する処理を透過的に行います。既存のセッションを延長する方法はありません。新しいセッションを取得してください。
AssumeRoleのパラメータ
存続時間以外にも、AssumeRoleではPolicyまたはPolicyArns(権限を絞り込むセッションポリシー)、Tags(ABAC用のセッションタグ)、およびMFA用のSerialNumberとTokenCodeを指定できます。これらを使うと、AssumeRoleを実行する時点で、各セッションの範囲と保護を正確に設定できます。
MFAの必須化
ロールの信頼ポリシーではMFAを必須にできます。その場合、AssumeRoleにはMFAデバイスのARNと現在のトークンコードを含める必要があります。これにより、盗まれた認証情報だけでは権限の高いロールを引き受けられなくなります。短いセッションとMFAを組み合わせることは、機密性の高いロールに対する、試験でも推奨される強力な制御策です。
"Condition": {
"Bool": { "aws:MultiFactorAuthPresent": "true" }
}アクティブなセッションの取り消し
個別の一時認証情報を削除することはできませんが、選択した時刻より前に発行されたトークンによるアクションを拒否するインラインポリシーをアタッチすることで、ロールのすべてのアクティブなセッションを取り消すことができます。このときaws:TokenIssueTime条件を使用します。コンソールの「アクティブなセッションを取り消す」ボタンはまさにこの処理を実行するもので、インシデント対応における重要なツールです。
短いセッションが役立つ理由
セッションの存続時間を短くすると、一時認証情報が漏洩しても、すぐに使えなくなります。取り消し、MFA、最小権限のセッションポリシーと組み合わせることで、攻撃可能な時間を大幅に短縮できます。試験では、認証情報が有効であり続ける時間を最小限にする選択肢が好まれます。
全体のまとめ
AssumeRoleは、ロールのMaximumSessionDurationの範囲内でDurationSecondsによって存続時間が決まる、時間制限付きのセッションを作成します。ロールチェーンでは上限が1時間になります。ポリシー、タグ、MFAを使って各セッションの範囲を設定し、TokenIssueTimeを使った取り消しの仕組みで、侵害されたセッションを直ちに無効化してください。短く、範囲を絞ったセッションを安全なデフォルトとします。
クイックチェック
セッションの存続時間に関する知識を確認しましょう。
まとめ
AssumeRoleは、15分からロールのMaximumSessionDuration(最大12時間)まで存続するassumed-roleセッションを作成します。ロールチェーンでは上限が1時間になります。セッションポリシー、タグ、MFAを使ってセッションの範囲を設定してください。aws:TokenIssueTimeを使った拒否の仕組みで、侵害されたセッションを取り消します。短く、範囲を絞ったセッションを優先してください。
よくある質問
「AssumeRoleとセッションの有効期間」レッスンは無料ですか?
はい。「AssumeRoleとセッションの有効期間」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「AssumeRoleとセッションの有効期間」で何を学びますか?
プリンシパルが自身のアイデンティティをロールの権限に切り替える方法を学びます。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「AssumeRoleとセッションの有効期間」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- STSが一時認証情報を発行する仕組み
- AssumeRoleとセッションの有効期間
- 外部IDと混乱した代理人問題
- セッションポリシーとタグベースのスコープ設定