スイッチロールとは
AWS環境で権限を切り替えたいときに使う。
検証用→本番用、AWSアカウントA→AWSアカウントB など。
手順は他のサイトにたくさんあるので、本投稿では要点だけを書きます。
ざっくり図
切り替え操作
AWSマネジメントコンソールにログイン後、右上のほうにロールの切り替えボタンがある。
スイッチ先のAWSアカウントID、スイッチ先のIAMロール名を指定してロールを切り替える。
stsを許可するjson
スイッチ元のIAMユーザがスイッチロールするための許可を与える。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*"
}
]
}
信頼ポリシーはユーザ単位またはロール単位で指定可能
Principalに書くパターン
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "{スイッチ元IAMユーザまたはロールARN}"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
Conditionに書くパターン
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{AWSアカウント}:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:PrincipalArn": [
"{スイッチ元IAMユーザまたはロールARN}"
]
}
}
}
]
}
(おまけ)グループ単位はNG
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{AWSアカウント}:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:PrincipalArn": [
"{スイッチ元ユーザにアタッチされているIAMグループのARN}"
]
}
}
}
]
}
↓
IAMロール自体は作成できるものの、スイッチしようとするとエラーになる。
以上