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. 05部署到 AWS 前本地测试

适用场景

  1. 01查明应用所需权限
  2. 02从日志检查被拒绝的 IAM 请求
  3. 03根据实际访问制定最小权限策略
  4. 04部署到 AWS 前测试策略行为

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/localstack-iam确认已加载。

详细介绍

IAM 策略分析器

分析 IAM 策略、检测权限违规,并根据实际使用情况自动生成最小权限策略。

功能

  • 在本地强制执行 IAM 策略
  • 检测权限违规
  • 根据访问模式自动生成策略
  • 分析现有策略中的问题
  • 在部署到 AWS 前测试策略

前提条件

  • lstk CLI,且已通过 LocalStack 账户完成身份验证(使用 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. 在第二个终端中运行 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 前先在本地测试策略
  • 使用 lstk save 快照保存已知可正常运行的 IAM 设置,以便在实验后恢复
  • 根据实际使用情况定期审计和优化策略
  • 尽可能使用 IAM 角色,而非用户

评论

支持 Markdown