AWS上で稼働するITサービスの運用業務のなかで学んだこと。
本当にちょっとしたことですが。。。
Question
IAMロールの信頼関係ポリシーを確認したところ、Principal
のところに変なエンティティが設定されていた!! ARN形式ではない、AIDAY...
から始まる謎の文字列。 これは何?!
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::000000000000:user/iamuser1",
"arn:aws:iam::000000000000:user/iamuser2",
"AIDAYJU7RR6ZO7TWXH4U2",
"AIDAYJU7RR6ZDEM2UHQIS"
]
},
"Action": "sts:AssumeRole"
}
]
}
Answer
IAMエンティティ(IAMユーザー等)のID。
IAMロールの信頼関係ポリシーのJSONは管理画面上でこそPrincipal
をARN形式で表示しているが、内部的にはこのIAMエンティティのIDでもって管理している。
IAMエンティティが有効なうちはこのARN形式ーエンティティIDの間の相互変換が行われるため、画面上はARN形式で参照できる。
IAMエンティティが無効になるとこの相互変換ができなくなるのでエンティティIDがそのまま表示される。
IAMエンティティは過去に無効化(削除)されたものと同じ名称で作成することができる。このためもし信頼関係エンティティをIDではなくARNで管理していると、本来意図したユーザーと異なるユーザーがリソースにアクセスできてしまうリスクが生じる。このためIAMエンティティのID(≠ARN)による管理が行われている。
公式リファレンスでこの問題が解説されている箇所はこちら。