スイッチしまくってやるよ~
1.準備
アカウントAのユーザでアカウントBのロールを引き受け、アカウントAのユーザでアカウントB内のリソースを操作する。
1-1.アカウントB側の準備(スイッチ先)
アカウントBにロールを作る。IAMのサービス画面から[ロールを作成]をクリックする。
[AWSアカウント]を選択する。
[別のAWSアカウント]を選択しアカウントAのアカウントIDを記入する。
次へ。
ロールに許可するポリシーを選択する。今回は[ReadOnlyAccess]を選択して次へ。
ロールの名前を入力する。
[ステップ1:信頼されたエンティティを選択する]には、このロールに付与する「信頼ポリシードキュメント」が表示されており、次のようになっている。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "アカウントAのアカウントID"
},
"Condition": {}
}
]
}
これはsts:AssumeRole
(≒「IAMロールを引き受ける」という動作・アクション )が、アカウントAに許可されていることを表している。
必要に応じてタグを追加し、[ロールを作成]をクリックする。
ロールできた。
★このアカウントBに作成したロールのARNをコピーしてメモしておく。
1-2.アカウントA側の準備(スイッチ元)
アカウントAに、アカウントBのロールを引き受ける権限のポリシーを作成する。
アカウントAにログインし、IAMサービス画面から[ポリシー]-[ポリシーの作成]をクリックする。
JSONで以下ポリシーを入力する。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource":"arn:aws:iam::アカウントBのアカウントID:role/AccountB_role"
}
}
"Resource"
には、★でコピーしたアカウントBのロールのARNを記載する。
これで、アカウントBのロールを、sts:AssumeRole
(≒「IAMロールを引き受ける」)ことが許可されている、ということになる。
必要に応じてタグを追加し、ポリシー名を入力してポリシーを作成する。
ポリシーができた。
アカウントAにスイッチ元のユーザを作り、作成したポリシーをアタッチする。。
これで、アカウントAのAccounA_userが、AccountB_roleを引き受けてスイッチロールする準備ができた。
2.AWSマネジメントコンソールでスイッチロールする
アカウントBにS3バケットを作っておく。
アカウントAからアカウントBにスイッチロールして、アカウントAからアカウントBのバケットが見えるか確認する。
アカウントAで[ロールの切り替え]をクリックする。
[ロールの切り替え]をクリックする。
- アカウント:アカウントB(スイッチ先)のアカウントID
- ロール:アカウントBで作成したロール名
- 表示名:なんでもいい。スイッチしたときに画面右上に表示される。
- 色:なんでもいい。スイッチしたときに画面右上にこの色がつく。
[ロールの切り替え]をクリックすると、アカウントBにスイッチロールできる。
S3サービス画面を見ると、バケットも参照できる。
[スイッチバック]でアカウントAに戻る。
参考