AWS CLI で、IAM ポリシーがアタッチされた IAM ロールと、IAM ロールがアタッチされた AWS サービスを確認する方法はあるのか

AWS CLI で、IAM ポリシーがアタッチされた IAM ロールと、IAM ロールがアタッチされた AWS サービスを確認する方法はあるのか

  • 特定の IAM ポリシーがアタッチされた IAM ロールを確認できる AWS CLI コマンドがあるか。
  • 特定の IAM ロールがアタッチされた AWS サービスを確認できる AWS CLI コマンドがあるか。

AWS CLI で、IAM ポリシーがアタッチされた IAM ロールと、IAM ロールがアタッチされた AWS サービスを確認する方法

特定の IAM ポリシーがアタッチされた IAM ロールを確認する方法

list-entities-for-policy コマンドの実行結果内の PolicyRoles の値からご確認することができました。

Copied!
aws iam list-entities-for-policy --policy-arn <IAN ポリシーの arn>
{
    "PolicyGroups": [],
    "PolicyUsers": [],
    "PolicyRoles": [
        {
            "RoleName": "SmapleRoleName",
            "RoleId": "AAAAAAAAAAAAAAAAAAAAA"
        },
    ]
}

特定の IAM ロールがアタッチされた AWS サービスを確認する方法

一方で、特定の IAM ロールがアタッチされた AWS サービスを確認できる AWS CLI コマンドは見つかりませんでした。
ただ、get-role コマンドの実行結果内の AssumeRolePolicyDocument 内の Service の値から推測することは可能ではあるかなと思ったのですが、以下の懸念ともあり、実用性には欠けます。
・AWS サービス単位であって機能単位( 実際にアタッチされている EC2 インスタンスなど )での確認ができない。
・実際にその IAM ロールが AWS サービスにアタッチされているかは確認できない。
・IAM ポリシーの内容は変更が可能なため、確認したタイミング時に IAM ポリシーに記載の AWS サービスとは別の AWS サービスが登録された結果、一致しない可能性がある。

現状、適宜 IAM ロールの使用状況を個別に確認・管理していく必要があるという結論です。
IAM ロールの使用状況に関しては CloudTrail のログから確認できるようなので、こうゆうのを使っていく感じになのかな。

Copied!
aws iam get-role --role-name <IAM ロール名>
{
  "Role": {
      ...
      "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "ec2.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      },
      ...
  }
}

参考文献