Guardrails 本质就是 CT 帮你写 SCP
Control Tower 的 Guardrails 在底层就是一条条 SCP,附加到对应的 OU 上。CT 帮你封装了”选个框就好”的体验,不用自己写 JSON。
三种 Guardrails 类型:
| 类型 | 含义 | 能否修改 |
|---|---|---|
| Mandatory | CT 强制开启,自动创建底层 SCP | 不可见不可改 |
| Strongly Recommended | CT 推荐的防护策略 | 可以关但不建议 |
| Optional | 可选策略 | 可以开可以关 |
Mandatory 类型的 SCP 用户不可见也不可删除(CT 后台托管),即使是管理员也无法绕过。
自定义 SCP 不受 CT 限制
用 Terraform 在 modules/scp/ 中手写的 SCP 策略和 CT Guardrails 互不相干:
- CT 不知道它们存在,也不会干预
- 两类 SCP 叠加生效(Effect 叠加,Deny 优先)
- 互不冲突,各自独立管理
控制边界与分工原则
SCP 可以从三个层级附加:Root OU(组织根)、具体 OU、单个账号。不同层级有不同分工:
| 控制层级 | 策略来源 | 影响范围 | 典型场景 |
|---|---|---|---|
| Root OU | 自定义 SCP | 组织内所有账号 | 全局统一限制:禁止退出组织、禁止禁用 CloudTrail、禁止修改 SCP 本身 |
| OU | CT Guardrails(强制) | 该 OU 下所有账号 | CT 后台托管,即使管理员也不可见不可改 |
| OU | CT Guardrails(强烈推荐/可选) | 该 OU 下所有账号 | 基础防护:禁止 Root 访问密钥、S3 公开访问限制、CloudTrail 启用等 |
| OU | 自定义 SCP | 该 OU 下所有账号 | 组织级高级策略:Data Perimeter、权限边界强制、特定服务限制 |
| 单账号 | 自定义 SCP(少用) | 仅该账号 | 特殊例外账号的差异化限制 |
各层叠加规则:多个 SCP 同时生效,Deny 优先。无论哪个层级,只要有一条 SCP 明确 Deny 了某个操作,该操作就会被禁止。
Control Preventive 和 root scp 的清单参考
CT Mandatory(~22 项,CT 自动强制启用)
CT Landing Zone 创建时自动启用,附加到所有 OU。底层 SCP 不可见、不可删、不可改:
| 类别 | 说明 |
|---|---|
| CloudTrail 保护 | 禁止停止/删除 CloudTrail、禁用组织级 Trail |
| AWS Config 保护 | 禁止停止/删除 Configuration Recorder |
| Root 用户保护 | 禁止 Root 用户执行管理操作 |
| SCP 保护 | 禁止删除/修改附加的 SCP |
| IAM Identity Center 保护 | 禁止删除/修改 SSO 配置 |
| 日志归档保护 | 禁止删除/修改审计日志归档 |
| 账号保护 | 禁止成员账号退出组织 |
Terraform 管理的 CT Controls(25 项,附加到 Security OU)
通过 modules/guardrails/main.tf 管理,覆盖 audit 和 log-archive 账号:
S3 数据保护(4 项)
| Control | 作用 |
|---|---|
| S3 SSE-KMS 加密要求 | 所有 S3 上传必须使用 SSE-KMS |
| S3 Authorization Header 要求 | 所有请求必须携带签名 |
| S3 HTTPS 传输强制 | 拒绝 HTTP 请求 |
| S3 组织内访问限制 | 禁止组织外访问 S3 |
EC2 安全加固(8 项)
| Control | 作用 |
|---|---|
| EBS 卷加密 | 禁止创建未加密卷 |
| EBS 快照加密 | 快照必须从加密卷创建 |
| EBS 快照禁止公开 | 禁止公开共享快照 |
| EC2 直接 API 禁止 | 禁止调用 EC2 直接 API |
| EC2 VM 导入导出禁止 | 禁止导入导出虚拟机 |
| 废弃 Spot API 禁止 | 禁止使用已废弃的 Spot API |
| EC2 串行控制台禁用 | 禁止启用串行控制台 |
| AMI 公开共享禁止 | 禁止公开共享 AMI |
KMS 安全加固(2 项)
| Control | 作用 |
|---|---|
| KMS Grant 限制 | 仅允许授权给 AWS 服务 |
| KMS RSA 密钥最小长度 | RSA 密钥必须满足最小长度 |
Lambda 安全(2 项)
| Control | 作用 |
|---|---|
| Lambda IAM 认证 | Lambda URL 必须使用 IAM 认证 |
| Lambda 账号内访问 | 仅允许账号内调用 |
服务级组织内访问限制(4 项)
| Control | 作用 |
|---|---|
| Secrets Manager 组织内访问 | 禁止组织外读取 Secrets |
| SQS 组织内访问 | 禁止组织外访问 SQS |
| STS 组织内访问 | 禁止组织外使用 STS |
| AppSync 私有 API | 禁止 AppSync 公开访问 |
审计桶保护(4 项)
| Control | 作用 |
|---|---|
| 审计桶策略变更禁止 | 禁止修改审计桶策略 |
| 审计桶加密启用 | 强制审计桶加密 |
| 审计桶日志启用 | 强制启用访问日志 |
| 审计桶保留策略 | 强制配置保留策略 |
未启用的 Preventive Control 还有 ~22 项:VPC 公网/IGW/跨区域网络/VPN 等 4 项因架构冲突暂未启用;KMS XKS、Backup、AppSync 等 ~18 项可按需评估启用。
Terraform 管理的自定义 SCP(8 条,附加到 Root OU)
通过 modules/scp/main.tf 管理,全局生效(CT Control 无法附加到 Root OU):
| # | 策略名 | 核心禁止操作 | 豁免 |
|---|---|---|---|
| 1 | 禁止退出组织 | organizations:LeaveOrganization、account:CloseAccount | 无 |
| 2 | 审计服务防篡改 | cloudtrail:StopLogging/DeleteTrail、config:StopConfigurationRecorder、guardduty:DeleteDetector、securityhub:DisableSecurityHub、inspector2:Disable | CloudTrail 零豁免;Config/GuardDuty/Security Hub/Inspector 豁免 Terraform Role |
| 3 | 组织共享保护 | ram:DisableSharingWithAwsOrganization、resource-explorer-2:DeleteIndex/View | 无 |
| 4 | 不安全数据创建拦截 | S3 公开 ACL/策略、未加密 EBS/RDS、公开 EBS 快照 | 无 |
| 5 | 审计 S3 桶保护 | 删除/修改 CT 审计桶和日志组 | 豁免 Terraform Role |
| 6 | Data Perimeter | 跨组织访问 S3/KMS/EC2(aws:ResourceOrgID) | 无 |
| 7 | 区域白名单 | 非允许区域操作(全局服务豁免列表) | 无 |
| 8 | S3 Block Public Access(账号级资源) | 4 层封锁(Management/Audit/Log-Archive) | Emergency 暂未配置 |