关于 localstack-iam
使用 `lstk` CLI 在 LocalStack 中分析和执行 IAM 策略的技能。它帮助开发者发现权限违规、依据实际访问生成最小权限策略,并在部署到 AWS 前进行本地测试。
主要功能
- 01本地 IAM 执行模式
- 02检测权限违规
- 03依据访问模式生成策略
- 04IAM 策略模拟与验证
- 05部署到 AWS 前本地测试
适用场景
- 01查明应用所需权限
- 02从日志检查被拒绝的 IAM 请求
- 03根据实际访问制定最小权限策略
- 04部署到 AWS 前测试策略行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ localstack/ skills --skill localstack-iam安装后在 Claude Code 中输入/localstack-iam确认已加载。
详细介绍
IAM 策略分析器
分析 IAM 策略、检测权限违规,并根据实际使用情况自动生成最小权限策略。
功能
- 在本地强制执行 IAM 策略
- 检测权限违规
- 根据访问模式自动生成策略
- 分析现有策略中的问题
- 在部署到 AWS 前测试策略
前提条件
lstkCLI,且已通过 LocalStack 账户完成身份验证(使用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 - 在第二个终端中运行
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 前先在本地测试策略
- 使用
lstk save快照保存已知可正常运行的 IAM 设置,以便在实验后恢复 - 根据实际使用情况定期审计和优化策略
- 尽可能使用 IAM 角色,而非用户
评论
支持 Markdown