🔖

AWS CLIでスイッチロールする方法

2022/04/21に公開

AWS CLIでスイッチロールするときの手順を紹介します。

IAMユーザー作成

まずはAWS CLIで使用するIAMユーザーを作成します。
マネジメントコンソールにログインし、ユーザー名、AWS認証情報タイプを選択してIAMユーザーを作成します。名前は何でも良いですが、私は「switch-role-user」という名前で作成しました。
AWS認証情報タイプは「アクセスキー - プログラムによるアクセス」にチェックを入れます。
この時点では何も権限を与えなくて良いです。

IAMロール作成

スイッチロールするためのロールを作成します。
マネジメントコンソールにログインし、IAMのページに移動し「ロールを作成」をクリック。信頼されたエンティティタイプは「カスタム信頼ポリシー」を選択します。そうするとjsonを書けるようになるので以下を記述します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{AWSアカウントID}:user/switch-role-user"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

そして「次へ」をクリックすると許可ポリシーを選べるので、このロールに持たせたい権限を追加します。私はアドミン権限を持たせました。

次にロール名を指定してロールを作成します。
私は「admin-role」という名前にしました。

IAMポリシー作成&ポリシーアタッチ

先ほど作成したIAMユーザー「switch-role-user」にアタッチするIAMポリシーを作成します。
IAMポリシーの権限は以下のようにし、「switch-admin-role-policy」という名前にしました。

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::{AWSアカウントID}:role/admin-role"
    }
}

そしてこのポリシーを先ほど作成したIAMユーザー「switch-role-user」にアタッチします。

AWS CLIで使うIAMユーザーを設定

以下のコマンドを入力します

aws configure

すると、
アクセスキー,シークレットアクセスキー,Default region name, Default output formatの入力が求められるので入力します。アクセスキー,シークレットアクセスキーは先ほど作成したIAMユーザーのものを、Default region nameはap-northeast-1、Default output formatは何も入力せずにエンターを押すとOKです。

~/.aws/configを修正

~/.aws/configが勝手に作成されていると思うので、vim ~/.aws/config で ~/.aws/configファイルを開いて以下を追記します。

[profile admin]
role_arn = arn:aws:iam::{AWSアカウントID}:role/admin-role
source_profile = default

--profile adminをつけてコマンド実行

これでAWS CLIでスイッチロールするための準備はできました。
aws s3 ls --profile admin のようなコマンドを実行するとs3のデータがあれば返って来ます。データがなくてもAccess Deniedみたいなエラーはでなくなります。

ちなみにIAMユーザー「switch-role-user」はスイッチロールする権限しかないので、aws s3 ls を実行すると権限エラーが出ます。

Discussion