localstack-iam について
`lstk` CLI を使って LocalStack 上で IAM ポリシーを分析・適用するスキルです。権限違反の検出、実際のアクセスに基づく最小権限ポリシーの作成、AWS デプロイ前のローカルテストを支援します。
主な機能
- 01ローカル IAM の適用モード
- 02権限違反の検出
- 03アクセスパターンに基づくポリシー生成
- 04IAM ポリシーのシミュレーションと検証
- 05AWS デプロイ前のローカルテスト
活用シーン
- 01アプリに必要な権限の特定
- 02ログで拒否された IAM リクエストを確認
- 03実際のアクセスから最小権限ポリシーを作成
- 04AWS デプロイ前にポリシーの動作をテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ localstack/ skills --skill localstack-iamインストール後、Claude Code で/localstack-iamを入力して読み込まれたか確認します。
詳細
IAM ポリシーアナライザー
IAM ポリシーを分析し、権限違反を検出して、実際の使用状況に基づく最小権限ポリシーを自動生成します。
機能
- IAM ポリシーをローカルで適用する
- 権限違反を検出する
- アクセスパターンからポリシーを自動生成する
- 既存のポリシーの問題を分析する
- AWS にデプロイする前にポリシーをテストする
前提条件
- LocalStack アカウントで認証済みの
lstkCLI(lstk login、または CI ではLOCALSTACK_AUTH_TOKEN)—localstackスキルを参照してください - 任意:IAM ポリシーストリームを利用するための旧式の
localstackCLI(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/*"
}
]
}
ポリシー分析
違反を検出する
- ソフト適用モードを有効にします
- アプリケーションを実行します
- ログでアクセス拒否のメッセージを確認します
# 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
ワークフロー:
LOCALSTACK_ENFORCE_IAM=soft lstk startで開始します- 2 つ目のターミナルで
localstack aws iam streamを実行します - アプリケーションを操作します
- 推奨されたステートメントを集め、最小限のポリシーに統合します
旧式の 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 ロールを使用します
コメント
Markdown 対応