はじめに
今までかかわった案件はアプリケーション単位でAWSアカウントを分けており、基本的には1アプリ1アカウントでした。
今回本番環境、踏み台用環境で2アカウント用意することになったため、片方のアカウントのみにIAMユーザーを作成しクロスアカウントアクセスを設定しAWSコンソールへロール切り替えすることにしました。
環境
・UserAがアカウントAでAdministratorAccess権限を持つ
・UserAがアカウントBでReadOnlyAccess権限を持つ
・アカウントBでUserAの作成を行わない
手順概要
1.アカウントAで[sts:AssumeRole]を許可したポリシーを割り当てた[Xaccount_group]グループを作成
2.アカウントAで[AdministratorAccess]ポリシーを割り当てたUserAを作成し[Xaccount_group]グループへ割り当て
3.アカウントBでクロスアカウントを許可し、ReadOnlyAccessポリシーを割り当てた[SwitchRole]ロールを作成
4.UserAでアカウントAへサインインし、アカウントBへロール切り替え
1.アカウントAで[sts:AssumeRole]を許可したポリシーを割り当てた[Xaccount_group]グループを作成
sts:AssumeRoleを許可したポリシー[ArrumeRole]を作成
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*"
}
]
}
2.作成した[AssumeRole]ポリシーと[AdministratorAccess]ポリシーを割り当て
アカウントAで[AdministratorAccess]ポリシーを割り当てたUserAを作成し[Xaccount_group]グループへ割り当てる
3.アカウントBでクロスアカウントを許可し、ReadOnlyAccessポリシーを割り当てた[SwitchRole]ロールを作成
ロール作成画面
信頼されたエンティティタイプで[AWSアカウント]を選択し、[別のAWSアカウント]にチェックしアカウントAのアカウントIDを入力する
[ReadOnlyAccess]ポリシーを割り当て
ロール名:SwitchRole
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[アカウントAのアカウントID]:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
4.UserAでアカウントAへサインインし、アカウントBへロール切り替え
アカウント:アカウントBのアカウントID
ロール:SwitchRole
参考