スイッチロールを可能とするユーザーを OU 配下に限定する方法
困っていること
スイッチロールを可能とするユーザーを特定の OU 配下に限定したいです。
何かいい方法はありますか?
どう解決すればいいの?
aws:PrincipalOrgID 条件キーを使用することで、AWS Organizations の組織ルート内のアカウントからのアクセスのみに制限することができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPutObject",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-<OrgID>"
}
}
}
]
}
また、条件キーとして aws:PrincipalOrgPaths を使用して、組織ルート、または、OU(組織単位)内のアカウントからのアクセスのみに制限することができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:PrincipalOrgPaths": "o-<OrgID>/ou-<OUID>/"
}
}
}
]
}
なお、ワイルドカードを使いたい場合は、条件演算子として StringLike を使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole",
"Condition": {
"ForAnyValue:StringLike": {
"aws:PrincipalOrgPaths": "o-<OrgID>/*/"
}
}
}
]
}
補足
上記の信頼ポリシーを設定した場合に下記の警告が出現しますが、実際には Condition 要素で制限がかかっているため、問題はありません。
参考資料
AWS グローバル条件コンテキストキー - AWS Identity and Access Management
IAM JSON ポリシー要素: 条件演算子 - AWS Identity and Access Management
AWS Organizations の用語と概念 - AWS Organizations