AWS IAMロールでは、ExternalIdが設定できます。
- AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法 - AWS Identity and Access Management
- IAM ロールの信頼ポリシーで設定する外部 ID(sts:ExternalId) について | DevelopersIO
ExternalIdで利用できる文字について、大文字・小文字を区別するのか気になったので、試してみました。
ExternalId の値は、2~1,224 文字で構成されている必要があります。この値は、空白のない英数字にする必要があります。次の記号を含めることもできます。プラス記号 (+)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、コロン (:)、スラッシュ (/)、およびハイフン (-)。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts
おすすめの方
- Assume Roleする際のExternalIdが大文字・小文字を区別するのか知りたい方
IAMロールを作成する
「AmazonS3ReadOnlyAccess」を持つIAMロールを作成しました。
信頼関係は下記となっており、「大文字・小文字が混在するExternalId」を設定しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012345678901:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "I-am-3rd-Party"
}
}
}
]
}
大文字・小文字が一致するExternalIdでAssume Roleする
問題なくAssume Roleが成功しました。
$ aws sts assume-role \
--role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \
--role-session-name test-blog-aaa-session \
--external-id I-am-3rd-Party
{
"Credentials": {
...
},
"AssumedRoleUser": {
...
}
}
大文字・小文字が異なるExternalIdでAssume Roleする(すべて小文字)
Assume Roleができませんでした。
$ aws sts assume-role \
--role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \
--role-session-name test-blog-bbb-session \
--external-id i-am-3rd-party
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::012345678901:assumed-role/xxx/botocore-session-1703070136 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::012345678901:role/external-id-test-blog-role
大文字・小文字が異なるExternalIdでAssume Roleする(すべて大文字)
同じく、Assume Roleができませんでした。
$ aws sts assume-role \
--role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \
--role-session-name test-blog-ccc-session \
--external-id I-AM-3RD-PARTY
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::012345678901:assumed-role/xxx/botocore-session-1703070136 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::012345678901:role/external-id-test-blog-role
さいごに
ExternalIdの大文字・小文字は区別されました。