概要
クロスアカウントで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