IAMのスイッチロールについて改めてまとめてみました

2023.04.14
IAMのスイッチロールについて改めてまとめてみました
この記事をシェアする

こんにちは!
スカイアーチHRソリューションズのRyojiです。


いつも、業務でIAMのスイッチロールを使用して作業しているのですが、その設定を修正する機会があり、少々手間取ってしまいました。

そこで、改めてスイッチロールとは?というところから調べなおしてみたので、整理して記事としてまとめてみたいと思います。

スイッチロールとは

スイッチロールとは、アクセス権限の切り替えを行うことができる、AWS IAMが提供する機能の一つです。

AWSマネジメントコンソールでのアクセス権限があるユーザーは、スイッチロールを使用することで、異なるAWSアカウント、または異なるIAMユーザーにスイッチすることができます。

これにより、複数のAWSアカウントやIAMユーザーを切り替えることなく、異なるアカウントやユーザーの操作を行うことができるようになります。

IAMユーザーの作成については下記記事を参照してみてください

スイッチロールの作成

スイッチロールを使用するには、まずスイッチロールを作成する必要があります。

  • スイッチ先のアカウントでIAMロールの作成
  • スイッチ元のアカウントでIAMポリシーを作成してIAMユーザーにアタッチ

これらの手順を順に実施していきます。

スイッチ先のアカウントでIAMロールの作成

先にも述べた通り、スイッチロールを使用することで、ログインしたアカウントから、異なるアカウントで操作を行えるようになります。

まず、その”異なるアカウント”側でIAMロールを作成していきます。

AWSマネジメントコンソールにログインして、サービスから「IAM」を選択し、「ロール」→「ロールの作成」をクリックしてください。

信頼されたエンティティタイプで、「AWSアカウント」を選択し、AWSアカウントの箇所で「別のAWSアカウント」を選択、スイッチ前のアカウントのアカウントIDを入力し、「次へ」をクリックしてください。

続いて、許可を追加のページに移り、スイッチ先で操作したいポリシーを追加してください。

今回は特定の操作を行いたいわけではないので「AdministratorAccess」を付与しようと思います。

ポリシーをチェック出来たら「次へ」をクリックしてください。

続いてのページで、ロールの名前を入力してください。

今回は「test-switch-role」としています。

説明の箇所は特に入力しなくても問題ないです。

続いて、「信頼されたエンティティ」の箇所です。

こちらが重要です!!! よく試験でも問われることの多いものです。

ここの”Principal”の箇所に、ロールの使用を許可するアカウントについて記載します。

デフォルトでは、最初のページで指定したスイッチ元のAWSアカウントすべてを許可する仕様となっていますので、下記のように編集し特定のIAMユーザーだけロールの使用を許可するようにしてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "<スイッチ元アカウントユーザのARN>"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

「信頼されたエンティティ」の箇所を入力したら、「ロールの作成」をクリックしてください。

ロールが作成出来たら、作成したロールのARNを控えておいてください。(後ほど使用します。)

これでスイッチ先での準備が整いました。

スイッチ元のアカウントでIAMポリシーを作成してIAMユーザーにアタッチ

続いて、スイッチ元での作業を実施していきます。

再び、スイッチ元のマネジメントコンソールにログインしてください。

まず、IAMユーザーに付与するポリシーを作成していきます。

サービスから「IAM」を選択し、「ポリシー」→「ポリシーの作成」をクリックしてください。

ポリシーの作成のページが開いたら「JSON」のタブを選択してください。

こちらに、下記内容を記載してください。

“Resource”の箇所に、先ほどスイッチ先で作成したロールのARNを記載してください。

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "<スイッチ先アカウントの IAM ロールのARN>"
    }
}

記載出来たら「次のステップ」をクリックしてください。

続いて、タグ付けのページですが、今回はとくにタグ付けはせず、「次のステップ:確認」をクリックしてください。

続いて、名前を入力してください。今回は「test-switch-policy」としました。

名前を入力したら、「ポリシーの作成」をクリックしてください。

これで、IAMユーザーに付与するポリシーができました。

続いて、こちらのポリシーをIAMユーザーに付与していきます。

サービスから「IAM」を選択し、「ユーザー」→ポリシーを付与したユーザー名をクリックしてください。

ユーザーのページで、「許可の追加」をクリックしてください。

許可を追加のページで、「ポリシーを直接アタッチする」を選択し、先程作成したポリシーを選択し、「次へ」をクリックしてください。

確認画面が出ますので、「許可の追加」をクリックしてください。

これで、スイッチロールを使用する準備が整いました。

スイッチロールの使用

準備が整いましたので、スイッチロールを実行していきたいと思います。

まず、スイッチ元のアカウントのマネジメントコンソールにログインしてください。

ログイン出来たら、右上のアカウント名の箇所から、「ロールの切り替え」をクリックしてください。

続いてのページでも「ロールの切り替え」をクリックしてください。

ロールの切り替えのページに移ったら、アカウントの箇所にスイッチ先のアカウントIDを、ロールの箇所にロール名を入力してください。表示名の箇所は入力しなくても問題ありません。

色の箇所は、複数のアカウントにスイッチした場合、分かりやすくするために、お好みの色を指定してください。

入力ができたら、「ロールの切り替え」をクリックしてください。

ロールの切り替えができ、アカウント名の箇所の表示名と色が変わったことが確認できました。

これで、スイッチ先の操作を行えるようになりました。

まとめ

いかがでしたでしょうか。

今回は基本的なIAMのスイッチロールの使い方についてまとめてみました。

試験などではよく問われる内容ではありますが、いまいちよくわからなかったという方の少しでも助けになればうれしく思います。

この記事をシェアする
著者:Ryoji
長くフランス料理の料理人として働き、2021年からエンジニアとしてキャリアを再スタート。日々学習中。AWS認定12冠。