以下の内容はhttps://yuj1osm.hatenablog.com/entry/2025/12/11/181231より取得しました。


IAMポリシーの作成を支援するIAM Policy Autopilotが登場しました

IAMポリシー作成を支援する、Model Context Protocol (MCP) サーバーおよびコマンドラインツールである、IAM Policy Autopilot が登場しました。

AWS announces IAM Policy Autopilot to help builders generate IAM policies from code - AWS

Simplify IAM policy creation with IAM Policy Autopilot, a new open source MCP server for builders | AWS News Blog

IAM Policy AutopilotはGitHubで公開されています。

github.com

アップデート概要

  • アプリケーションコードをローカルで分析し、必要なIAMポリシーを作成できる

  • Kiro、Claude Code、Cursor などの AI コーディングアシスタントと統合され、Python、TypeScript、Go アプリケーションをサポート

CLIで利用

uvxにより、追加のインストールなく IAM Policy Autopilot を直接実行できます。

$ uvx iam-policy-autopilot
Installed 1 package in 5ms
Generate IAM policies from source code and fix AccessDenied errors

Usage: iam-policy-autopilot <COMMAND>

Commands:
  fix-access-denied  Fix AccessDenied errors by analyzing and optionally applying IAM policy changes
  generate-policies  Generates complete IAM policy documents from source files
  mcp-server         Start MCP server
  help               Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help (see more with '--help')
  -V, --version  Print versio

筆者が過去に公開したハンズオン記事内で登場するLambda関数から、ポリシーを生成してみます。

yuj1osm.hatenablog.com

github.com

Lambda関数を引数にして実行します。

