概要
クロスアカウントでAssumeRoleするときに外部IDを使用させる方法です。
悪意のある第三者にロール名、アカウントIDが漏洩しても、外部IDがわからなければAssumeRoleされないようになり、セキュリティの向上が見込めます。
手順
IAMロール作成
以下のような信頼ポリシーでIAMロールを作成します。
アカウントIDは自分の環境にあわせて変えてあげます。
"sts:ExternalId": "gaibu_id"の箇所が外部IDです。今回外部IDはgaibu_idとしています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "gaibu_id"
}
}
}
]
AssumeRoleする
マネジメントコンソールでは外部ID付きでのスイッチロールができない(20220702時点)ため、AWSCLI等で実施します。以下はAWSCLIでの例です。
sts assume-role \
--role-arn arn:aws:iam::123456789012:role/externalIdTestRole \
--role-session-name test-session \
--external-id gaibu_id