投稿

AWS にログインした後に Switch Role を使う

本記事では、AWS Console の Switch Role(クロスアカウントでのロール切替)を解説し、Trust Relationship と Policy の設定方法を紹介します。

AWS にログインした後に Switch Role を使う

AWS Cloud Console へのログイン方法はいくつかあります。

root アカウントでログインする方法(非推奨)、

IAM User の認証情報でログインする方法、

SAML(例: Azure AD)連携でログインする方法、

AWS SSO でログインする方法です。

その中でも特に実務でよく使われる方法が 1 つあります。

まず 1 つの AWS アカウントにログインし、

その後 Switch Role を使って

別の AWS アカウントに切り替える方法です。

この記事では、この方式の考え方と

設定手順を紹介します。

図で見るログイン方式の違い

代表的な流れを簡略化すると、次のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
[Root / IAM User / SSO でログイン]
                 |
                 v
      [ソースアカウントの Console に入る]
                 |
            (Switch Role)
                 |
                 v
      [ターゲットアカウントの Role に切替]
                 |
                 v
         [ターゲット資源を操作]

結果だけを見ると、どの方式も「Console に入る」点は同じです。

ただし、権限設計の観点では意味が大きく異なります。

方式利用する主体長期利用の推奨典型的な利用シーン
Root アカウントAccount Root Userいいえ初期設定、まれな緊急対応
IAM User固定のユーザー資格情報組織方針による小規模チーム、SSO 未導入
SAML/SSO企業アイデンティティ基盤はい中〜大規模組織、集中管理
Switch Roleソースにログイン後ロール切替はいクロスアカウント運用、本番分離

なぜ必要なのか

多くのチームでは、本番環境を専用アカウントとして分離します。

普段は一般作業用アカウントで業務を行い、

本番対応が必要なときだけ Switch Role で入ります。

考え方としては、本番前の踏み台に近いです。

この構成には少なくとも 3 つの利点があります。

  1. 高権限が長期間露出するリスクを下げられる
  2. 日常利用の主体と本番責務を明確に分離できる
  3. CloudTrail 監査で「誰がいつどのロールに切替えたか」を追いやすい

実務では、Switch 可能な Role を明確な境界として扱えます。 先に本人確認、次にロール許可、その後に機密資源へアクセス、という流れです。

設定手順

ここでは最も一般的なクロスアカウント構成を例にします。

  1. ユーザーがソースアカウント(A)にログイン
  2. ターゲットアカウント(B)で、A から Assume 可能な Role を作成
  3. Console で Switch Role を使って B に切替

手順 1: ターゲット側で IAM Role を作成

ターゲットアカウント(B)で Role を作る際、

先に Permission Policy を定義します。

例として、CloudWatch Logs の参照と EC2 の参照のみ許可する Policy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents",
        "ec2:DescribeInstances"
      ],
      "Resource": "*"
    }
  ]
}

手順 2: Trust Relationship を設定

次に、ターゲット側 Role の信頼ポリシーで、

ソースアカウント(A)の特定 IAM User/Role を許可します。

よくある例(ソース側 ops-admin Role を許可):

1
2
3
4
5
6
7
8
9
10
11
12
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<source_account_id>:role/ops-admin"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

より厳格にする場合は、MFA などの条件を追加できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<source_account_id>:role/ops-admin"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}

手順 3: ソース側にも AssumeRole 権限を付与

ソースアカウント(A)のユーザー/ロールには、

ターゲット Role に対する sts:AssumeRole 権限が必要です。

これがないと切替できません。

1
2
3
4
5
6
7
8
9
10
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::<target_account_id>:role/<target_role_name>"
    }
  ]
}

手順 4: Console で Switch Role を実行

右上のアカウントメニューから Switch role を選び、

次を入力します。

  1. Account ID(ターゲットアカウント)
  2. Role name(ターゲットロール名)
  3. Display name(識別しやすい表示名)

成功すると Console 右上の主体表示が切り替わり、

同じブラウザセッション内で別ロール権限を使っている状態になります。

よくあるエラーと確認ポイント

1) AccessDenied: not authorized to perform sts:AssumeRole

多くは、ソース側に sts:AssumeRole 権限がない、

またはターゲット側 Trust Relationship の Principal が誤っているケースです。

2) Role は見えるのに切替できない

Account ID と Role name を再確認してください。

また、ターゲット側の Role なのか(ソース側同名 Role ではないか)も確認します。

3) 切替成功後に資源が見えない

ターゲット Role の Permission Policy が不足している、

あるいは参照 Region が違うことが多いです。

ログイン方式の使い分け

簡易的な判断基準は次の通りです。

  1. 学習用途や一時操作: IAM User(短期なら可)
  2. チームの本番運用: SSO + Switch Role
  3. 高機密アカウント(本番など): 常時権限なし、必要時のみ Switch Role

実務で安定しやすい構成は、

SSO で本人認証を行い、

その後 Switch Role でアカウントと責務ごとに切替える形です。

まとめ

Switch Role の価値は、単なるクロスアカウントの利便性だけではありません。

本質は、主体と権限を分離できる点にあります。

これにより、高リスク環境へのアクセスをより制御しやすくなります。

一言でまとめると:

普段は低権限で作業し、必要な時だけ対象ロールへ短時間切替える。

これが AWS マルチアカウント運用で非常に重要な実践です。

参考資料

  1. AWS IAM User Guide - Switching to a role (console): https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html
  2. AWS IAM User Guide - Tutorial: Delegate access across AWS accounts using IAM roles: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
  3. AWS IAM JSON policy elements reference: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html
この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。

トレンドのタグ