IAM ロールの「信頼されたエンティティ」に覚えのない IAM ユーザー ID が設定されている場合の対処法
この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2022 | Advent Calendar 2022 - Qiita 6日目の記事です。
困っている内容
ある IAM ロールの「信頼されたエンティティ」を編集しようとした所、以下のエラーがでて更新できませんでした。
Invalid User Reference: Principal 要素には IAM ユーザー ID AIDA***************** が含まれています。代わりにユーザー ARN を使用することをお勧めします
該当 IAM ロールの「信頼されたエンティティ」には確かに IAM ユーザー ID が設定されているのですが、なぜ設定されているか心当たりがありません。
なぜ「信頼されたエンティティ」に IAM ユーザー ID が設定されているのか、考えられるケースをご教示いただけると助かります。
どう対応すればいいの?
本事象の原因として、「信頼されたエンティティ」に設定されていた IAM ユーザーを削除したことが可能性として考えられます。
「信頼されたエンティティ」に設定されていた IAM ユーザーが削除されると、IAM ユーザー ARN ではなく、IAM ユーザー ID が表示されるようになります[1]。
Principal 要素に特定の IAM ロールまたはユーザーの ARN が含まれている場合、この ARN はポリシーの保存時に一意のプリンシパル ID に変換されます。これにより、第三者がロールやユーザーを削除して再作成することで、そのユーザーのアクセス許可をエスカレートするリスクを緩和できます。通常、この ID はコンソールには表示されません。信頼ポリシーが表示されるときに、ARN への逆変換が行われるためです。ただし、ロールまたはユーザーを削除すると、プリンシパル ID はコンソールに表示されます。これは、AWS が ARN に ID をマッピングできなくなるためです。したがって、信頼ポリシーの Principal 要素で指し示しているユーザーまたはロールを削除し、再作成する場合、ロールを編集して ARN を置き換える必要があります。
その為、CloudTrail のイベント履歴や Config のリソースタイムライン等で、該当 IAM ロールの「信頼されたエンティティ」から IAM ユーザーが削除されていないか確認してください。
また、当該 IAM ロールを引き続き利用する場合は、存在しない(削除された) IAM ユーザーの IAM ユーザー IDを「信頼されたエンティティ」から削除してください。
やってみた
今回は IAM ロール TestRole の「信頼されたエンティティ」に、IAM ユーザー TestIAMUser の ARN を記載しました。
この状態で IAM ユーザー TestIAMUser を削除すると...?
IAM ユーザー TestIAMUser の設定が、IAM ユーザー ARN ではなく、AIDA で始まる IAM ユーザー ID へと変更されていますね。
また、「信頼されたエンティティ」で IAM ユーザー TestIAMUser の IAM ユーザー ID を残したまま更新しようとすると、エラーが発生しました。
そして、IAM ユーザー TestIAMUser の IAM ユーザー ID を削除することで、更新ができました。
参考資料
[1] IAM ユーザーにアクセス許可を委任するロールの作成 - AWS Identity and Access Management