文章目录
- 专题总览
- 为什么需要加密?
- AWS KMS(密钥管理服务)
- KMS 密钥类型
- AWS KMS(密钥管理服务)
- Copying Snapshots across regions
- KMS Key Policies
- 在不同账户之间复制快照
- KMS Multi-Region Keys (多区域密钥)
- DynamoDB 全局表和 KMS 多区域密钥客户端端加密
- 全局 Aurora 和 KMS 多区域密钥客户端端加密
- S3 Replication
- Encryption Considerations
- 通过 KMS 加密的 AMI 共享过程
- SSM Parameter Store
- SSM Parameter Store Hierarchy
- Standard and advanced parameter tiers
- Parameters Policies(用于高级参数)
- AWS Secrets Manager
- AWS Secrets Manager - 多区域密钥
- AWS Certificate Manager(ACM)
- ACM - 请求公共证书
- ACM - 导入公共证书
- ACM - 与 ALB 集成
- API Gateway - 终端节点类型
- ACM - 与 API Gateway 集成
- AWS WAF – Web Application Firewall
- WAF - Fixed IP while using WAF with a Load Balancer
- AWS Shield:保护免受 DDoS 攻击
- AWS Firewall Manager
- WAF vs. Firewall Manager vs. Shield
- AWS DDoS 防御最佳实践
- 边缘位置缓解(BP1、BP3)
- DDoS 缓解的最佳实践
- 应用层防御
- 攻击面减少
- Amazon GuardDuty
- Amazon Inspector
- Amazon Inspector 评估了什么?
- AWS Macie
专题总览
专题内容总览和系列博客目录
https://blog.csdn.net/weixin_40815218/article/details/135590291
辅助资料(PDF)
https://download.csdn.net/download/weixin_40815218/88741566
KMS, Encryption SDK, SSM Parameter Store
为什么需要加密?
- 传输中的加密(SSL)
- 在发送之前对数据进行加密,在接收之后进行解密
- SSL证书有助于加密(HTTPS)
- 传输中的加密确保不会发生中间人攻击(MITM)
- 服务器端的静态加密
- 数据在接收后进行加密
- 数据在发送之前进行解密
- 它以加密形式存储,依靠一个密钥(通常是数据密钥)
- 加密/解密密钥必须在某处进行管理,并且服务器必须能够访问它
- 客户端的加密
- 数据由客户端加密,服务器不会解密
- 数据将由接收客户端解密
- 服务器不应该能够解密数据
- 可以利用信封加密(Envelope Encryption)
AWS KMS(密钥管理服务)
- 每当您听到AWS服务中的“加密”时,很可能是指KMS
- AWS为我们管理加密密钥
- 与IAM完全集成,用于授权
- 简单控制对数据的访问
- 可以使用CloudTrail审计KMS密钥的使用情况
- 与大多数AWS服务(如EBS、S3、RDS、SSM等)无缝集成
- 永远不要以明文形式存储您的机密信息,尤其是在代码中!
- KMS密钥加密也可通过API调用(SDK、CLI)进行
- 加密的机密信息可以存储在代码或环境变量中
KMS 密钥类型
- KMS密钥是KMS客户主密钥的新名称
- 对称密钥(AES-256密钥)
- 用于加密和解密的单个加密密钥
- 与KMS集成的AWS服务使用对称CMK
- 您无法直接访问未加密的KMS密钥(必须调用KMS API)
- 非对称密钥(RSA和ECC密钥对)
- 公钥(加密)和私钥(解密)配对
- 用于加密/解密或签名/验证操作
- 公钥可供下载,但无法直接访问未加密的私钥
- 用例:无法调用KMS API的用户在AWS之外进行加密
AWS KMS(密钥管理服务)
- 有三种类型的KMS密钥:
- AWS托管密钥:免费(aws/service-name,例如:aws/rds或aws/ebs)
- 在KMS中创建的客户托管密钥(CMK):每月1美元
- 导入的客户托管密钥(必须是256位对称密钥):每月1美元
- 需要为KMS的API调用付费(每10000次调用0.03美元)
- 自动密钥轮换:
- AWS托管的KMS密钥:每年自动轮换一次
- 客户托管的KMS密钥:(必须启用)每年自动轮换一次
- 导入的KMS密钥:只能使用别名进行手动轮换
Copying Snapshots across regions
KMS Key Policies
- 控制对 KMS 密钥的访问,类似于 S3 桶策略
- 不同之处在于,没有密钥策略就无法控制访问
- 默认 KMS 密钥策略:
- 如果不提供特定的 KMS 密钥策略,则会创建默认策略
- 根用户(整个 AWS 账户)对密钥具有完全访问权限
- 自定义 KMS 密钥策略:
- 定义可以访问 KMS 密钥的用户和角色
- 定义可以管理密钥的人员
- 用于跨账户访问 KMS 密钥的场景
在不同账户之间复制快照
- 创建用您自己的 KMS 密钥(客户托管密钥)加密的快照
- 添加 KMS 密钥策略以授权跨账户访问
- 共享加密的快照
- (在目标账户中)创建快照的副本,使用您账户中的 CMK 进行加密
- 从快照创建卷
KMS Multi-Region Keys (多区域密钥)
- 在不同 AWS 区域中可互换使用的相同 KMS 密钥
- 多区域密钥具有相同的密钥ID、密钥材料、自动轮换…
- 在一个区域中进行加密,在其他区域中进行解密
- 无需重新加密或进行跨区域 API 调用
- KMS 多区域密钥不是全局的(主要+副本)
- 每个多区域密钥都是独立管理的
- 用例:全局客户端端加密、全局 DynamoDB 加密、全局 Aurora 加密
DynamoDB 全局表和 KMS 多区域密钥客户端端加密
- 我们可以使用 Amazon DynamoDB 加密客户端在 DynamoDB 表中对特定属性进行客户端端加密
- 结合全局表,客户端端加密的数据会被复制到其他区域
- 如果我们使用一个与 DynamoDB 全局表在同一区域复制的多区域密钥,则这些区域中的客户端可以使用低延迟的 API 调用来解密客户端端加密的数据
- 使用客户端端加密,我们可以保护特定字段,并且只有在客户端具有 API 密钥访问权限时才能进行解密
全局 Aurora 和 KMS 多区域密钥客户端端加密
- 我们可以使用 AWS 加密 SDK 在 Aurora 表中对特定属性进行客户端端加密
- 结合 Aurora 全局表,客户端端加密的数据会被复制到其他区域
- 如果我们使用一个与全局 Aurora 数据库在同一区域复制的多区域密钥,则这些区域中的客户端可以使用低延迟的API调用来解密客户端端加密的数据
- 使用客户端端加密,我们可以保护特定字段,并且即使是数据库管理员也无法解密这些字段
S3 Replication
Encryption Considerations
- 未加密的对象和使用 SSE-S3 加密的对象默认会被复制
- 使用 SSE-C(用户提供的密钥)加密的对象永远不会被复制
- 对于使用 SSE-KMS 加密的对象,需要启用以下选项:
- 指定要在目标存储桶中加密对象的 KMS 密钥
- 调整目标密钥的 KMS 密钥策略
- 源 KMS 密钥需要具有 kms:Decrypt 权限,目标KMS密钥需要具有 kms:Encrypt 权限的 IAM 角色
- 可能会遇到 KMS 限制错误,这时可以请求增加服务配额
- 可以使用多区域 AWS KMS 密钥,但 Amazon S3 当前将其视为独立的密钥(对象仍然会被解密然后再加密)
通过 KMS 加密的 AMI 共享过程
- 源帐户中的 AMI 使用源帐户的 KMS 密钥进行加密
- 必须修改镜像属性,添加与指定目标 AWS 帐户对应的启动权限
- 必须与目标帐户/IAM角色共享用于加密 AMI 引用的快照的KMS密钥
- 目标帐户中的 IAM 角色/用户必须具有 DescribeKey、ReEncrypt、CreateGrant、Decrypt 权限
- 从 AMI 启动 EC2 实例时,目标帐户可以选择在自己的帐户中指定一个新的 KMS 密钥来重新加密卷
SSM Parameter Store
- 安全存储配置和密钥的地方
- 可选使用 KMS 进行无缝加密
- 无服务器、可伸缩、持久、易于使用的 SDK
- 版本跟踪配置/密钥
- 通过 IAM 实现安全性
- 使用 Amazon EventBridge 进行通知
- 与 CloudFormation 集成
SSM Parameter Store Hierarchy
Standard and advanced parameter tiers
Standard | Advanced | |
---|---|---|
Total number of parameters allowed (per AWS account and Region) | 10,000 | 100,000 |
Maximum size of a parameter value | 4kb | 8kb |
Parameter policies available | No | Yes |
Cost | No additional charge | Charges Apply |
Storage Pricing | Free | $0.05 per advanced parameter per month |
Parameters Policies(用于高级参数)
- 允许为参数分配TTL(过期日期),以强制更新或删除敏感数据,如密码
- 可以同时分配多个策略
AWS Secrets Manager
- 较新的服务,用于存储机密信息
- 具有每X天强制轮换机密的功能
- 在轮换时自动生成机密(使用 Lambda)
- 与 Amazon RDS(MySQL、PostgreSQL、Aurora)集成
- 使用 KMS 加密机密信息
- 主要用于 RDS 集成
AWS Secrets Manager - 多区域密钥
- 在多个 AWS 区域复制机密信息
- Secrets Manager 使读取副本与主要机密信息保持同步
- 能够将读取副本机密信息提升为独立的机密信息
- 适用于多区域应用程序、灾难恢复策略、多区域数据库等情况
AWS Certificate Manager(ACM)
- 简单地提供、管理和部署TLS证书
- 为网站提供在传输过程中的加密(HTTPS)
- 支持公共和私有TLS证书
- 公共TLS证书免费
- 自动TLS证书更新
- 与以下服务集成(加载TLS证书):
- 弹性负载均衡器(CLB、ALB、NLB)
- CloudFront分发
- API Gateway上的API
- 无法与EC2一起使用ACM(无法提取)
ACM - 请求公共证书
- 列出要包含在证书中的域名
- 完全限定域名(FQDN):corp.example.com
- 通配符域名:*.example.com
- 选择验证方法:DNS 验证或电子邮件验证
- DNS 验证适用于自动化目的
- 电子邮件验证将向 WHOIS 数据库中的联系地址发送电子邮件
- DNS 验证将利用 CNAME 记录到 DNS 配置(例如:Route 53)
- 验证需要几个小时
- 公共证书将自动续订
- ACM 会在证书到期前60天自动续订由ACM生成的证书
ACM - 导入公共证书
- 可选择在 ACM 之外生成证书,然后导入
- 没有自动续订,必须在到期前导入新证书
- ACM 会在到期前45天开始每天发送到期事件
- 可以配置天数
- 事件会显示在 EventBridge 中
- AWS Config 有一个名为 acm-certificate-expiration-check 的托管规则,用于检查到期的证书(可配置天数)
ACM - 与 ALB 集成
API Gateway - 终端节点类型
- 边缘优化(默认):针对全球客户端
- 请求通过 CloudFront 边缘位置路由(提高延迟)
- API Gateway 仍位于一个区域
- 区域:
- 针对同一区域内的客户端
- 可手动与 CloudFront 组合(对缓存策略和分发有更多控制)
- 私有:
- 只能通过使用接口 VPC 终端节点(ENI)从 VPC 访问
- 使用资源策略定义访问权限
ACM - 与 API Gateway 集成
- 在 API Gateway 中创建自定义域名
- 边缘优化(默认):针对全球客户端
- 请求通过 CloudFront 边缘位置路由(提高延迟)
- API Gateway 仍位于一个区域
- TLS 证书必须与 CloudFront 位于同一区域(us-east-1)
- 然后在 Route 53 中设置 CNAME 或(更好的)A-Alias 记录
- 区域:
- 针对同一区域内的客户端
- TLS 证书必须导入到 API Gateway 中,与 API Stage 位于相同的区域
- 然后在 Route 53 中设置 CNAME 或(更好的)A-Alias 记录
AWS WAF – Web Application Firewall
- 保护您的 Web 应用程序免受常见的 Web攻击(第7层)
- 第7层是 HTTP(与第4层的TCP/UDP不同)
- 部署在
- 应用负载均衡器
- API Gateway
- CloudFront
- AppSync GraphQL API
- Cognito用户池
- 定义 Web ACL(Web访问控制列表)规则:
- IP集:最多10,000个IP地址 - 使用多个规则来处理更多的IP地址
- HTTP标头,HTTP正文或URI字符串,保护免受常见攻击 - SQL注入和跨站脚本攻击(XSS)
- 大小约束,地理匹配(阻止国家)
- 基于速率的规则(用于计算事件的发生次数) - 用于防御DDoS攻击
- Web ACL 是区域性的,除了 CloudFront 之外
- 规则组是一组可重用的规则,可以添加到 Web ACL 中
WAF - Fixed IP while using WAF with a Load Balancer
- WAF 不支持网络负载均衡器(第4层)
- 可以在 ALB上 使用全球加速器获得固定 IP 和 WAF
AWS Shield:保护免受 DDoS 攻击
- DDoS:分布式拒绝服务 - 同时发出多个请求
- AWS Shield Standard:
- 免费服务,对每个 AWS 客户都激活
- 提供对 SYN/UDP Floods,反射攻击和其他攻击的保护
- AWS Shield Advanced:
- 可选的 DDoS 缓解服务(每个组织每月3,000美元)
- 保护 Amazon EC2,弹性负载均衡(ELB),Amazon CloudFront,AWS Global Accelerator 和 Route 53 免受更复杂的攻击
- 全天候访问 AWS DDoS 响应团队(DRP)
- 防止由于 DDoS 而产生的使用峰值时的更高费用
- Shield Advanced 自动应用层 DDoS 缓解会自动创建、评估和部署 AWS WAF 规则以缓解第7层攻击
AWS Firewall Manager
- 管理AWS组织中所有帐户的规则
- 安全策略:常见的安全规则集
- WAF 规则(应用负载均衡器,API Gateway,CloudFront)
- AWS Shield Advanced(ALB,CLB,NLB,弹性IP,CloudFront)
- EC2,应用负载均衡器和 VPC 中 ENI 资源的安全组
- AWS 网络防火墙(VPC级别)
- Amazon Route 53 Resolver DNS 防火墙
- 策略在区域级别创建
- 规则将应用于新资源的创建过程中,适用于组织中的所有和未来的帐户(适用于合规性)
WAF vs. Firewall Manager vs. Shield
- WAF,Shield 和 Firewall Manager 一起使用以实现全面的保护
- 在 WAF 中定义您的 Web ACL 规则
- 对于资源的精细保护,仅使用 WAF 是正确的选择
- 如果要跨帐户使用 AWS WAF,加速WAF配置,并自动保护新资源,请使用带有 AWS WAF 的 Firewall Manager
- Shield Advanced 在 AWS WAF 之上增加了其他功能,例如来自 Shield响应团队(SRT)的专门支持和高级报告。
- 如果经常遭受 DDoS 攻击,请考虑购买 Shield Advanced AWS DDoS 防御最佳实践 – 边缘位置防护 (BP1, BP3)
AWS DDoS 防御最佳实践
边缘位置缓解(BP1、BP3)
- BP1 – CloudFront
- 边缘处的 Web 应用程序传递
- 保护免受 DDoS 常见攻击(SYN洪水、UDP反射等)
- BP1 – 全球加速器
- 从边缘访问您的应用程序
- 与 Shield 集成提供 DDoS 保护
- 如果后端与 CloudFront 不兼容,则非常有用
- BP3 – Route 53
- 边缘处的域名解析
- DDoS 保护机制
DDoS 缓解的最佳实践
- 基础设施层的防御 (BP1, BP3, BP6)
- 保护Amazon EC2免受高流量攻击
- 包括使用全球加速器、Route 53、CloudFront、弹性负载均衡
- 使用自动缩放的 Amazon EC2 (BP7)
- 在突发流量增加或遭受DDoS攻击时帮助进行扩展
- 弹性负载均衡 (BP6)
- 弹性负载均衡能够随着流量增加而扩展,并将流量分发到多个EC2实例
应用层防御
- 检测和过滤恶意的Web请求 (BP1, BP2)
- CloudFront 缓存静态内容并从边缘位置提供,保护后端
- AWS WAF 在 CloudFront 和应用负载均衡器之上用于根据请求标志过滤和阻止请求
- WAF 基于速率的规则可以自动阻止恶意IP
- 使用 WAF 上的托管规则根据IP声誉阻止攻击,或阻止匿名 IP
- CloudFront 可以阻止特定地理区域的请求
- Shield Advanced (BP1, BP2, BP6)
- Shield Advanced自动应用层DDoS缓解会自动创建、评估和部署 AWS WAF 规则以缓解第7层攻击
攻击面减少
- 模糊化AWS资源 (BP1, BP4, BP6)
- 使用 CloudFront、API Gateway、弹性负载均衡来隐藏后端资源(Lambda函数、EC2实例)
- 安全组和网络 ACL (BP5)
- 使用安全组和网络 ACL 根据特定IP在子网或ENI级别进行流量过滤
- 弹性IP 受 AWS Shield Advanced 保护
- 保护API端点 (BP4)
- 隐藏 EC2、Lambda 等
- 边缘优化模式,或者 CloudFront + 区域模式(更多DDoS控制)
- 使用 WAF + API Gateway:限制请求速率、过滤请求头、使用API密钥
Amazon GuardDuty
- 智能威胁发现,保护您的 AWS 账户
- 使用机器学习算法、异常检测和第三方数据
- 一键启用(30天试用),无需安装软件
- 输入数据包括:
- CloudTrail 事件日志 - 异常的API调用,未经授权的部署
- CloudTrail 管理事件 - 创建VPC子网,创建跟踪等
- CloudTrail S3 数据事件 - 获取对象,列出对象,删除对象等
- VPC 流量日志 - 异常的内部流量,异常的 IP 地址
- DNS 日志 - 被入侵的 EC2 实例在 DNS 查询中发送编码数据
- Kubernetes 审计日志 - 可疑活动和潜在的 EKS 集群受损情况
- CloudTrail 事件日志 - 异常的API调用,未经授权的部署
- 可以设置 EventBridge 规则以在发现情况下接收通知
- EventBridge 规则可以指向 AWS Lambda 或 SNS
- 可以防范加密货币攻击(有专门的“发现”功能)
Amazon Inspector
- 自动化安全评估
- 适用于 EC2 实例
- 利用 AWS 系统管理器(SSM)代理
- 分析意外的网络可访问性
- 分析正在运行的操作系统是否存在已知漏洞
- 适用于推送到 Amazon ECR 的容器镜像
- 在推送容器镜像时进行评估
- 适用于 Lambda 函数
- 识别函数代码和包依赖中的软件漏洞
- 在部署函数时进行评估
- 报告和与 AWS Security Hub 集成
- 将发现结果发送到 Amazon Event Bridge
Amazon Inspector 评估了什么?
- 请记住:仅适用于 EC2 实例、容器镜像和 Lambda 函数
- 对基础设施进行持续扫描,只在需要时进行
- 包漏洞(EC2、ECR和Lambda)- CVE 漏洞数据库
- 网络可达性(EC2)
- 为所有漏洞分配风险评分以进行优先处理
AWS Macie
- Amazon Macie 是一项完全托管的数据安全和数据隐私服务,利用机器学习和模式匹配来发现和保护您在AWS 中的敏感数据。
- Macie 有助于识别和提醒您有关敏感数据的信息,如个人身份信息(PII)。