0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iam-policy-autopilot セットアップ手順

Last updated at Posted at 2025-12-31

iam-policy-autopilot セットアップ手順(Windows / Linux)

本記事は、AWS Re:Invent で紹介されたiam-policy-autopilot についての記事です。

iam-policy-autopilot をローカル環境にセットアップし、
Python コードから IAM ポリシーを自動生成するところまでを扱います。

iam-policy-autopilot とは

iam-policy-autopilot は、Python などのコードを静的解析し、
そのコードが利用する AWS API に基づいて
最小権限ベースの IAM ポリシーを自動生成する CLI ツールです

AWS に実アクセスせず、ローカル環境だけで IAM 設計ができます。

詳細は以下をご確認ください。
https://github.com/awslabs/iam-policy-autopilot/blob/main/README.md

対象読者

  • AWS を使ったアプリケーション開発をしている方
  • IAM ポリシー設計に時間がかかっている方
  • AccessDenied エラーの調査を効率化したい方
  • AI コーディング支援と IAM 設計を組み合わせたい方

セットアップ手順(Windows)

1. Python 環境確認

python --version

Python 3.9 以上を推奨します。

2. iam-policy-autopilot インストール

pip install iam-policy-autopilot

3. インストール確認

iam-policy-autopilot --help

ヘルプが表示されればインストール成功です。

セットアップ手順(Linux)

1. Python 環境確認

python3 --version

2. pip 更新(推奨)

python3 -m pip install --upgrade pip

3. iam-policy-autopilot インストール

pip install iam-policy-autopilot

4. インストール確認

iam-policy-autopilot --help

作業ディレクトリ作成(共通)

mkdir iam-policy-autopilot-test
cd iam-policy-autopilot-test

テスト用 Python コード作成

S3 からオブジェクトを取得する簡単なコードを用意します。

# test_app.py
import boto3

def handler():
    s3 = boto3.client("s3")
    response = s3.get_object(
        Bucket="example-bucket",
        Key="input/data.json"
    )
    body = response["Body"].read()
    print(body)

if __name__ == "__main__":
    handler()

コードから IAM ポリシーを生成する

Windows(PowerShell)

iam-policy-autopilot generate-policies test_app.py `
  --region ap-northeast-1 `
  --account 123456789012 `
  --pretty

Linux(bash)

iam-policy-autopilot generate-policies test_app.py \
  --region ap-northeast-1 \
  --account 123456789012 \
  --pretty

出力例

{
  "Policies": [
    {
      "Policy": {
        "Id": "IamPolicyAutopilot",
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "kms:Decrypt"
            ],
            "Resource": [
              "arn:aws:kms:ap-northeast-1:123456789012:key/*"
            ],
            "Condition": {
              "StringEquals": {
                "kms:ViaService": [
                  "s3.ap-northeast-1.amazonaws.com"
                ]
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectLegalHold",
              "s3:GetObjectRetention",
              "s3:GetObjectTagging",
              "s3:GetObjectVersion"
            ],
            "Resource": [
              "arn:aws:s3:::*/*",
              "arn:aws:s3:ap-northeast-1:123456789012:accesspoint/*/object/*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3-object-lambda:GetObject"
            ],
            "Resource": [
              "arn:aws:s3:::*/*",
              "arn:aws:s3:ap-northeast-1:123456789012:accesspoint/*/object/*"
            ]
          }
        ]
      },
      "PolicyType": "Identity"
    }
  ]
}

実際に生成されるポリシーは上記のものでしたが、やや過剰なポリシー(包括的)なものが生成されるようでした。

最小限の権限は以下の権限が考えられます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example-bucket/input/data.json"
        }
    ]
}

ここまででできること

  • Python コードをもとに IAM ポリシーを自動生成できる
  • AWS 環境にアクセスせず IAM 設計が可能
  • 最小権限ベースのポリシーを短時間で作成できる

注意点とベストプラクティス

まだまだ更新中のサービスであるため、最新情報が更新されている可能性があります。公式のドキュメントをご確認ください。

  • 生成された IAM ポリシーは必ず人の目でレビューする
  • 本番環境ではリソース ARN をより厳密に絞る
  • 動的に決まる値(変数で指定されるリソース名)は解析できない

iam-policy-autopilot はあくまで「出発点」を作るツールです。

公式Readme参照

IAM Policy Autopilot は IAM アイデンティティベースのポリシーを生成しますが、S3 バケットポリシーや KMS キーポリシー、リソースコントロールポリシー (RCP)、サービスコントロールポリシー (SCP)、権限境界といったリソースベースのポリシーはサポートしていません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?