$ uvx iam-policy-autopilot generate-policies jump-chengemanager-lambda-checkgroup.py
{"Policies":[{"Policy":{"Id":"IamPolicyAutopilot","Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["iam:ListUserTags","iam:RemoveUserFromGroup","iam:UntagUser"],"Resource":["arn:aws:iam::*:group/*","arn:aws:iam::*:user/*"]},{"Effect":"Allow","Action":["iam:ListUsers"],"Resource":["*"]},{"Effect":"Allow","Action":["kms:Decrypt","kms:GenerateDataKey"],"Resource":["arn:aws:kms:*:*:key/*"],"Condition":{"StringLike":{"kms:ViaService":["sns.*.amazonaws.com"]}}},{"Effect":"Allow","Action":["sns:Publish"],"Resource":["arn:aws:sns:*:*:*"]}]},"PolicyType":"Identity"}]}

prettyで整形します。

$ uvx iam-policy-autopilot generate-policies jump-chengemanager-lambda-checkgroup.py --pretty
{
  "Policies": [
    {
      "Policy": {
        "Id": "IamPolicyAutopilot",
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "iam:ListUserTags",
              "iam:RemoveUserFromGroup",
              "iam:UntagUser"
            ],
            "Resource": [
              "arn:aws:iam::*:group/*",
              "arn:aws:iam::*:user/*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "iam:ListUsers"
            ],
            "Resource": [
              "*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "kms:Decrypt",
              "kms:GenerateDataKey"
            ],
            "Resource": [
              "arn:aws:kms:*:*:key/*"
            ],
            "Condition": {
              "StringLike": {
                "kms:ViaService": [
                  "sns.*.amazonaws.com"
                ]
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": [
              "sns:Publish"
            ],
            "Resource": [
              "arn:aws:sns:*:*:*"
            ]
          }
        ]
      },
      "PolicyType": "Identity"
    }
  ]
}

大きく外れていないと思います。
コード内のAPIから判断して、ポリシーを生成していると思われます。
KMSは使ってないですが、そのあたりはAWSの知見により付与されていると考えられます。

MCPサーバーで利用

ここでは、Kiro CLIを使います。
Kiro CLIにIAM Policy Autopilot MCPサーバーを追加します。

> kiro-cli mcp add \
  --name iam-policy-autopilot \
  --command "uvx" \
  --args "iam-policy-autopilot","mcp-server"

> I'll help you add the IAM Policy Autopilot MCP server to your Kiro CLI configuration.
I will run the following command: kiro-cli mcp add --name iam-policy-autopilot --command "uvx" --args "iam-policy-autopilot","mcp-server" (using tool: shell)
Purpose: Add IAM Policy Autopilot MCP server to Kiro CLI


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t

✓ Added MCP server 'iam-policy-autopilot' to workspace config in /home/<User>/.kiro/settings/mcp.json

 - Completed in 0.107s

> Successfully added the IAM Policy Autopilot MCP server! The server has been configured in your workspace at
/home/<User>/.kiro/settings/mcp.json.

The MCP server will now be available in your Kiro CLI sessions, providing additional tools for IAM policy management and
automation.
 ▸ Credits: 0.05 • Time: 1m 18s

追加されてたことを確認します。

> /mcp

iam-policy-autopilot
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
[2025:01:25]: ✓ iam-policy-autopilot loaded in 0.48 s

自然言語で依頼してみます。
途中でリージョンとアカウントIDを聞かれるので答えます。
また、IAM Policy Autopilotを使う許可も求められるので承認します。

> Lambda関数である「jump-chengemanager-lambda-checkgroup.py」に割り当てるIAMポリシーを生成してください。


> IAMポリシーを生成するために、まずLambda関数のコードを確認させてください。
Reading file: /home/<User>/jump-chengemanager-lambda-checkgroup.py, all lines (using tool: read)
 ✓ Successfully read 2814 bytes from /home/<User>/jump-chengemanager-lambda-checkgroup.py
 - Completed in 0.0s

> このLambda関数のIAMポリシーを生成します。AWSのリージョンとアカウントIDを教えてください。
 ▸ Credits: 0.07 • Time: 7s

> us-east-1

> AWSアカウントIDも教えてください。
 ▸ Credits: 0.02 • Time: 3s

> <AccountID>

Running tool generate_application_policies with the param (from mcp server: iam-policy-autopilot)
 ⋮  {
 ⋮    "SourceFiles": [
 ⋮      "/home/<User>/jump-chengemanager-lambda-checkgroup.py"
 ⋮    ],
 ⋮    "Region": "us-east-1",
 ⋮    "Account": "<AccountID>"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 1.942s

> Lambda関数用のIAMポリシーを生成しました。以下の内容を確認してください:

json
{
  "Id": "IamPolicyAutopilot",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListUserTags",
        "iam:RemoveUserFromGroup",
        "iam:UntagUser"
      ],
      "Resource": [
        "arn:aws:iam::<AccountID>:group/*",
        "arn:aws:iam::<AccountID>:user/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListUsers"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:us-east-1:<AccountID>:key/*"
      ],
      "Condition": {
        "StringEquals": {
          "kms:ViaService": [
            "sns.us-east-1.amazonaws.com"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "sns:Publish"
      ],
      "Resource": [
        "arn:aws:sns:us-east-1:<AccountID>:*"
      ]
    }
  ]
}


このポリシーには以下の権限が含まれています:

- **IAM操作**: ユーザータグの一覧取得、グループからのユーザー削除、タグの削除、ユーザー一覧の取得
- **SNS操作**: SNSトピックへのメッセージ発行
- **KMS操作**: SNS経由でのKMSキーの復号化とデータキー生成(SNSトピックが暗号化されている場合に必要)

このポリシーで問題なければ、Lambda関数の実行ロールにアタッチしてください。
 ▸ Credits: 0.12 • Time: 1m 10s

CLIと同じようなポリシーができましたが、リージョンやアカウントIDを聞かれた分、より具体的になっています。

まとめ

複雑なコードになると、IAMポリシーの作成は難しくなります。
コードだけでポリシーを作成してくれるので、調査にかかる時間を削減できると思います。
最小権限とは言えないので、生成されたポリシーはよく吟味することが必要です。




以上の内容はhttps://yuj1osm.hatenablog.com/entry/2025/12/11/181231より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14