关于 securing-s3-buckets
securing-s3-buckets 是面向 AWS 用户的技能,用于保护、审计和维护 S3 存储桶。它将创建配置、问题修复、加密和监控组织为带有操作约束的工作流。
主要功能
- 01按顺序配置新存储桶安全项
- 02只读审计,不修改资源
- 03修复问题并重新检查控制项
- 04配置加密与监控
- 05安全处理存储桶策略变更
适用场景
- 01加固新建的 S3 存储桶
- 02检查现有存储桶的安全配置
- 03修复特定安全问题
- 04配置加密或监控
MCP 相关
连接后通过 AWS MCP 服务执行命令,以支持沙箱执行、审计日志和可观测性;否则使用 AWS CLI 或 shell。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aws/ agent-toolkit-for-aws --skill securing-s3-buckets安装后在 Claude Code 中输入/securing-s3-buckets确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/audit-checklist.mdencryption.mdiam-permissions.mdremediation.mdworkflows.md详细介绍
概述
通过五种工作流实施分层的 S3 安全控制:保护新存储桶、审计现有配置、修复发现的问题、配置加密以及启用监控。遵循 AWS Well-Architected 安全最佳实践。
连接后,使用 AWS MCP 服务执行命令(沙盒化执行、审计日志记录、可观测性)。否则,使用 AWS CLI 或 shell。
常见任务
0. 验证依赖项
开始前检查所需工具。
约束:
- 如果缺少所需工具,MUST 告知用户
- SHOULD 使用
aws sts get-caller-identity确认凭证
有关各工作流的 IAM 权限,请参阅 references/iam-permissions.md。
1. 对请求进行分类
| 用户意图 | 工作流 |
|---|---|
| 保护新存储桶 | A:保护新存储桶 |
| 审计/检查现有存储桶 | B:审计现有存储桶 |
| 修复特定问题 | C:修复问题 |
| 配置加密 | D:配置加密 |
| 启用日志记录/监控 | E:启用监控 |
约束:
- MUST 一次性询问所有必需参数
- MUST 在执行任何写入操作前确认存储桶名称和区域
- 如果用户上下文中明确说明了区域,MAY 推断区域
- SHOULD 在写入操作前运行
aws iam simulate-principal-policy验证权限 - SHOULD 显示写入命令并等待确认后再执行
put-bucket-policy 安全规则
以下规则适用于所有调用 put-bucket-policy 的工作流:
- MUST 先尝试获取现有策略(
aws s3api get-bucket-policy)——put-bucket-policy会替换整个策略 - 如果策略存在,MUST 在修改前备份:
aws s3api get-bucket-policy --bucket <name> --output text > backup-policy-$(date +%s).json - 如果返回
NoSuchBucketPolicy,则使用新策略继续——无需备份 - MUST 将新的语句合并到现有策略的 Statement 数组中(如果存在)
- MUST 在应用前验证合并后的 JSON 语法(例如:
echo '<policy>' | python3 -m json.tool) - SHOULD 显示完整的
put-bucket-policy命令并等待确认
2. 工作流 A — 保护新存储桶
完整 CLI 步骤请参阅 references/workflows.md。
必需步骤(按顺序执行,不得跳过):
- 使用
--bucket-namespace account-regional创建存储桶 - 启用版本控制
- 启用加密(SSE-S3 + Bucket Keys + 阻止 SSE-C)
- 启用日志记录(询问用户选择哪种方式——条件步骤)
- 通过
DenyInsecureTransport存储桶策略强制仅使用 HTTPS - 启用 ABAC
约束:
-
调用
create-bucket时 MUST 传入--bucket-namespace account-regional——这是必需项,不可省略。例如:aws s3api create-bucket --bucket <name> --bucket-namespace account-regional --region <region> -
MUST NOT 更改 Block Public Access——S3 默认会为新存储桶启用该功能
-
MUST NOT 更改 ACL 所有权控制——S3 默认会禁用 ACL(
BucketOwnerEnforced) -
MUST 应用包含
DenyInsecureTransport语句的存储桶策略:当aws:SecureTransport为false时拒绝s3:*——这是必需项,不可省略。例如:aws s3api put-bucket-policy --bucket <name> --policy '{"Version":"2012-10-17","Statement":[{"Sid":"DenyInsecureTransport","Effect":"Deny","Principal":"*","Action":"s3:*","Resource":["arn:aws:s3:::<name>/*","arn:aws:s3:::<name>"],"Condition":{"Bool":{"aws:SecureTransport":"false"}}}]}' -
在步骤 4 之前,MUST 询问用户选择哪种日志记录方式
-
步骤 4 和 5 MUST 遵循 put-bucket-policy 安全规则
-
SHOULD 确认每个步骤成功后再继续
3. 工作流 B — 审计现有存储桶
完整检查清单请参阅 references/audit-checklist.md。
约束:
- MUST 运行所有只读审计命令后再报告发现的问题
- 审计期间 MUST NOT 执行任何写入或修改命令
- MUST 将每项控制报告为 PASS / FAIL / NOT CONFIGURED,并注明严重程度
- 对于日志记录:如果启用了 S3 服务器访问日志或 CloudTrail 数据事件,则报告 PASS;只有两者都未启用时才报告 NOT CONFIGURED
4. 工作流 C — 修复问题
请参阅 references/remediation.md,了解按问题类型分类的修复命令。
约束:
- 在应用任何修复之前,必须先确定问题类型
- 修改策略时,必须遵循 put-bucket-policy 安全规则
- 应用修复后,必须重新运行相关审计检查,以确认问题已解决
5. 工作流 D — 配置加密
请参阅 references/encryption.md,了解加密选项和命令。
约束:
- 默认必须使用带 S3 Bucket Keys 的 SSE-S3,并阻止 SSE-C,除非用户明确要求使用 KMS
- 使用 SSE-KMS 时,必须使用客户管理的密钥,绝不能使用 AWS 管理的
aws/s3密钥 - 指定客户管理的 KMS 密钥时,必须使用完整 ARN,而不是别名
- 所有配置都必须包含
BucketKeyEnabled: true和BlockedEncryptionTypes: [SSE-C] - 注意:S3 API 接受
aws/s3和别名且不会报错——这些限制由 Agent 强制执行。应用后,请使用get-bucket-encryption进行验证。
6. 工作流 E — 启用监控
有关完整 CLI 步骤,请参阅 references/workflows.md。
约束:
- 创建 GuardDuty 检测器之前,必须检查是否已存在检测器
- CloudTrail 命令必须使用跟踪的主区域,而不是存储桶所在区域
- 应启用全部四项核心推荐 AWS Config 规则
故障排除
ObjectLockConfigurationNotFoundError — 未启用对象锁定。应视为未配置,而不是失败。
审计命令出现 AccessDenied — 检查 IAM 策略、存储桶策略、Block Public Access、VPC 端点策略以及 SCP/RCP。使用 aws iam simulate-principal-policy 进行诊断。
put-bucket-policy 静默移除了现有语句 — 请参阅 put-bucket-policy 安全规则。
GuardDuty 出现 BadRequestException: detector already exists — 先运行 aws guardduty list-detectors;仅在结果为空时调用 create-detector。
CloudTrail 更改未生效 — 确认使用的是 --region <trail-home-region>,而不是存储桶所在区域。使用 aws cloudtrail describe-trails --query 'trailList[*].[Name,HomeRegion]' 查找主区域。
其他资源
- references/iam-permissions.md — 各工作流所需的 IAM 权限
- references/audit-checklist.md — 各项控制的检查清单,包含严重性和通过条件
- references/encryption.md — 加密选项、KMS 指南及阻止 SSE-C 的方法
- references/remediation.md — 常见发现项的修复命令
- references/workflows.md — 工作流 A 和 E 的完整 CLI 命令序列
- AWS S3 安全最佳实践
- AWS Well-Architected 安全支柱