クロスアカウント | AWS IAM(Identity and Access Management)
クロスアカウントについてまとめています。
前提
- アカウントA:123456789012(スイッチ元。Organizations の管理アカウントなど)
- アカウントB:987654321098
アカウントA
exampleロール
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:iam::987654321098:role/admin"
],
"Action": "sts:AssumeRole"
}
]
}
アカウントB
adminロール
許可
- AdministratorAccess
信頼関係
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole"
}
]
}
:root 指定と ARN 指定の違い
"arn:aws:iam::123456789012:root"は「アカウント A 全体」を信頼するという意味です(ルートユーザーのみを指すわけではありません)。- アカウント A 内のどのユーザー / ロールが実際にこのロールを引き受けられるかは、アカウント A 側の
sts:AssumeRoleを許可するポリシー(上記の example ロールのポリシー)で制御します。
- アカウント A 内のどのユーザー / ロールが実際にこのロールを引き受けられるかは、アカウント A 側の
"arn:aws:iam::123456789012:role/example"のように ARN を指定すると、そのロールだけに絞り込めます(IAM の基礎 具体例 3 を参照)。
MFA を必須にする場合(推奨)
AdministratorAccess のロールなので、MFA を必須にする条件を追加することを推奨します。
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
※ MFA 条件は、スイッチ元が MFA でサインインした IAM ユーザーやフェデレーションのセッションである場合に有効です。