AWSマネジメントコンソールのセッションタイムアウトを整理・検証してみた
はじめに
AWS マネジメントコンソールでのセッションタイムアウトについて調査する機会がありましたので、整理・検証してみました。
結論
| 認証方式 | セッション時間 |
|---|---|
| IAM ユーザー(直接ログイン) | 12 時間 |
| IAM ロール(スイッチロール) | ロールの最大セッション期間に従う(デフォルト 1 時間、最大 12 時間) |
| ロール連鎖 | 最長 1 時間 |
以下では各認証方式ごとに整理し、特にロール連鎖について詳しく説明します。
1. IAM ユーザー(直接ログイン)の場合
IAM ユーザーで AWS マネジメントコンソールにログインした場合、セッションタイムアウトは 12 時間固定です。
この値は IAM 側の設定で変更することはできません。
2. IAM ロールにスイッチした場合
IAM ユーザーから IAM ロールへ Switch Role した場合、セッションタイムアウト期間は、ロールに設定された 最大セッション期間に従います。
- デフォルト:1 時間
- 設定可能範囲:1 ~ 12 時間
また、セッション時間は ロールの最大セッション期間と、IAM ユーザーセッションの残り時間のいずれか短い方が採用されます。
- min(ロールの MaxSessionDuration, IAM ユーザーセッションの残り時間)
そのため、IAM ユーザーとして 10 時間ログインした後に最大セッション期間 12 時間の IAM ロールにスイッチしても、セッション時間は 2 時間となります。
===== 抜粋 =====
ロールを切り替えると、AWS マネジメントコンソール セッションはデフォルトで 1 時間続きます。IAM ユーザーセッションはデフォルトで 12 時間です。他のユーザーについては、異なるセッション時間が定義されている場合があります。コンソールでロールを切り替えると、ロールの最大セッション期間、またはユーザーセッションの残り時間のいずれか短い方が付与されます。ロールを引き受けることでセッション時間を延長することはできません。
===== 抜粋 =====
最大セッション期間変更の手順を知りたいよ!という方は、以下のドキュメントを参考に実施いただけます。
3. ロール連鎖の場合
前提
1 つのロールの認証情報を使用して別のロールを引き受けることをロールの連鎖と言います。
AWS マネジメントコンソールでは、デフォルト設定のままではロール連鎖は発生しません。
例えば、IAM ユーザー → ロールB とスイッチしている状態でロールCにスイッチした場合、実際には IAM ユーザー → ロールC のスイッチとして処理されます。
===== 抜粋 =====
AWS マネジメントコンソール でロールを切り替えると、コンソールは常に元の認可情報を使用して切り替えを認可します。例えば、RoleA に切り替える場合は、IAM は元の認証情報を使用して、RoleA の引き受けが許可されているかどうかを判断します。その後、RoleA を使用中に RoleB への切り替えを試みると、AWS は引き続き RoleA の認証情報ではなく元の認証情報を使用して切り替えを認可します。
===== 抜粋 =====
ロール連鎖が成立する条件
マネジメントコンソールでロール連鎖を行うには、マルチセッションを有効化する必要があります。
マルチセッションを有効化にすると、「どのセッションからロールを引き受けるか」を選択できるようになり、ロール → ロールのスイッチが成立します。
ロール連鎖時のセッションタイムアウト
ロール連鎖を行った場合のセッションタイムアウトについて、公式ドキュメントに以下の案内がされています。
===== 抜粋 =====
ロールの連鎖では、AWS マネジメントコンソール、AWS CLI、 または AWS API ロールセッションが最長 1 時間に制限されます。これは、個々のロールに対して設定されている最大セッション期間に関係なく適用されます。
===== 抜粋 =====
ロール連鎖の場合は、最大セッション期間の設定に関係なく最長 1 時間でセッションタイムアウトするようです。
疑問
私はここで、次の疑問を持ちました。
IAM ユーザーからロールにスイッチした場合は、接続元の IAM ユーザーの残りセッション時間に応じて、接続先ロールのセッション時間が変化します。
では、IAM ロールが接続元の場合も、同様に接続元ロールの残りセッション時間は接続先に影響するのでしょうか。
検証してみた
検証環境は次のとおりです。
-
マルチセッションを有効化
-
アカウントA
- IAMユーザー:
chain-test-user
- IAMユーザー:
-
アカウントB
- IAMロール:
chain-test-role-b - 最大セッション期間(MaxSessionDuration): 1 時間

- IAMロール:
-
アカウントC
- IAMロール:
chain-test-role-c - 最大セッション期間(MaxSessionDuration): 12 時間
-
信頼ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::XXXXXXXXXXXX:role/chain-test-role-b" }, "Action": "sts:AssumeRole" } ] }
- IAMロール:


本検証では、接続元となる IAM ロールのセッション残り時間が、 ロール連鎖先のセッションタイムアウトに影響するかどうか に注目します。
具体的には、ロールB(chain-test-role-b)にスイッチ後、30 分経過した状態でロールC (chain-test-role-c) へロール連鎖を行った場合に、ロールCのセッションタイムアウトがどのように決定されるかを確認します。
-
アカウントA の IAM ユーザー(chain-test-user) にログイン
-
アカウントB の IAM ロール (chain-test-role-b) にスイッチロール

-
30 分経過後、アカウントC の IAM ロール (chain-test-role-c) にスイッチロール

マルチセッションが有効化されている場合、
ロールを切り替える際に どのセッションを接続元とするか を選択することができます。
本検証では、ロールB(chain-test-role-b)のセッションを接続元として選択しました。
なお、IAM ユーザーのセッションを接続元として選択した場合は、ロールCの信頼ポリシーによりエラーになります。

スイッチ後、ロールBが左側、ロールCを右側にしてセッションタイムアウト時間を調べてみます。

ロールBは最大セッション期間が 1 時間 のため、
ロールCにスイッチしてから 30 分後 にセッションタイムアウトとなりました。
この時点でも、ロールCのセッションは引き続き有効 であることを確認しました。

ロールCは最大セッション期間が 12 時間ですが、前述の仕様の通り、スイッチしてから 1 時間後にタイムアウトになりました。

確認できたこと
- マルチセッションを有効化することで、AWS マネジメントコンソール上でも ロール連鎖が可能
- マネジメントコンソールにおけるロール連鎖では、接続元ロールのセッション残り時間は、接続先ロールのセッションタイムアウトに影響しない
- ロール連鎖した場合は最大セッション期間を 12 時間にしていても、1 時間後にタイムアウトになる。(最長1時間)
まとめ
AWS マネジメントコンソールにおけるセッションタイムアウトは、認証方式によって決まり方が異なることが分かりました。
また、ロール連鎖時には接続元の残りセッション期間によって接続先のセッション期間が変わることがないということも分かりました。
あくまで個人的な見解ですが、公式ドキュメントに記載されている最長 1 時間という表現は CLI や API でセッション時間を指定できることを考慮しているものであり、マネジメントコンソールでロール連鎖を行った場合、現状の仕様では セッション時間を指定できないため、結果として 1 時間のセッションになる と捉えています。
参考資料
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました







