一、优先级总览
AWS 安全策略落地可以按 Critical → High → Medium → Low 四级优先级推进。每级的分界如下:
| 优先级 | 含义 | 落地建议 |
|---|---|---|
| Critical | 安全基线必备,不配等于裸奔 | 上线前必须启用 |
| High | 重要加固项,大部分环境应启用 | 上线初期完成 |
| Medium | 最佳实践增强 | 持续迭代补齐 |
| Low | 合规兜底或次要检测项 | 有余力时覆盖 |
二、Critical — 安全基线
组织与账号管理
SCP 层面首先要锁定组织边界:
- Guardrail-Deny-Leave-Organization — 禁止成员账号退出组织或关闭账号,挂 Root OU
- Deny Root User Actions — 禁止 Root 执行除恢复/计费/支持外的操作,需 BreakGlass OU 豁免
- Deny Root User Access Keys — 禁止为 Root 创建访问密钥
这三条 SCP 是所有 AWS 组织的第一道防线。Root 密钥泄露是最高级别的安全事故,必须从一开始就杜绝。
审计与日志保护
审计日志的完整性比日志本身更重要——攻击者进来第一件事往往是删日志。
- Guardrail-Deny-Audit-Services-Tampering — 禁止停止/删除/修改 CloudTrail(无豁免)、Config/GuardDuty/SecurityHub/Inspector(豁免 Terraform 角色)
- Guardrail-Protect-Security-Audit-Storage — 保护审计 S3 桶和 CloudWatch 日志组不被删除或篡改
- CT Managed SCPs — CT 自动维护的 Guardrail,禁止修改 CT 管理的 CloudTrail/Config/日志组等资源
- Detect CloudTrail/CloudTrail Lake Enabled — 检测性 Guardrail,发现未启用 CloudTrail 的账号
- Detect Log Archive S3 Public Access — 发现审计桶被公开
存储与数据保护
数据保护在 AWS 安全中覆盖面最广,从 S3 到 EBS 到 RDS 都需要兜底策略:
SCP 层面:
- Guardrail-Deny-Insecure-Data-Creation — 强制 S3 加密、拒绝公开 ACL/策略、强制 EBS/RDS 加密、拒绝公开 EBS 快照
账号配置层面:
- S3 Bucket Default Encryption — 所有 S3 桶开启默认加密(桶级兜底,防止未加密写入)
- S3 Bucket Versioning — 启用版本控制(防止误删/覆盖)
- S3 Account Level Block Public Access — 账号级别封闭所有 S3 桶公开访问(四项全开)
CT 预防性 Guardrail:
- Require S3 HTTPS
- Restrict S3 Access to Organization
- Require EBS Volume Encryption
- Require EBS Snapshot Encryption
- Deny EBS Snapshot Public Access
IAM 与访问控制
- Guardrail-Data-Perimeter-ResourceOrgID — 使用
aws:ResourceOrgID条件限制跨组织资源访问,使用StringNotEqualsIfExists避免影响服务写入 - Guardrail-Deny-All-Regions-Except-Allowed — 只允许指定区域操作,全局服务豁免
CT 预防性 Guardrail:
- Restrict Secrets Manager / SQS / STS / AppSync / Lambda 到组织或账号内
网络安全
- Guardrail-Deny-Org-Sharing-Discovery-Tampering — 禁止禁用 RAM 组织共享和删除 Resource Explorer 索引/视图
三、High — 重要加固
EC2 安全加固(CT Preventives)
- Deny EC2 Direct APIs / VM Import/Export / Deprecated Spot APIs
- Deny EBS Snapshot Public Sharing / AMI Public Sharing
- Disable EC2 Serial Console
KMS 安全加固
- Restrict KMS Grant to AWS Services 和 Require Minimum KMS RSA Key Length
审计桶保护
- Disallow Audit Bucket Policy Changes / Require Audit Bucket Retention Policy / Enable Audit Bucket Logging
IAM 与访问控制
- Guardrail-Deny-IAM-Access-Key-Creation — 禁止创建 IAM 用户访问密钥,强制使用 SSO
- Mandate Permission Boundary — 强制 IAM Role/User 绑定 Permission Boundary(挂 Workloads/Prod OU)
Config 检测规则(Detective)
以下 Config Rules 建议在核心账号启用:
- ROOT_ACCOUNT_MFA_ENABLED — Root 是否启用 MFA
- INCOMING_SSH_DISABLED — 安全组是否允许
0.0.0.0/0SSH - RESTRICTED_INCOMING_TRAFFIC — 安全组是否允许
0.0.0.0/0RDP - RDS_INSTANCE_PUBLIC_ACCESS_CHECK — RDS 是否公开
- RDS_SNAPSHOTS_PUBLIC_PROHIBITED — RDS 快照是否公开
- RDS_STORAGE_ENCRYPTED — RDS 是否加密
- ENCRYPTED_VOLUMES — EBS 是否加密
- S3_BUCKET_PUBLIC_READ_PROHIBITED / S3_BUCKET_PUBLIC_WRITE_PROHIBITED — S3 桶公开读写
- EC2_VOLUME_INUSE_CHECK — 未挂载 EBS 卷
- CLOUD_TRAIL_VALIDATION_ENABLED — CloudTrail 日志完整性校验
四、Medium — 最佳实践增强
存储与数据保护(Config Rules)
- S3_BUCKET_SERVER_ACCESS_LOGGING_ENABLED — S3 桶启用服务端访问日志
- KMS_KEY_ROTATION_ENABLED — KMS 密钥自动轮转
审计与日志保护
- VPC_FLOW_LOGS_ENABLED — VPC 子网 Flow Logs
- RDS_DELETION_PROTECTION_ENABLED — RDS 删除保护
- IAM Access Analyzer — 组织级启用,检测外部实体访问
- Config All Resource Types / Enable All Regions — Config 全面录制
- Security Hub — 启用并集成 Config/GuardDuty
Detective(Config Rules)
- 公开端点检测 — 检测公开 Redshift / EKS / EC2 公网 IP / 子网公网 IP / IGW 路由
- 服务公开检测 — 检测 OpenSearch VPC / Lambda 公开 / SSM 公开 / DMS 公开 / EMR 公开 / SageMaker 公网
RCP(Resource Control Policies)
RCP 是较新的策略类型,用于限制成员账号内的资源访问主体。建议逐步引入:
- S3 Data Perimeter / KMS Data Perimeter / SQS Data Perimeter
- Secrets Manager Data Perimeter / STS Trust Boundary
注意:RCP 需测试 SSO 兼容性,部分场景下可能误杀 IAM Identity Center 的正常调用。
五、Low — 合规兜底
- VPC_DEFAULT_SG_RESTRICTED — 默认安全组无规则
- EC2_INSTANCE_NO_PUBLIC_IP — EC2 绑定公网 IP
- EC2_DETAILED_MONITORING_ENABLED — EC2 详细监控
- IAM Password Policy — IAM 用户密码策略(仅在仍有 IAM 用户时需要)
六、Data Perimeter 覆盖范围
核心 SCP Guardrail-Data-Perimeter-ResourceOrgID 建议覆盖以下跨组织操作:
| 服务 | 应限制的操作 |
|---|---|
| S3 | GetObject, PutObject, DeleteObject, GetBucketPolicy, PutBucketPolicy |
| KMS | Decrypt, Encrypt, ReEncrypt*, GenerateDataKey*, CreateGrant, DescribeKey |
| EC2 | CopySnapshot, CreateSnapshots, ModifySnapshotAttribute |
| RDS | CopyDBSnapshot, CopyDBClusterSnapshot, ModifyDBSnapshotAttribute, ModifyDBClusterSnapshotAttribute, RestoreDBInstanceFromDBSnapshot, RestoreDBClusterFromSnapshot |
| SQS | SendMessage, ReceiveMessage, DeleteMessage |
| SNS | Publish, Subscribe |
| Secrets Manager | GetSecretValue, PutSecretValue, CreateSecret |
| Lambda | InvokeFunction, InvokeFunctionUrl |
七、不推荐的策略(避坑指南)
| 策略 | 原因 |
|---|---|
s3_sse_kms_required | 要求 PutObject 带 KMS Key ID,与 CloudTrail 日志写入冲突 |
s3_auth_header_required | 要求 authType=REST-HEADER,S3 控制台浏览被拦截 |
audit_bucket_encryption_enabled | 与 CloudTrail/Lambda 写入冲突 |
IAM-Role-Data-Perimeter (RCP) | 误杀 IAM Identity Center |
SNS-Data-Perimeter (RCP) | ap-northeast-1 暂不支持 |
原则:策略在应用中可能产生非预期的副作用。每一条 SCP 或 RCP 上线前,都应在非生产账号充分测试,特别是与托管服务(CloudTrail、Config、Control Tower)相关的策略。
八、落地路线建议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Phase 1 — 上线前(Critical)
├── 组织边界 SCP(Leave Org / Root 保护)
├── 审计服务防篡改 SCP + CT Guardrails
├── 存储强制加密(S3 / EBS / RDS)
├── 区域限制 + Data Perimeter SCP
└── S3 Block Public Access + Bucket 配置
Phase 2 — 上线初期(High)
├── EC2 / KMS 加固 CT Guardrails
├── 审计桶保护(策略变更 / 保留 / 日志)
├── IAM Access Key 禁用 + Permission Boundary
└── 核心 Config Rules 启用
Phase 3 — 持续迭代(Medium → Low)
├── VPC Flow Logs / RDS 删除保护
├── Security Hub 集成
├── RCP 逐步引入(测试兼容性)
├── 公开端点检测 Config Rules
└── 余项 Config Rules 补齐
附:策略类型速查
| 类型 | 缩写 | 作用范围 | 典型用途 |
|---|---|---|---|
| Service Control Policy | SCP | 整个 OU/账号 | 禁止/限制操作,组织级兜底 |
| Control Tower Guardrail | CT Preventive/Detective | OU 级别 | CT 托管的安全基线 |
| Resource Control Policy | RCP | 整个 OU/账号 | 限制资源可被谁访问 |
| AWS Config Rule | Config | 单账号 | 检测性合规检查 |
| Account Setting | — | 单账号 | 账号级配置(加密/版本控制) |
| Permission Boundary | PB | 单个 IAM 实体 | 角色/用户的最大权限边界 |