2021/05/26

AWS CLIでSwitch Roleする方法とは?手順を詳しく徹底説明!

 
  

Switch Role(スイッチロール)とは

Switch Role(スイッチロール)とは、AWSマネジメントコンソールを使って操作するときやそのコマンドライン版であるAWS CLIのコマンドを実行するときに使われるIAMユーザーの権限を、別のIAMロールが持つ権限に一時的に置き換えられる機能です。 Switch Roleを使うことで、大事な顧客データが入ったデータベースやストレージに対して、普段はリードオンリーの権限を持たせておき、必要なときに一時的にフルアクセスの権限を持たせるといった運用ができます。 また、別のAWSアカウントにあるIAMロールにSwitch Roleすることもでき、この場合、別のAWSアカウントにあるAWSリソースを操作できます。 たとえば、普段は開発用のAWSアカウントを使い、デプロイするときに一時的に本番用のAWS アカウントにアクセスできるようにするといった運用ができます。さらに、同じAWSアカウントにあるIAMロールに対してSwitch Roleをすることもできます。

Switch Roleしたときの権限を設定する

Switch Roleをしたときにどのような権限を与えるのかを設定する方法を示します。この設定を行うと、AWS CLIコマンドを使うシェルでSwitch Roleができるようになるだけでなく、AWSマネジメントコンソールでもSwitch Roleができるようになります。これはクラウドのシステム管理者が行う作業なので、読み飛ばしてもらって構いません。 まずは、「ユーザーが所属するAWSアカウントID」と「操作対象となるリソースやIAMロールがあるAWSアカウントID」をメモしておきます。また、Switch Roleをしたときの権限を持つロールの名前も決めておきます
項目名 設定例
ユーザーが所属するAWSアカウントID 111156789012
操作対象となるリソースやIAMロールがあるAWSアカウントID 222256789012
ロール名 S3ReadOnly

Switch Roleしたときの権限を持つIAMロールを作る

IAMロールを作るAWSアカウントにサインインします。操作対象となるAWSリソースが所属するAWSアカウントと、同じAWSアカウントにIAMロールを作ります。AWSマネジメントコンソールでの手順は以下のようになります。 スイッチロールしたときの権限を作ります。 [ https://console.aws.amazon.com/iam/ >> ポリシー >> ポリシーの作成 ] ロールを作ります。 [ https://console.aws.amazon.com/iam/ >> ロール >> ロールの作成 ] 設定値は以下のようにします。
項目名 設定例 説明
信頼されたエンティティの種類を選択 別のAWSアカウント 別のアカウントがなくてもこちらを選択します。
アカウントID 111156789012 自分のアカウントを指定することもできます。自分のアカウントとは、作成しようとしている IAM ロールがある AWS アカウント ID のことです。
オプション (すべてチェックなし)
項目名 設定例 説明
ポリシー名 AmazonS3ReadOnlyAccess チェックを入れます
項目名 設定例 説明
ロール名 S3ReadOnly
ロールの説明 (空欄)

ユーザーにSwitch Roleできる権限を与える

ユーザーが所属するAWSアカウント(例:111156789012)にサインインします。 Switch Roleするポリシーを作ります。 [ https://console.aws.amazon.com/iam/ >> ポリシー >> ポリシーの作成 ] JSONタブに下記を入力します。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::222256789012:role/S3ReadOnly"
            ]
        }
    ]
}
項目名 設定例 説明
名前 222256789012_S3ReadOnly たとえば、操作対象となる AWS アカウント ID とロール名にします
説明 (空欄)
グループにポリシーをアタッチする場合[ https://console.aws.amazon.com/iam/ >> グループ >> (対象のグループ)>> ポリシーのアタッチ ]
項目名 設定例 説明
ポリシー名 222256789012_S3ReadOnly チェックを入れます
ユーザーにポリシーをアタッチする場合 [ https://console.aws.amazon.com/iam/ >> ユーザー >> (対象のユーザー)>> アクセス権限の追加 >> 既存のポリシーを直接アタッチ(右上)]
項目名 設定例 説明
ポリシー名 222256789012_S3ReadOnly チェックを入れます

AWS CLIの設定をする

実行するときのロールのARN(リソース名)を設定ファイルに書く必要があるので、書き方について説明します。

~/.aws/config ファイルの設定

~/.aws/config ファイルに下記を追加します。
[profile 222256789012-S3ReadOnly]
role_arn = arn:aws:iam::222256789012:role/S3ReadOnly
credential_source = Ec2InstanceMetadata
設定例 説明
222256789012-S3ReadOnly プロファイル名。たとえば、操作対象となる AWS アカウント ID とロール名にします
222256789012 操作対象となる AWS アカウント ID
S3ReadOnly ロール名

EC2外のAWS CLIの場合

もし、EC2外のAWS CLIの場合は、上記の内容を一部変更します。
変更前: credential_source = Ec2InstanceMetadata
変更後: source_profile = default
以上の設定を変更することで、今まで開いていたシェルに対しても設定が有効になります。

AWS CLIでSwitch Roleする

Switch Roleする対象となるAWSアカウントIDとロール名をクラウドのシステム管理者に聞いてから操作してください。

Switch Roleする

AWS CLIのコマンドを使うシェルでSwitch Roleするには、環境変数AWS_PROFILEを設定します。値は~/.aws/configファイルに書いた [profile ____] の ____ の部分です。 bashの場合:
export AWS_PROFILE=222256789012-S3ReadOnly
環境変数が設定されているシェルで実行したAWS CLIのコマンドは、Switch Roleした権限やAWSアカウントで実行されます。たとえば、S3のバケットを一覧することで別のAWSアカウントが操作対象になっていることを確認できます。
aws s3 ls  # AWS CLI コマンドの例

Switch Roleした状態から戻す

AWS CLIのコマンドを使うシェルで環境変数AWS_PROFILEを削除すると、Switch Roleした状態からSwitch Roleしていない状態、つまり、IAMユーザーに戻ります。 bashの場合:
export AWS_PROFILE=
または
unset AWS_PROFILE

一時的にSwitch Roleしてコマンドを実行する

環境変数を設定しないで、AWS CLIのコマンドに–profileオプションを付ければ、そのコマンドはSwitch Roleした状態で実行されます。
aws s3 ls --profile 222256789012-S3ReadOnly  # AWS CLI コマンドの例

Switch Roleを使いこなして安心して作業しよう

以上、Switch Roleするときの権限の設定方法と、AWS CLIのコマンドを使うシェルでSwitch Roleする方法の説明でした。大事なデータを誤って消す可能性が低くなることで、安心して作業できるようになるでしょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】