mcpField
L
localstack-iam

localstack-iam

github.com/localstackセキュリティ1554 回インストール8 週間前に更新
リポジトリ

localstack-iam について

`lstk` CLI を使って LocalStack 上で IAM ポリシーを分析・適用するスキルです。権限違反の検出、実際のアクセスに基づく最小権限ポリシーの作成、AWS デプロイ前のローカルテストを支援します。

主な機能

  1. 01ローカル IAM の適用モード
  2. 02権限違反の検出
  3. 03アクセスパターンに基づくポリシー生成
  4. 04IAM ポリシーのシミュレーションと検証
  5. 05AWS デプロイ前のローカルテスト

活用シーン

  1. 01アプリに必要な権限の特定
  2. 02ログで拒否された IAM リクエストを確認
  3. 03実際のアクセスから最小権限ポリシーを作成
  4. 04AWS デプロイ前にポリシーの動作をテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/localstack/skills --skill localstack-iam

インストール後、Claude Code で/localstack-iamを入力して読み込まれたか確認します。

詳細

IAM ポリシーアナライザー

IAM ポリシーを分析し、権限違反を検出して、実際の使用状況に基づく最小権限ポリシーを自動生成します。

機能

  • IAM ポリシーをローカルで適用する
  • 権限違反を検出する
  • アクセスパターンからポリシーを自動生成する
  • 既存のポリシーの問題を分析する
  • AWS にデプロイする前にポリシーをテストする

前提条件

  • LocalStack アカウントで認証済みの lstk CLI(lstk login、または CI では LOCALSTACK_AUTH_TOKEN)— localstack スキルを参照してください
  • 任意:IAM ポリシーストリームを利用するための旧式の localstack CLI(pip install localstack)— ポリシーの自動生成を参照してください。lstk に同等のコマンドはまだありません。

IAM の適用モード

適用を有効にする

lstk は、ホストの LOCALSTACK_ で始まる環境変数を転送するため、ENFORCE_IAM は LOCALSTACK_ENFORCE_IAM として設定します。

# Soft mode - logs violations but allows requests
LOCALSTACK_ENFORCE_IAM=soft lstk start

# Enforced mode - denies unauthorized requests
LOCALSTACK_ENFORCE_IAM=1 lstk start

プロジェクトで適用をデフォルトにするには、config.toml の環境プロファイルを使用します(プロファイル内のキーにはプレフィックスは不要です)。

[[containers]]
type = "aws"
env  = ["iam"]

[env.iam]
ENFORCE_IAM = "soft"
設定
モード動作
無効(デフォルト)IAM チェックを行いません
soft違反を記録し、リクエストを許可します
1 / enforced完全に適用し、許可されていないリクエストを拒否します

IAM リソースの作成

lstk aws は、LocalStack のエンドポイント、認証情報、リージョンを事前設定して、ホストの aws CLI をプロキシします。

ポリシーを使用するユーザーを作成する
# Create user
lstk aws iam create-user --user-name dev-user

# Create access key
lstk aws iam create-access-key --user-name dev-user

# Attach policy
lstk aws iam attach-user-policy \
  --user-name dev-user \
  --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
カスタムポリシーを作成する
# Create policy from JSON file
lstk aws iam create-policy \
  --policy-name my-custom-policy \
  --policy-document file://policy.json
// Example policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

ポリシー分析

違反を検出する
  1. ソフト適用モードを有効にします
  2. アプリケーションを実行します
  3. ログでアクセス拒否のメッセージを確認します
# View IAM-related log entries (-v disables lstk's default log filtering)
lstk logs -v | grep -i "access denied"
lstk logs -v | grep -i "iam"
ポリシーを自動生成する

旧式の localstack CLI を使うと、各リクエストに必要となる正確なポリシーを出力できます。これはログを読むよりもはるかに確実です。同等の lstk コマンドはまだないため、このワークフローでは lstk と併せて旧式の CLI をインストールしてください。

pip install localstack

# Live stream of recommended policies as requests come in
localstack aws iam stream
localstack aws iam stream --format json

# Aggregate summary of policies for all enforced requests
localstack aws iam summary

ワークフロー:

  1. LOCALSTACK_ENFORCE_IAM=soft lstk start で開始します
  2. 2 つ目のターミナルで localstack aws iam stream を実行します
  3. アプリケーションを操作します
  4. 推奨されたステートメントを集め、最小限のポリシーに統合します

旧式の CLI を使用できない場合は、lstk logs -v でアクセス拒否のログを確認し、観測されたアクションとリソースからポリシーを作成してください。

ポリシーのテスト

ポリシーをシミュレートする
# Test if action would be allowed
lstk aws iam simulate-principal-policy \
  --policy-source-arn arn:aws:iam::000000000000:user/dev-user \
  --action-names s3:GetObject \
  --resource-arns arn:aws:s3:::my-bucket/file.txt
ポリシーを検証する
# Check policy syntax
lstk aws accessanalyzer validate-policy \
  --policy-document file://policy.json \
  --policy-type IDENTITY_POLICY

ベストプラクティス

  • 必要な権限を特定するため、ソフト適用から始めます
  • ポリシーの生成には、ログの検索ではなく localstack aws iam stream を使用します
  • ポリシーを作成する際は、最小権限の原則に従います
  • AWS にデプロイする前に、ローカルでポリシーをテストします
  • 実験後に復元できるよう、既知の正常な IAM 設定を lstk save でスナップショットに保存します
  • 実際の使用状況に基づいて、ポリシーを定期的に監査し、改善します
  • 可能な場合は、ユーザーではなく IAM ロールを使用します

コメント