AWS CLIでスイッチロールする方法
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