AWS 指导报表
Site24x7 的 Amazon Web Services 指导报表检查了 AWS 服务(如 EC2、RDS、IAM、S3、SES 等)的配置和资源利用率,并提供了优化成本、提高 AWS 账户容错能力和性能的建议。下面,我们按 AWS 服务对 185 项最佳实践检查进行了分组。
目录
资源级最佳实践检查
您现在可以在指标报表选项卡中查看每个 AWS 资源的最佳实践建议。此处提供了内置仪表板可用的 AWS 服务。以下是带有内置最佳实践建议的 Amazon EC2 监控仪表板。
AWS 最佳实践检查
建议检查按 AWS 服务命名空间分组。
Amazon Elastic Compute Cloud (EC2)
1. 未充分利用的 EC2 实例(优先级:中等)
基线:
检查 Amazon Elastic Compute Cloud (EC2) 实例的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon EC2,您将根据实例类型和消耗的小时数付费。您可以通过识别和停止利用率低的实例来降低成本。此外,我们还显示当前实例类型并推荐您可以降级到的所需实例类型(建议的实例类型)以更好地降低成本。
所需权限:
“ec2:DescribeInstances”、“cloudwatch:GetMetricData”、“cloudwatch:GetMetricStatistics”和“cloudwatch:ListMetrics”
2. EC2 安全组 – 对特定端口的无限制访问(优先级:高)
基线:
检查受监控 EC2 实例的安全组中是否存在允许对以下端口进行无限制访问的规则:20、21、22、1433、1434、3306、3389、4333、5432 或 5500。
描述:
不受限制的访问可能导致 DDoS 攻击或恶意流量到达您的应用程序。
推荐:
将 TCP 端口 80 和 443 公开到 Internet,并最大限度地减少攻击者的机会。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeSecurityGroups”
3.未映射的弹性IP地址(优先级:中等)
基线:
检查分配的弹性 IP 地址是否与活动的 EC2 实例或网络接口相关联。
描述:
弹性 IP 是一个静态的公共 IPv4 地址。当您将弹性 IP 与 EC2 实例或网络接口相关联时,实例的现有公有 IP 地址将被释放回可用地址池中。使用弹性 IP 地址,您可以通过解除 IP 地址与资源的关联并重新映射到同一账户中的不同地址来隐藏实例或资源的故障。
推荐:
为了有效利用,Amazon Web 服务将所有账户的每个区域的弹性 IP 数量限制为 5 个。此外,对未使用的地址收取少量的小时费。因此,要么将弹性 IP 与活动实例/接口相关联,要么将其释放回池中。
所需权限:
“ec2:DescribeInstances”
4、EC2实例终止保护(优先级:高)
基线:
检查 EC2 实例的配置以查看是否启用了终止保护。
描述:
终止保护可保护您的实例免遭意外删除,并确保 AutoScaling 策略在缩减时不会终止特定的 EC2 实例。
推荐:
EC2 实例终止保护默认禁用。启用以防止意外实例终止。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeInstanceAttribute”
5. Amazon EC2-VPC 安全组 - 规则太多(优先级:中等)
基线:
检查并识别具有超过 50 个入站和出站规则的 Amazon EC2-VPC 安全组。
描述:
在 VPC 中启动实例时,您最多可以指定五个与该实例关联的安全组。对于每个安全组,您可以添加控制入站和出站流量的规则。如果安全组具有大量规则,则可能会影响实例性能。
推荐:
删除 EC2-VPC 安全组中不必要或重叠的规则。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeSecurityGroups”
6. Amazon EC2-VPC 实例 - 分配了太多规则的安全组(优先级:中等)
基线:
检查具有超过 50 条规则(入站和出站)的安全组的 Amazon EC2-VPC 实例。
描述:
在 VPC 中启动实例时,您最多可以指定五个与该实例关联的安全组。对于每个安全组,您可以添加控制入站和出站流量的规则。如果安全组具有大量规则,则可能会影响实例性能。
推荐:
减少关联 VPC 安全组中配置的规则数量。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeSecurityGroups”
7. 未标记的 EC2 实例(优先级:信息)
基线:
检查 Elastic Compute Cloud (EC2) 实例中的用户定义标签(键值对)。
描述:
AWS 允许用户以标签(键值对)的形式分配元数据,以更好地跟踪和管理实例、图像和 AutoScaling 组。组织提出了相关的标签分组和实用的标签策略来有效地管理他们的 EC2 资源场。
推荐:
创建符合 AWS 最佳实践的标记策略。
所需权限:
“ec2:DescribeInstances”
8. Amazon EC2 - 高实例利用率(优先级:高)
基线:
检查 Amazon EC2 的性能计数器并识别似乎被高度利用的实例。
描述:
如果 EC2 实例满足以下条件,则视为过度使用:
- 过去 7 天 EC2 实例的平均每日 CPU 使用率超过 90%。
- 过去 7 天,EC2 实例的平均每日内存利用率超过 90%(仅当您在 EC2 实例上部署了我们的代理时才适用)。
推荐:
考虑更改实例大小或将实例添加到 Autoscaling 组。
9. Auto Scaling 组 (EC2) - 多可用区(优先级:中等)
基线:
检查在单个可用区 (AZ) 中启动实例的 Auto Scaling 组
描述:
您可能已经知道,容纳您的 EC2 实例的 AWS 系统托管在高可用性数据中心中。Auto Scaling 允许您跨多个可用区分布 Auto Scaling 组,从而利用这种地理隔离。
推荐:
消除单点故障并提高应用程序的可用性。
所需权限:
“autoscaling:DescribeAutoScalingGroups”
10.启动配置——安全组不存在(优先级:高)
基线:
识别具有无效或已删除安全组的启动配置。
描述:
启动配置确定 Auto Scaling 为您创建的 EC2 实例的各个方面(AMI、实例类型、存储、标签等)。如果启动配置中提到的安全组名称不存在,实例将无法启动。
推荐:
创建一个新的启动配置并为 Auto Scaling 组更新它。
所需权限:
“autoscaling:DescribeLaunchConfigurations”
11. Amazon EC2 的 IAM 角色(优先级:高)
基线:
检查受监控的 EC2 实例的配置并识别没有 IAM 角色的资源。
描述:
在微服务架构中,运行在 EC2 实例上的应用程序需要访问运行在其他 AWS 服务(例如,S3 存储桶、Lambda 或 DynamoDB)上的资源。要提供对资源的访问,您可以创建 AWS 凭证并将其分发给实例(并承担未来轮换或更新它们的开销)或使用 IAM 角色将权限委派给资源以发出 API 请求。
推荐:
为您的 EC2 实例创建一个 IAM 角色,以将权限委派给资源以发出 API 请求。
所需权限:
“ec2:DescribeInstances”
12. EC2 实例未附加到 AutoScaling 组(优先级:info)
基线:
检查未与任何 AutoScaling 组关联的 Elastic Compute Cloud (EC2) 实例。
描述:
AutoScaling 可帮助您根据需求纵向扩展和缩减计算资源。通过创建称为 AutoScaling 组的 EC2 实例组,您可以指定所需的容量或分配策略,以确保最佳数量的 EC2 实例可用于处理传入的应用程序请求。
推荐:
将您的 EC2 实例组织为 AutoScaling 组。
所需权限:
“ec2:DescribeInstances” “autoscaling:DescribeAutoScalingGroups”
13. 未在 VPC 内启动的 EC2 实例(优先级:中等)
基线:
检查在 EC2 Classic 平台中启动的 Elastic Compute Cloud (EC2) 实例。
描述:
Amazon EC2 网络分为两个平台 - EC2 Classic 和 EC2 VPC。当您在 Classic 平台中启动实例时,您的实例将在由其他 AWS 租户共享的网络中启动。而当您在 VPC 中启动实例时,您的资源在逻辑上与其他网络隔离。
推荐:
将您的实例迁移到 VPC。
所需权限:
“ec2:DescribeInstances”
14. EC2系统状态检查失败(优先级:高)
基线:
系统可达性检查失败。
描述:
系统状态检查是由 Amazon EC2 执行的自动检查。此检查监控托管您的 EC2 实例的 AWS 物理基础设施的运行可靠性。
推荐:
设置自动操作以重新启动实例。如果实例经常无法通过系统检查,请尝试更换实例或更改为当前一代实例类型。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeInstanceStatus”
15、EC2实例状态检查失败(优先级:高)
基线:
实例可达性检查失败。
描述:
实例状态检查是由 Amazon EC2 本身执行的自动检查。此检查通过发送地址解析协议 (ARP) 请求来确定实例的运行状况。
推荐:
检查操作系统和网络配置,检索系统日志以进行故障排除或设置自动操作以重新启动实例。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeInstanceStatus”
16. EC2 实例计划维护(优先级:中)
基线:
检查 Elastic Compute Cloud (EC2) 实例的计划维护事件。
描述:
AWS 会不时为您的实例计划系统维护活动,以在底层物理主机上执行日常维护任务。
推荐:
将受监控的 EC2 实例关联到 Site24x7 的智能维护窗口,以抑制告警并在停机期间继续监控。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeInstanceStatus”
17. 未使用的虚拟专用网关(优先级:低)
基线:
检查 Amazon 虚拟私有网关 (VGW) 的配置并识别未与 VPN 连接的 VPC 端关联的未使用 VGW。
描述:
应从 AWS 账户中删除每个未使用(分离的)AWS 虚拟私有网关,以促进更好的管理并防止达到服务限制。
推荐:
识别并删除您的 AWS 账户中预置的任何未使用的虚拟私有网关,以避免达到服务限制(默认情况下,每个 AWS 区域限制为 5 个 VGW - 附加或分离)。
所需权限:
“ec2:DescribeVpcs”
18. Amazon VPN 隧道 - UP(优先级:高)
基线:
确保您的 AWS 虚拟专用网络 (VPN) 隧道的状态为 UP,以确保网络流量流经您的虚拟专用网络。
描述:
持续监控您的 VPN 隧道将帮助您在发生故障时立即采取行动,以最大限度地延长正常运行时间并确保网络流量始终通过您的 Amazon VPN 连接。
推荐:
如果您的 AWS VPN 连接隧道当前处于脱机状态,请确保您的防火墙配置在防火墙策略中允许 VPN 连接隧道。
所需权限:
“ec2:DescribeVpnConnections”
19. Amazon VPC - 对等连接配置(优先级:中)
基线:
确保 Amazon VPC 对等连接配置符合所需的路由策略。
描述:
VPC 对等连接路由表的正确配置仅限制所需资源之间的流量,因此,当对等 VPC 无法访问这些路由之外的 AWS 资源时,可以有效地减少安全漏洞的影响。
推荐:
确定与您的对等 VPC 关联的路由表是否实施正确的路由策略。
所需权限:
“ec2:DescribeVpcPeeringConnections”和“ec2:DescribeRouteTables”
20. Amazon VPC - 流日志(优先级:中)
基线:
确保是否在所有适用的 AWS 区域中启用了 Virtual Private Cloud (VPC) 流日志功能。
描述:
启用后,VPC 流日志将开始收集进出 VPC 的网络流量数据,从而帮助您检测和解决安全问题,并确保网络访问规则不会被过度允许。当您的 VPC 网络中触发异常活动(例如被拒绝的连接请求或异常级别的数据传输)时,您也会收到通知。
推荐:
为您的 AWS VPC 启用流日志。
所需权限:
“ec2:DescribeVpcs”和“ec2:DescribeFlowLogs”
21. 为 NAT 网关分配弹性 IP(优先级:中)
基线:
确保为您要在 AWS 账户中部署的每个 NAT 网关分配一个弹性 IP。
描述:
为 NAT 网关分配弹性 IP,使用 NAT 设备使私有子网中的实例能够连接到 Internet 或其他 AWS 服务,但阻止 Internet 启动与实例的连接。您可以通过快速将地址重新映射到在您的 VPC 中启动的另一个实例来掩盖 EC2 实例的故障。
推荐:
为您要在 VPC 中部署的每个 NAT 网关分配一个 AWS 弹性 IP。
所需权限:
“ec2:DescribeVpcs”和“ec2:DescribeNatGateways”
22. 默认 VPC(优先级:中)
基线:
确保您的 AWS 应用程序未使用默认的 Virtual Private Cloud 部署,以便遵循安全最佳实践。
描述:
默认 VPC 适合快速入门,以及启动博客或简单网站等公共实例,但是,当您部署复杂的应用程序并使用多层架构时,您可能需要创建一个适合您特定的非默认 VPC要求。
推荐:
创建适合您特定要求的自己的(非默认)VPC 并将您的自定义 AWS 应用程序迁移到它。
所需权限:
“ec2:DescribeVpcs”和“ec2:DescribeInstances”
23. Amazon VPC - 托管 NAT 网关(优先级:中)
基线:
确保启用 AWS VPC 托管 NAT(网络地址转换)网关服务以实现高可用性 (HA)。
描述:
AWS 提供两种类型的 NAT 设备:托管 NAT 网关和 NAT 实例。使用具有内置冗余以实现高可用性的 AWS VPC 托管 NAT 网关服务使位于私有子网中的 EC2 实例能够连接到 Internet 或与其他 AWS 组件。
推荐:
为您的 AWS VPC 网络启用托管 NAT 网关服务。
所需权限:
“ec2:DescribeVpcs”和“ec2:DescribeNatGateways”
24. NAT 网关 - 多可用区(优先级:中)
基线:
确保您的 NAT 网关部署在至少两个可用区 (AZ) 中。
描述:
如果您在多个可用区内拥有 EC2 实例并且这些实例共享一个 NAT 网关,则在 AZ 发生故障时,NAT 网关将变得不可用,并且其他可用区内的资源将无法访问 Internet。通过在至少两个 AZ 中部署 NAT 网关来创建容错。
推荐:
通过在至少两个可用区 (AZ) 中部署 NAT 网关来消除单点故障并提高应用程序的可用性。
所需权限:
“ec2:DescribeVpcs”和“ec2:DescribeSubnets”
25.无效的网络ACL DENY规则(优先级:高)
基线:
确保 Amazon Network ACL DENY 规则在 VPC 配置中有效。
描述:
AWS 网络 ACL 是您的虚拟私有云的额外防御层,基本上是一个网络防火墙,您可以在其中设置允许或拒绝访问特定端口或 IP 范围的规则。AWS NACL 包含按顺序评估的编号规则列表,从编号最小的规则(例如 100)开始,以确定是否允许流量进出关联的 VPC 子网。网络 ACL 中的 DENY 规则的顺序至关重要,因为它们是按顺序评估的,任何无效或有缺陷的 DENY 规则都可以应用,而不管任何可能与之相矛盾的更高编号的规则。
推荐:
重新配置任何无效或错误配置的 AWS NACL DENY 规则,以便在子网级别阻止流向必要端口的流量。
所需权限:
“ec2:DescribeNetworkAcls”
26. 网络 ACL - 不受限制的入站流量(优先级:中)
基线:
确保没有 Amazon 网络 ACL 允许来自所有端口的入站/入站流量。
描述:
通过仅打开应用程序所需的端口来调节子网的入站/入站流量将为您的 VPC 添加额外的安全层,并防止恶意活动,例如拒绝服务 (DoS) 攻击或分布式拒绝服务 (DDoS)攻击。管理您的 AWS NACL 入站规则以实施最小权限原则并减少子网级别未经授权访问的可能性。
推荐:
更新您的 AWS NACL 入站规则配置,以便仅允许来自特定源端口或源端口范围的流量。
所需权限:
“ec2:DescribeNetworkAcls”
27. 网络 ACL - 不受限制的出站流量(优先级:中)
基线:
确保没有 Amazon 网络 ACL 允许所有端口的出站/出站流量。
描述:
通过仅打开应用程序所需的端口来控制一个或多个子网的出站流量将为您的 VPC 添加额外的安全层(安全组之后的第二层防御)。管理您的 AWS NACL 出站规则以实施最小权限原则并减少子网级别未经授权访问的可能性。
推荐:
更新您的 AWS NACL 入站规则配置,以便仅允许来自特定源端口或源端口范围的流量。
所需权限:
“ec2:DescribeNetworkAcls”
28. Private Subnets - 创建路由表(优先级:中)
基线:
检查是否创建了自定义路由表并将其与您的私有子网关联以控制子网路由。
描述:
要控制私有子网的路由,您需要创建自定义路由表。创建这些 VPC 资源后,Web、应用程序和数据层中应为私有的所有子网都可以与新路由表显式关联。路由表包含一组路由,用于确定网络流量的目的地。与私有子网关联的自定义路由表应仅包含指向 AWS NAT 网关的默认路由 (0.0.0.0/0)。一个私有子网一次只能与一个路由表关联,但是,您可以将多个私有子网与同一个路由表关联。
推荐:
创建自定义路由表并将其与您的私有子网关联。
所需权限:
“ec2:DescribeRouteTables”
29. Amazon VPC - 暴露的终端节点(优先级:中)
基线:
确保 Amazon VPC 终端节点不会暴露给所有人。
描述:
当访问策略中的 Principal 元素值设置为“*”时,VPC 终端节点允许使用来自任何 AWS 账户的凭证对 VPC 中的任何 IAM 用户或服务进行完全访问。以这种方式允许访问被认为是不好的做法,并可能导致安全问题。更新访问策略允许停止对受支持的服务和资源发出的任何未签名请求。
推荐:
通过更新访问策略来限制对您的 Amazon VPC 终端节点的访问。
所需权限:
“ec2:DescribeVpcEndpoints”
30. 使用 VPC 端点(优先级:中)
基线:
检查 Amazon Virtual Private Cloud (VPC) 终端节点是否用于将您的 VPC 安全地连接到其他 AWS 服务。
描述:
VPC 终端节点使您能够从您自己的 Amazon Virtual Private Cloud 私下访问特定的 AWS 服务,而无需使用公共 IP 地址,也无需流量数据通过 Internet 传输。
推荐:
使 VPC 终端节点能够通过私有链接连接到您的 VPC 网络之外的特定 AWS 服务。
所需权限:
“ec2:DescribeVpcEndpoints”
31.未使用的EC2弹性IP地址(优先级:低)
基线:
检查是否存在任何未使用的 EC2 弹性 IP 地址。
描述:
弹性 IP (EIP) 允许用户通过快速将地址重新映射到同一账户中的另一个实例来屏蔽实例故障或软件故障。如果您账户中的 EIP 地址未与正在运行的 EC2 实例或弹性网络接口 (ENI) 关联,AWS 会按小时收费。
推荐:
删除您的 AWS 账户中所有未使用的 EC2 EIP 地址并释放它们,以避免对您的每月 AWS 账单产生过多的费用。
32. 未使用的 EC2 安全组(优先级:低)
基线:
检查是否存在任何未使用的 Amazon EC2 安全组。
描述:
必须从 AWS 账户中删除每个未使用(分离)的 Amazon EC2 安全组,以避免为这些安全组产生额外费用。
推荐:
删除未附加到任何实例的安全组。这可确保未充分利用的安全组不会意外附加到 EC2 实例,从而无意中将环境开放给攻击。
33. EC2 实例不使用实例元数据服务
基线:
检查是否有任何 Amazon EC2 实例未使用实例元数据服务 (IMDSv2) 的 v2。
描述:
EC2 IMDS 用于查询实例元数据值。IMDS 本地连接到每个实例,并在特殊的“链接本地”IP 地址上运行。默认情况下,实例可以使用 IMDSv1 和 IMDSv2。当您将 IMDS 限制为仅 v2 (IMDSv2) 时,您可以进一步增强安全性,因此将 IMDSv2 用于 EC2 实例非常重要。
推荐:
通过对每个 EC2 实例使用 IMSDv2,添加额外的防御层来对抗网络漏洞。
34.确保每个VPC的默认安全组限制流量(优先级:低)
基线:
确定每个 VPC 实例的默认安全组是否限制流量。
描述:
AWS 默认安全组不限制所有入站和出站流量。默认情况下,VPC 带有一个安全组,其初始配置拒绝来自 Internet 的所有入站流量并允许所有出站流量。配置所有 VPC 默认安全组以限制所有流量,以免实例意外发送出站流量。
推荐:
确保 AWS EC2 默认安全组限制所有入站流量,并强制用户创建自定义安全组而不是使用默认安全组。
35. 停止的 EC2 实例应在指定时间段后删除
基线:
检查已停止的 EC2 实例是否存在超过允许的天数。
描述:
当 EC2 实例停止时,您仍然需要为存储付费;但是,当您终止它们时,收费也将终止。此外,如果 EC2 实例在指定时间内未运行,则可能会带来高风险,因为该实例可能没有得到积极维护。
推荐:
确保在指定时间段后没有停止的 EC2 实例。
36. 未使用的 Amazon EC2 安全组(优先级:低)
资源级说明:
未使用的 Amazon EC2 安全组可能会产生额外费用。
基线:
检查是否存在任何未使用的 Amazon EC2 安全组。
描述:
必须从 AWS 账户中删除每个未使用(分离)的 Amazon EC2 安全组,以避免为这些安全组产生额外费用。
推荐:
删除未附加到任何实例的安全组。这可确保未充分利用的安全组不会意外附加到 EC2 实例,从而无意中将环境开放给攻击。
37. EC2 实例不使用实例元数据服务(优先级:低)
资源级说明:
不使用 IMDSv2 的 Amazon EC2 实例可能会影响网络安全。
基线:
检查是否有任何 Amazon EC2 实例未使用实例元数据服务 (IMDSv2) 的 v2。
描述:
EC2 IMDS 用于查询实例元数据值。IMDS 本地连接到每个实例,并在特殊的“链接本地”IP 地址上运行。默认情况下,实例可以使用 IMDSv1 和 IMDSv2。当您将 IMDS 限制为仅 v2 (IMDSv2) 时,您可以进一步增强安全性,因此将 IMDSv2 用于 EC2 实例非常重要。
推荐:
通过对每个 EC2 实例使用 IMSDv2,添加额外的防御层来对抗网络漏洞。
38. 与负载平衡关联的 Auto Scaling 组的运行状况检查(优先级:中)
资源级说明:
与负载平衡关联的 ASG 必须使用负载平衡运行状况检查来确保资源的可用性。
基线:
检查与负载平衡关联的 Auto Scaling 组 (ASG) 是否具有负载平衡的运行状况检查配置。
描述:
Auto Scaling 组的默认运行状况检查仅是 EC2 状态检查,如果实例未通过负载平衡提供的运行状况检查,ASG 不会认为实例运行状况不佳。您可以通过将 ASG 配置为使用负载平衡运行状况检查来确定负载平衡的实例运行状况。
推荐:
向 ASG 添加负载平衡运行状况检查,以便实例运行状况由 EC2 状态检查和负载平衡运行状况检查确定。
39. 停止的 EC2 实例应在指定时间段后删除
资源级说明:
当 EC2 实例停止且在指定时间段后未删除时,它们将产生额外费用。
基线:
检查已停止的 EC2 实例是否存在超过允许的天数。
描述:
当 EC2 实例停止时,您仍然需要为存储付费;但是,当您终止它们时,收费也将终止。此外,如果 EC2 实例在指定时间内未运行,则可能会带来高风险,因为该实例可能没有得到积极维护。
推荐:
确保在指定时间段后没有停止的 EC2 实例。
40.确保每个VPC的默认安全组限制流量(优先级:低)
资源级说明:
VPC 默认安全组不应允许安全网络配置的入站和出站流量。
基线:
确定每个 VPC 实例的默认安全组是否限制流量。
描述:
AWS 默认安全组不限制所有入站和出站流量。默认情况下,VPC 带有一个安全组,其初始配置拒绝来自 Internet 的所有入站流量并允许所有出站流量。配置所有 VPC 默认安全组以限制所有流量,以免实例意外发送出站流量。
推荐:
确保 AWS EC2 默认安全组限制所有入站流量,并强制用户创建自定义安全组而不是使用默认安全组。
Amazon Elastic Block Storage (EBS)
1. 没有快照的 EBS 卷(优先级:高)
基线:
检查关联快照 ID 的 Amazon Elastic Block Store (EBS) 卷配置。
描述:
EBS 为您的 EC2 实例提供持久的块级存储支持。快照是存储在 EBS 卷中的数据的时间点增量备份。为了冗余,这些快照存储在跨多个可用区的 S3 存储桶中。如果发生故障,这些快照可帮助您创建新卷或跨可用区或区域移动卷。
推荐:
为您的 EBS 卷创建每周快照。
所需权限:
“ec2:DescribeVolumes”和“ec2:DescribeSnapshots”
2. 没有最近快照的 EBS 卷(优先级:中等)
基线:
在过去 30 天内未拍摄最近的 EBS 快照。
描述:
快照记录您的 EBS 卷的时间点状态。如果发生故障,可以使用这些快照创建原始卷的副本。
推荐:
根据您对 EBS 卷进行更改的频率,您可以设置自动调度程序以定期拍摄快照,以提高 EBS 数据保护和可恢复性。
所需权限:
“ec2:DescribeVolumes”和“ec2:DescribeSnapshots”
3. 附加到停止的 EC2 实例的 EBS 卷(优先级:中等)
基线:
检查 EBS 附加 EC2 实例的实例状态。
描述:
无论实例在其生命周期中经历任何转换,EBS 卷都将继续存在。对于 EBS 卷,您将根据您预置的存储量和 IOPS(仅适用于预置的 IOPS SSD (io1) 卷)计费,直到存储释放。
推荐:
创建 EBS 卷的快照并释放存储。
所需权限:
“ec2:DescribeInstances”和“ec2:DescribeVolumes”
4. 未附加的 EBS 卷(优先级:中等)
基线:
检查关联实例 ID 的 Amazon Elastic Block Store (EBS) 卷配置。
描述:
弹性块存储卷即使在实例终止后,甚至在您从实例显式卸载和分离卷之后也可以独立存在。您可能知道,未附加的卷仍会根据配置的存储和 IOPS 收费。
推荐:
将配置的 EBS 卷与活动实例关联或释放存储卷。
所需权限:
“ec2:描述卷”
5. Amazon EBS - 加密(优先级:高)
基线:
检查 Amazon Elastic Block Store (EBS) 卷的配置,并在任何卷未加密时提醒您。
描述:
当您为 EBS 卷启用加密并将其附加到 EC2 实例时,您将加密卷内的所有数据。此外,在您的卷和实例之间移动的所有数据都会被加密。
推荐:
如果存储敏感数据,则加密现有的未加密卷。
6. Amazon EBS - 使用 AWS 托管 CMK 加密(优先级:高)
基线:
检查 Amazon Elastic Block Store (EBS) 卷的配置并识别使用 AWS 托管 CMK 启用加密的卷。
描述:
Amazon EBS 加密使用 AWS 密钥管理服务 CMKs 进行加密。共有三种类型的 CMK:客户管理的 CMK、AWS 管理的 CMK 和 AWS 拥有的 CMK。创建您自己的 CMK(客户管理的 CMK)可为您提供更大的灵活性,包括建立和维护关键策略、IAM 策略、授权等。
推荐:
创建客户管理的 CMK 以加密您的卷。
AWS Elastic Load Balancing
1. 未使用的弹性负载平衡(优先级:高)
基线:
检查受监控的经典负载平衡的配置,以查找没有注册后端实例的 ELB 节点。
描述:
已配置的负载平衡会继续产生费用,直到您将其删除。如果负载平衡没有注册的后端实例,那么它就没有被有效地使用。
推荐:
向负载平衡添加/注册实例或考虑终止它。
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”和“elasticloadbalancing:DescribeInstanceHealth”
2.空闲弹性负载平衡(优先级:高)
基线:
如果过去 48 小时内接收/路由的请求数或与目标实例建立的 TCP 连接数少于 100,则检查受监控的经典负载平衡的使用情况统计信息,将其视为空闲。
描述:
Amazon Web Services 会按负载平衡运行的每个部分或全部小时向您收费。如果您的负载平衡路由的请求少于 100 个,则说明它没有被充分使用。
推荐:
考虑在没有负载平衡的情况下终止并运行您的应用程序。
所需权限
“elasticloadbalancing:DescribeLoadBalancers”、cloudwatch:GetMetricData”、“cloudwatch:GetMetricStatistics”和“cloudwatch:ListMetrics”
3. 少于“n”个健康实例的负载平衡(优先级:中等)
基线:
检查负载平衡的指标“健康主机计数”,并在计数低于阈值时发出警告。
描述:
负载平衡对所有注册的实例执行健康检查,以确定实例是否健康。但是,有时默认的运行状况检查配置可能过于严格,并且可能将健康实例视为不健康的。
推荐:
创建您自己的健康检查配置并配置最佳间隔——健康/不健康阈值和超时。
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”、“elasticloadbalancing:DescribeInstanceHealth”
4. ELB 不使用多个可用区(优先级:高)
基线:
检查在单个可用区中运行的负载平衡。
描述:
如果您在单个可用区中启动 EC2 实例,则该数据中心发生的任何故障都可能导致您的所有实例不可用。通过将多个 EC2 实例部署到同一区域中的不同可用区,您可以消除单点故障。
推荐:
为了提高弹性和容错能力,请确保注册到负载平衡的 EC2 实例连接到不同的可用区。
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”
5. Elastic Load Balancer - 跨区负载均衡(优先级:高)
基线:
检查禁用跨区域负载平衡的弹性负载均衡。
描述:
默认情况下,您的经典类型弹性负载平衡未启用跨区域负载均衡。通常,负载平衡在配置的可用区之间平均分配传入流量。但是,如果您没有在每个区域中运行相同数量的 EC2 实例,则负载可能会不匹配。这很容易发生,因为实例可能由于运行状况检查失败而被手动取消注册或分离,或者被移除以进行维护。如果启用了跨区域负载均衡,则 Elastic Load Balancer 会将应用程序流量平均分配到所有已注册的实例。
推荐:
为您的经典类型 Elastic Load Balancer 启用跨区域平衡
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”
6. Elastic Load Balancer - 访问日志(优先级:中等)
基线:
检查负载平衡的配置以查看是否为您的 ELB 启用了访问日志。
描述:
访问日志捕获并存储负载平衡收到的每个请求的详细信息。IP 地址、延迟、请求路径、后端服务器响应等信息存储在您指定的 Amazon S3 存储桶中。AWS 账户持有人可以使用它来分析流量模式并解决高级 ELB 问题。
推荐:
这是默认禁用的可选功能。为您的 Elastic Load Balancer 启用访问日志。
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”
7. Elastic Load Balancer - 连接耗尽(优先级:高)
基线:
检查受监控的弹性负载平衡的配置,以识别禁用连接耗尽的 ELB 节点。
描述:
当 EC2 实例因运行状况检查失败而终止或从 AutoScaling 组取消注册时,ELB 会停止将新请求路由到该实例并突然关闭活动连接。如果启用连接耗尽,ELB 将保持连接打开以完成活动会话。
推荐:
为您的负载平衡启用连接耗尽。
所需权限:
“elasticloadbalancing:DescribeLoadBalancers”
8. Elastic Load Balancer - Listener 安全性(优先级:高)
基线:
检查弹性负载平衡(经典和应用程序类型)的配置,并在没有使用安全协议(HTTPS 或 SSL)的侦听器时向您发出警告。
描述:
侦听器是检查连接请求的进程。当您的 Elastic Load Balancer 没有配置 HTTPS 侦听器时,未经授权的各方可以读取客户端和负载平衡之间通过网络发送的数据。
推荐:
通过在负载平衡上部署 SSL 证书,为 HTTP 侦听器启用 SSL/TLS 支持。
9. 与负载平衡关联的 Auto Scaling 组的运行状况检查(优先级:中)
基线:
检查与负载平衡关联的 Auto Scaling 组 (ASG) 是否具有负载平衡的运行状况检查配置。
描述:
Auto Scaling 组的默认运行状况检查仅是 EC2 状态检查,如果实例未通过负载平衡提供的运行状况检查,ASG 不会认为实例运行状况不佳。您可以通过将 ASG 配置为使用负载平衡运行状况检查来确定负载平衡的实例运行状况。
推荐:
向 ASG 添加负载平衡运行状况检查,以便实例运行状况由 EC2 状态检查和负载平衡运行状况检查确定。
AWS Identify Access Management (IAM)
1. IAM 用户的访问密钥(优先级:中等)
基线:
检查访问密钥的创建时间并识别密钥超过 90 天的 IAM 用户(您可以使用我们的高级配置自定义基线。)
描述:
访问密钥由访问密钥 ID 和秘密访问密钥组成,它们用于以编程方式签署对 AWS API 端点的请求。
推荐:
作为安全最佳实践,您可以通过定期轮换访问密钥来缩短访问密钥的活动时间。
所需权限:
“iam:ListUsers”和“iam:ListAccessKeys”
2. IAM 组 - 内联策略(优先级:信息)
基线:
检查具有内联策略的 IAM 组。
描述:
IAM 策略是 JSON 策略文档,您可以将其分配给实体 – IAM 用户、角色或组。使用托管策略的一个关键优势是它们由 AWS 作为新服务进行维护和更新,并引入 API。
推荐:
使用 AWS 托管策略向 IAM 组授予权限。
所需权限:
“我:列表组策略”
3. 具有完全管理员权限的 IAM 用户(优先级:高)
基线:
检查您账户中的每个 IAM 用户并识别分配了托管策略AdministratorAccess的用户。
描述:
AdministratorAccess策略授予所有四个访问级别的权限:列表、读取、写入和权限管理。不受限制的管理员访问很容易导致您的 AWS 账单出现孤立资源、安全问题和意外高峰。
推荐:
向 IAM 用户分配权限时,请遵循授予最小权限的做法,即仅授予执行任务所需的权限。
所需权限:
“iam:ListEntitiesForPolicy”
4. 具有完全管理员权限的 IAM 角色(优先级:高)
基线:
检查您账户中的每个 IAM 角色并确定分配了托管策略AdministratorAccess的角色。
描述:
AdministratorAccess策略使担任该角色的用户能够执行所有操作,包括读取资源内容;创建、删除或修改资源;并修改资源权限。
推荐:
仅将此策略分配给帐户管理员。定期审核分配给其他角色的 IAM 策略,以确保您的资源安全。
所需权限:
“iam:ListAttachedRolePolicies”
5. 不必要的访问密钥(优先级:高)
基线:
检查具有两个活动访问密钥的 IAM 用户。
描述:
IAM 用户使用访问密钥向 AWS 服务 API 发出安全的 REST 或 HTTP 请求。
推荐:
作为最佳实践,请尝试仅保持一个键处于活动状态。
所需权限:
“iam:ListUsers”和“iam:ListAccessKeys”
6. 未使用的 IAM 用户(优先级:中等)
基线:
检查没有编程访问权限的 IAM 用户的控制台密码的使用期限,并在他们仍未使用时发出警告。
描述:
IAM 用户使用控制台密码登录 AWS 管理控制台。通过删除未使用的 IAM 用户或禁用密码,您可以为您的 AWS 账户添加额外的安全层。
推荐:
删除未使用的 IAM 用户。
所需权限:
“iam:ListUsers”和“iam:GetLoginProfile”
7. 非活跃 IAM 用户(优先级:中等)
基线:
检查没有编程访问权限的 IAM 用户的控制台密码的使用期限,并在过去 90 天内未使用时发出警告。
描述:
IAM 用户使用控制台密码登录 AWS 管理控制台。通过删除未使用的 IAM 用户或禁用密码,您可以为您的 AWS 账户添加额外的安全层。
推荐:
删除非活动 IAM 用户或禁用登录凭证。
所需权限:
“iam:ListUsers”和“iam:GetLoginProfile”
8. MFA - AWS 根账户(优先级:高)
基线:
检查是否为 root 帐户启用了多重身份验证 (MFA)。
描述:
AWS 根账户持有人可以完全访问账户中的所有 AWS 服务和资源。借助两步验证或 MFA,您可以通过要求用户密码和时间同步的一次性密码为敏感的 AWS 资源添加额外的安全层。
推荐:
使用基于安全令牌的 MFA 来保护您的 AWS 账户。
9. IAM 组(优先级:高)
基线:
检查是否为 AWS 账户创建了 IAM 组。
描述:
您可能已经知道,您可以通过创建 IAM 用户为您的团队成员提供登录 AWS 控制台或向 AWS 服务发出编程请求的能力。您可以创建一个 IAM 组(IAM 用户的集合)以便于管理,而不是将策略直接附加到用户或手动编辑用户的权限。
推荐:
创建具有不同权限范围的多个 IAM 组。
所需权限:
iam:ListGroups"
10.IAM密码策略(优先级:高)
基线:
检查是否为您的 AWS 账户设置了密码策略。
描述:
您可以创建密码策略来强制执行您的 IAM 用户密码的复杂性要求(密码长度和字符类型)和轮换期。
推荐:
设置密码策略以强制创建强密码。
所需权限:
"iam:GetAccountPasswordPolicy"
11. IAM 用户 - 支持访问(优先级:中等)
基线:
检查每个 IAM 角色的附加 IAM 策略列表,以获取名为“AWSSupportAccess”的策略。
描述:
托管策略“AWSSupportAccess”授予 IAM 用户访问 AWS Support Center 中归档和管理案例的权限。
推荐:
确保您的 AWS 账户中至少有一个 IAM 用户有权创建和管理支持案例。
所需权限:
“iam:ListEntitiesForPolicy”
12. AWS 根账户用户 - 访问密钥(优先级:高)
基线:
检查 AWS 账户根用户的活动访问密钥。
描述:
访问密钥用于向 AWS 服务 API 发出安全的 REST API 或 HTTP 查询请求。任何拥有 AWS 根账户用户访问密钥的人都可以不受限制地访问所有资源,包括使用这些密钥的账单数据。
推荐:
删除 root 用户的访问密钥或使其处于非活动状态。
13.确保IAM密码策略至少需要一个大写字母、小写字母、符号和数字(优先级:中等)
基线:
检查 IAM 密码策略是否需要至少一个大写字母、小写字母、符号和数字。
描述:
如果管理员未设置自定义密码策略,则 IAM 用户密码必须符合默认 AWS 密码策略,至少包含一个大写字母、小写字母、符号和数字。
推荐:
通过实施强大的 AWS IAM 密码并经常更改它来维护您的 AWS 账户的安全。
14. 确保 IAM 策略仅附加到组或角色(优先级:低)
基线:
确定 IAM 策略是否仅附加到组或角色。
描述:
通过在 IAM 组级别而不是 IAM 用户级别定义权限,有效地管理对 AWS 资源的基于用户的访问。由于您无需为每个用户定义策略或在现有用户获得不同角色时在组之间切换,因此您可以避免重复信息并节省时间和精力。
推荐:
确保现有 IAM 策略仅附加到组或角色,以有效地将权限分配给您的 AWS 账户中的所有用户。
15. 确保 IAM 密码策略至少需要一个大写字母、小写字母、符号和数字(优先级:中)
资源级说明:
IAM 密码策略必须至少需要一个大写字母、小写字母、符号和一个数字,否则可能会危及安全性。
基线:
检查 IAM 密码策略是否需要至少一个大写字母、小写字母、符号和数字。
描述:
如果管理员未设置自定义密码策略,则 IAM 用户密码必须符合默认 AWS 密码策略,至少包含一个大写字母、小写字母、符号和数字。
推荐:
通过实施强大的 AWS IAM 密码并经常更改它来维护您的 AWS 账户的安全。
16. 确保 IAM 策略仅附加到组或角色(优先级:低)
资源级说明:
IAM 策略必须仅附加到组或角色,才能有效地将权限分配给您的 AWS 账户中的所有用户。
基线:
确定 IAM 策略是否仅附加到组或角色。
描述:
通过在 IAM 组级别而不是 IAM 用户级别定义权限,有效地管理对 AWS 资源的基于用户的访问。由于您无需为每个用户定义策略或在现有用户获得不同角色时在组之间切换,因此您可以避免重复信息并节省时间和精力。
推荐:
确保现有 IAM 策略仅附加到组或角色,以有效地将权限分配给您的 AWS 账户中的所有用户。
Amazon Simple Storage Service (S3)
1. 公共 S3 存储桶(优先级:中等)
基线:
检查受监控的 S3 存储桶的存储桶策略和用户策略(不是访问控制列表),以识别可公开访问的存储桶。
描述:
可公开访问意味着任何人都可以读取存储桶、列出其中的对象以及上传或删除对象。您可能已经知道,对于 S3,您需要根据请求类型、请求数量和检索的数据量付费。来自非预期公共用户的频繁列表 API 请求可能很快导致高额费用。
推荐:
确定有问题的存储桶是否真的需要公共访问。如果没有,请限制访问并将资源设为私有。
所需权限:
“s3:ListBucket”和“s3:GetBucketPolicyStatus”
2. Amazon S3 - 默认加密(优先级:中等)
基线:
检查并识别默认 S3 加密被禁用的 Amazon S3 存储桶。
描述:
服务器端加密或静态加密可确保 Amazon S3 在对象级别加密您的数据。
推荐:
通过 Amazon S3 托管密钥 (SSE-S3) 或 AWS KMS 托管密钥 (SSE-KMS) 使用服务器端加密
所需权限:
s3:GetEncryptionConfiguration”和“s3:ListBucket”
3. Amazon S3 - 访问日志(优先级:中等)
基线:
检查并识别禁用了服务器访问日志记录的 Amazon S3 存储桶。
描述:
默认情况下,Amazon S3 不收集服务器访问日志。通过启用日志记录,您可以在您选择的目标存储桶上存储有关单个访问请求的详细信息——请求者、存储桶名称、请求时间、响应状态等。启用服务器访问日志记录不收取额外费用。但是,通常会收取存储费用。
推荐:
为您的 S3 存储桶启用服务器访问日志记录,以帮助您进行安全和访问审计。
所需权限:
s3:GetBucketLogging" 和 "s3:ListBucket"
4. Amazon S3 - MFA 删除(优先级:中等)
基线:
检查 Amazon S3 存储桶的配置并识别禁用 MFA 删除的存储桶。
描述:
启用 MFA 删除的存储桶需要对版本状态更改和永久删除操作进行额外的身份验证。
推荐:
通过启用 MFA Delete 为您的 S3 存储桶添加一层安全保护。
所需权限
“s3:ListBucket”和“s3:GetBucketVersioning”
5. Amazon S3 - S3 存储桶策略应仅允许使用安全套接字层 (SSL) 的请求(优先级:中等)
基线:
确定您的 S3 存储桶策略是否仅允许使用 SSL 的请求。
描述:
S3 存储桶必须配置为严格要求 SSL 连接。否则,用户、应用程序和这些存储桶之间的连接将容易受到窃听和中间人 (MITM) 攻击。
推荐:
在处理敏感数据时,通过拒绝所有对您的存储桶没有 SSL 的 HTTP 请求来强制执行仅 SSL 访问。
6. Amazon S3 - S3 存储桶应启用跨区域复制(优先级:中等)
基线:
检查 S3 存储桶是否启用了跨区域复制。
描述:
启用跨区域复制后,您可以跨不同 AWS 区域的 S3 存储桶自动复制数据或复制对象。无论是灾难恢复计划还是性能优化,数据复制都将提高应用程序的可用性和可靠性。
推荐:
为所有 S3 存储桶启用跨区域复制。
7. 确保 S3 存储桶 CloudTrail 日志不可公开访问(优先级:高)
基线:
确定您的 S3 存储桶 CloudTrail 日志是否可公开访问。
描述:
Amazon S3 存储桶和对象默认是私有的;只有创建存储桶的个人才能访问它以及其中包含的对象。CloudTrail 日志可能包含您账户中 API 活动的详细事件。如果您为存储在 S3 存储桶中的 CloudTrail 日志提供的权限不安全,则您可能会向恶意用户提供对您的 AWS 账户日志数据的访问权限,这会增加未经授权访问的风险。
推荐:
确保与 CloudTrail 日志记录关联的 S3 存储桶不可公开访问,并保护您的 AWS 账户日志数据。
8. 确保存储桶策略中授予其他 AWS 账户的 Amazon S3 权限受到限制(优先级:高)
基线:
检查在存储桶策略中授予其他 AWS 账户的 Amazon S3 权限是否受到限制。
描述:
在使用共享 Amazon S3 存储桶时对其他 AWS 账户实施最低权限访问。其他账户中委托人的拒绝操作如下:
- s3:DeleteBucketPolicy
- s3:PutBucketAcl
- s3:PutBucketPolicy
- s3:PutEncryptionConfiguration
- s3:PutObjectAcl
推荐:
来自其他 AWS 账户的委托人不应在使用共享 Amazon S3 存储桶以减少错误或恶意攻击的影响时对 S3 中的资源执行拒绝操作。
9. 确保在存储桶策略中授予其他 AWS 账户的 Amazon S3 权限受到限制(优先级:高)
资源级说明:
在 Amazon S3 存储桶策略中提供对其他 AWS 账户的最低权限访问,从而降低安全风险。
基线:
检查在存储桶策略中授予其他 AWS 账户的 Amazon S3 权限是否受到限制。
描述:
在使用共享 Amazon S3 存储桶时对其他 AWS 账户实施最低权限访问。其他账户中委托人的拒绝操作如下:
- s3:DeleteBucketPolicy
- s3:PutBucketAcl
- s3:PutBucketPolicy
- s3:PutEncryptionConfiguration
- s3:PutObjectAcl
推荐:
来自其他 AWS 账户的委托人不应在使用共享 Amazon S3 存储桶以减少错误或恶意攻击的影响时对 S3 中的资源执行拒绝操作。
Amazon Relational Database Service (RDS)
1. RDS 安全组 - 无限制入站访问(优先级:中等)
基线:
检查 RDS-VPC 安全组是否有源 IP 地址使用 CIDR 表示法 0.0.0.0/0 的入站规则。
描述:
VPC 安全组控制对数据库实例的流量访问。您可以在允许从特定 IP 范围、端口或 EC2 安全组访问的安全组中添加规则。
推荐:
限制对特定 IP 地址的访问以防止恶意活动。
所需权限
“rds:DescribeDBInstances”和“rds:DescribeDBSecurityGroups”
2.公共RDS实例(优先级:高)
基线:
检查可访问性选项并识别可公开访问的数据库实例。
描述:
具有可公开解析的 DNS 名称的面向 Internet 的数据库实例可能会增加网络攻击的风险并产生意外的数据传输费用。
推荐:
禁用可公开访问的标志。
所需权限:
“rds:DescribeDBInstances”
3. RDS 的自动备份(优先级:高)
基线:
检查配置并识别禁用自动备份的 RDS 数据库实例。
描述:
Amazon 会定期对您的整个数据库实例进行存储卷备份,并将备份保留特定天数,以帮助进行时间点恢复。
推荐:
为 RDS 实例启用自动备份,以实现平稳的数据恢复。
所需权限:
“rds:DescribeDBInstances”
4. Amazon RDS - 加密(优先级:高)
基线:
检查并识别未启用加密的 Amazon RDS 数据库实例。
描述:
为 RDS 加密静态数据,包括底层存储、自动备份、只读副本和快照,以提供额外的保护层。
推荐:
在创建期间为 RDS 数据库实例启用加密或加密数据库快照的副本,然后从加密的快照恢复数据库实例。
所需权限:
“rds:DescribeDBInstances”
5. RDS Multi-Availability Zone(AZ)(优先级:中等)
基线:
检查部署在单个可用区 (AZ) 中的数据库实例。
描述:
在多可用区部署中,Amazon 会自动在不同的可用区中预置备用数据库并同步复制数据。当发生故障或计划内维护时,Amazon RDS 会自动执行故障转移到备用数据库,无需任何人工干预。
推荐:
预配多可用区数据库实例或将现有数据库实例修改为多可用区部署。
所需权限:
“rds:DescribeDBInstances”
6. Amazon RDS - 高利用率(优先级:高)
基线:
检查 Amazon RDS 的 CloudWatch 性能计数器并识别似乎被高度利用的数据库实例。
描述:
如果 RDS 实例满足以下条件,则认为其被过度使用:
- 过去 7 天中至少有 4 天的平均每日 CPU 使用率超过 90%。
- 在过去 7 天内至少有 4 天的磁盘空间消耗量超过 85%。
推荐:
垂直扩展您的主数据库或使用只读副本来满足您的应用程序的需求。
7. Amazon RDS - 空闲数据库实例(优先级:高)
基线:
检查 Amazon RDS 实例的 CloudWatch 性能计数器并识别似乎未充分利用的数据库实例。
描述:
满足以下条件的 RDS 实例被视为空闲:
- 过去 7 天中至少有 4 天的平均每日 CPU 使用率低于 20%。
- 过去 7 天内至少 4 天的平均每日数据库连接数少于 100。
推荐:
对于 Amazon RDS,您按数据库实例运行的小时数为计算容量付费。如果您的数据库实例接收的连接较少或消耗的 CPU 数量很少,您可以考虑拍摄快照并删除实例以降低成本。此外,我们还显示当前实例类型并推荐您可以降级到的所需实例类型(建议的实例类型)以更好地降低成本。
8. Amazon RDS - RDS 快照应禁止公共访问(优先级:高)
基线:
检查 AWS RDS 快照是否可公开访问。
描述:
RDS 集群快照备份整个数据库集群,而不是仅备份单个数据库。为避免敏感数据的潜在泄漏或滥用,请将您的快照保密,以便其他 AWS 用户无法访问、复制或创建新卷。
推荐:
确保您的 AWS RDS 数据库快照不公开(即与所有 AWS 账户和用户共享)以避免暴露您的数据。
9. Amazon RDS - RDS 集群应该启用删除保护(优先级:中等)
基线:
检查 Amazon RDS 集群是否启用了删除保护。
描述:
当 Amazon RDS 集群启用了删除保护时,集群不会被意外删除,从而防止任何数据丢失。您可以为所有 RDS 数据库引擎(包括 Amazon Aurora 数据库)启用此设置。
推荐:
为所有数据库引擎启用 RDS 集群删除保护设置。
Amazon Simple Notification Service (SNS)
1. SNS - 向主题发布消息(所有人)(优先级:中等)
基线:
检查您的 Amazon SNS 主题的主题访问策略以获取允许所有人发布的主题。
描述:
允许任何 AWS 用户或资源发布消息可能会导致 SNS 发布费用意外增加。
推荐:
仅允许主题所有者和特定用户发布消息。
所需权限:
sns:GetTopicAttributes" 和 "sns:ListTopics"
2. SNS - 订阅主题(所有人)(优先级:中等)
基线:
检查允许匿名订阅的主题的 Amazon SNS 主题的主题访问策略。
描述:
允许每个人订阅最终可能会破坏消息的机密性。例如,任何未经授权的实体现在都可以订阅该主题并接收发布的消息。
推荐:
将订阅限制为主题所有者或特定端点以维护主题安全。
所需权限:
sns:GetTopicAttributes" 和 "sns:ListTopics"
3. Amazon SNS - 作为订阅者的 HTTP 终端节点(优先级:中等)
基线:
检查以 HTTP 端点作为订阅者的 SNS 主题。
描述:
Amazon Simple Notification Service (SNS) 是一种异步消息传递服务,适用于发布者-订阅者范式。当您为主题订阅 HTTP/HTTPS 端点并发布消息时,SNS 会发送一个 POST 请求,将消息的内容传送到所述端点。但是,通过 HTTP 发送的消息很容易被窃听。
推荐:
当您订阅 URL 时,请选择 HTTPS over HTTP。
Amazon DynamoDB
1. DynamoDB - Auto Scaling(优先级:高)
基线:
检查手动管理表吞吐量的 Amazon DynamoDB 表。
描述:
在 Amazon DynamoDB 中创建表时,您可以指定读写活动的容量要求。从长远来看,当您处理周期性或不可预测的数据库工作负载时,估计足够的容量或根据需求手动调整预置容量可能会成为运营负担。
推荐:
使用 DynamoDB Auto Scaling 自动动态调整表吞吐量容量以响应流量模式。
2. DynamoDB - 按需备份和恢复(优先级:高)
基线:
检查过去 30 天内没有备份的 Amazon DynamoDB 表。
描述:
数据归档是长期数据保留和法规遵从性要求的一个关键方面。Amazon DyanomDB 让您可以在几秒钟内为您的表创建完整备份,并帮助您随时恢复数据,而对应用程序性能或可用性的影响为零。
推荐:
使用 AWS 管理控制台或 DynamoDB API 为您的 DynamoDB 表执行备份和还原操作。
3. DynamoDB - 服务器端加密(优先级:高)
基线:
检查已禁用重置时加密的 Amazon DynamoDB 表。
描述:
使用 AES-256 和服务默认的 AWS Key Mangement Service (KMS) 密钥为您的数据(表、本地二级索引和全局二级索引)启用静态加密,以保护敏感信息并满足合规性要求。
推荐:
您无法在现有表上启用静态加密。使用 AWS 管理控制台或 API 创建一个新的加密表。
4. DynamoDB - 未使用的表(优先级:中等)
基线:
检查当时运行的 Amazon DynamoDB 表,并在总项目数为零时提醒您。
描述:
您可能已经知道,对于 DynamoDB,您要么为手动配置的吞吐量付费,要么为 Amazon 为维持目标读写容量而配置的资源付费。因此,任何配置的表都会继续产生费用。如果一个表没有数据,那么它就没有被有效地使用。
推荐:
考虑删除未使用的表。
Amazon Simple Queue Service (SQS)
1. SQS - 服务器端加密(SSE)(优先级:中)
基线:
检查 SQS 队列的配置并在禁用服务器端加密时向您发出警告。
描述:
服务器端加密 (SSE) 对消息正文进行加密,以帮助您在分布式应用程序组件或微服务之间可靠地交换敏感数据。
推荐:
为现有队列启用服务器端加密或在创建队列期间启用该选项。
2. SQS - 使用 AWS 托管 CMK 的 SSE(优先级:中等)
基线:
检查使用默认 AWS 托管 CMK 启用服务器端加密的 SQS 队列。
描述:
当您启用服务器端加密时,您可以选择 AWS Key Management Service (KMS) 提供的密钥来加密存储在标准队列和 FIFO 队列中的消息。您可以使用默认的 AWS 管理的客户主密钥 (CMK),也可以创建和管理您自己的密钥,以获得更好的灵活性、访问控制、轮换和删除。
推荐:
创建您自己的客户主密钥 (CMK)。(注意:客户管理的 CMK 会产生月费。)
3. SQS队列访问策略——通配符的使用。(优先级:高)
基线:
检查 SQS 队列访问策略的主体元素中的通配符 (*) 用法。
描述:
策略中的 principal 元素指定哪个 AWS 账户或服务或用户有权访问队列。主体元素中的通配符 (*) 值表示您的队列对所有 AWS 账户开放。对您的 SQS 队列公开开放访问可能会导致未经授权的消息传递。
推荐:
允许基于 AWS 账户 ID 的 Amazon SQS 访问。
4. SQS - 无死信队列(优先级:中等)
基线:
检查并识别没有指定死信队列的标准或 FIFO 队列。
描述:
死信队列是一个未传递的消息队列,当消耗者没有成功处理它们时,消息将被发送到该队列。用户可以使用此保留队列来隔离有问题的消息并对其进行故障排除,并确定它们失败的原因。
推荐:
无法为现有队列配置死信队列。配置一个新的 SQS 源队列并创建第二个队列作为死信队列。
5. SQS - 停滞的队列(优先级:中等)
基线:
检查 SQS CloudWatch 指标:可见消息的大致数量,并在连续 3 次轮询超过 100 条时提醒您。
描述:
Amazon SQS 提供完全托管的托管队列服务,以帮助集成分布式应用程序组件。度量标准“可见消息的近似数量”提供了有关活动队列大小和积压的洞察力。如果指标持续增加,则可能表示队列卡住或缓慢。
推荐:
检查您的(EC2 实例、Lambda 函数、ECS 实例)的资源使用情况,以识别和解决问题。
Amazon Simple Email Service (SES)
1. Amazon SES - 验证身份(优先级:info)
基线:
检查具有待定验证状态的电子邮件地址和域的 Amazon SES 身份。
描述:
在 Amazon SES 中,身份是可用于发送电子邮件的电子邮件地址或域。在开始之前,您必须验证要用作 From、Source、Sender 或 Return-Path 地址的每个身份。如果您使用的是 Amazon SES 沙盒,您还需要验证收件人地址。
推荐:
立即解决验证过程中的问题。
2. Amazon SES - DKIM 签名(优先级:info)
基线:
检查未配置为使用 DKIM 签名的 SES 身份(域和电子邮件地址)。
描述:
域密钥识别邮件 (DKIM) 是一种电子邮件身份验证协议,它允许发件人以加密方式签署电子邮件消息的特定表示。接收邮件服务器使用此签名来检查是否有任何第三方在传输过程中修改了邮件。
推荐:
自动为您在 Amazon SES 中使用 Easy DKIM 发送的每封电子邮件添加 DKIM 签名,或手动添加您自己的 DKIM 签名。
Amazon Kinesis
1. Amazon Kinesis Streams - 使用 AWS 托管 CMK 的 SSE(优先级:高)
基线:
检查由 AWS 托管 CMK 启用服务器端加密 (SSE) 的 Amazon Kinesis Data Streams。
描述:
CMK(客户主密钥)是用于加密和解密数据的主要资源。共有三种类型:客户管理的 CMK、AWS 管理的 CMK 和 AWS 拥有的 CMK。您可以使用 AWS 托管 CMK 加密您的 Amazon Kinesis Streams 中的数据,也可以创建您自己的客户托管 CMK,以获得更多控制权和灵活性。
推荐:
使用客户管理的 CMK 加密 Kinesis Data Stream 服务中的静态数据。
2. Amazon Kinesis Streams - 服务器端加密 (SSE)(优先级:高)
基线:
检查禁用了服务器端加密 (SSE) 的 Amazon Kinesis Data Streams。
描述:
静态加密在数据管理中起着至关重要的作用,可帮助您的应用程序满足严格的合规性和监管要求。通过启用服务器端加密,您的数据在进入流服务时会自动加密,在离开流服务时会自动解密。
推荐:
使用 Amazon Key Management (KMS) 密钥为您的直播启用服务器端加密。
AWS Web Application Firewall (WAF)
1. AWS WAF - 未分配的 Web ACL(优先级:高)
基线:
检查 Web 应用程序防火墙 (WAF) 的配置并识别未分配的 Web ACL。
描述:
对于 AWS WAF,您将根据 Web 访问控制列表的数量和您为每个 Web ACL 添加的规则数量进行计量,无论它们是否与资源(CloudFront 分配/应用程序负载均衡器)相关联。
推荐:
考虑删除未使用的 Web ACL(注意:在删除之前,您必须删除规则并取消所有 CloudFront 分配和应用程序负载均衡器与 ACL 的关联)。
Amazon RedShift
1. Amazon Redshift - 未充分利用的集群(优先级:高)
基线:
检查 Amazon Redshift 的性能计数器并识别似乎未充分利用的集群。
描述:
检查运行 Amazon Redshift 集群的性能计数器,如果它们满足以下条件,则将它们标记为空闲。
- 过去 7 天的平均数据库连接数少于 10。
- 过去 7 天集群范围的 CPU 利用率低于 5%。
- 过去 7 天,整个集群的平均读写操作数小于“x”。
注意:您可以使用高级配置更改默认告警条件。
推荐:
对于 Amazon Redshift,您需要根据集群中节点的类型和数量按小时付费。如果您的集群接收的连接最少或消耗的 CPU 数量很少,您可以考虑缩小规模或终止。(注意:在关闭集群之前拍摄最终快照)
2. Amazon Redshift 集群 - 高磁盘使用率(优先级:高)
基线:
检查 Amazon Redshift 的性能计数器并识别具有高磁盘使用率的数据仓库集群。
描述:
检查指标:已用磁盘空间百分比(整个集群)并在过去 7 天中的至少 4 天中该值是否超过 90% 时发出告警。
推荐:
立即响应并通过 AWS 控制台或 ModifyCluster API 增加数据仓库集群中的节点数量,并确保您有足够的存储空间来存储新数据
3. Amazon Redshift 可公开访问。(优先级:高)
基线:
检查 Amazon Redshift 的网络配置并识别可公开访问的数据仓库集群。
描述:
任何机器都可以从 Internet 访问可公开访问的集群(公共 IP),从而增加了安全风险的机会。
推荐:
限制仅从 VPC 内连接到您的集群。
4. Amazon Redshift - 数据库审计日志(优先级:中)
基线:
检查数据仓库集群的 Amazon Redshift 配置,并在禁用数据库审计日志记录时提醒您
描述:
启用审核日志记录后,将捕获有关身份验证尝试、连接、断开连接、用户活动、数据库用户定义更改等的详细信息并将其上传到 S3 存储桶。
推荐:
出于安全和故障排除目的启用审核日志记录。
5. Amazon Redshift - 使用 SSL 连接(优先级:中)
基线:
检查 Amazon Redshift 的参数组并识别 require_ssl 参数设置为 false 的集群。
描述:
默认情况下,无论是否使用 SSL,集群数据库都接受客户端连接。但是,在客户端和数据仓库集群之间建立未加密的通信可能会导致安全漏洞。
推荐:
创建自定义参数组,设置参数名require_ssl为true,关联集群
AWS Lambda
1. Lambda 函数 - 可公开访问(优先级:高)
基线:
检查 AWS Lambda 的配置并在任何函数可公开访问时提醒您。
描述:
您可能已经知道,对于 Lambda,您需要根据请求数量付费,AWS 会在每次函数开始执行以响应事件通知或调用调用时计算请求。允许未经授权的执行可能会导致您的 AWS 账单产生意外费用。
推荐:
用于管理调用权限的用户 Lambda 函数策略。
2. AWS Lambda - 禁用 X 射线追踪(优先级:中)
基线:
在禁用跟踪时检查 Lambda 函数和告警的配置。
描述:
CloudWatch 自动为您的 Lambda 函数的所有执行提供性能计数器。但是,这些指标可能不足以为您提供每个调用请求的端到端视图——从事件源一直到下游调用。
推荐:
为您的 Lambda 函数启用主动跟踪。
3. AWS Lambda 函数的 VPC 配置(优先级:中)
基线:
确定您的 Lambda 函数是否启用了 VPC 配置以私下访问 AWS 资源。
描述:
默认情况下,Lambda 在可访问 AWS 服务和互联网的安全 VPC 中运行您的函数。但是,您也可以将 Lambda 函数配置为使用自定义 VPC 访问资源。自定义 VPC 定义了一个私有资源网络,例如数据库、缓存实例或内部服务,允许您从 VPC 内连接到您的 Lambda 函数,而无需访问 Internet。此方法用于阻止未经授权的出站流量到 Internet。一些 AWS 服务提供 VPC 终端节点。您可以使用 VPC 终端节点从 VPC 内连接到 AWS 服务,而无需访问 Internet。
推荐:
将 VPC 配置添加到 Lambda 函数以私下访问 AWS 资源而无需访问 Internet。
4. Lambda 函数应使用最新的运行时(优先级:中)
基线:
检查用于 Lambda 函数的运行时是否已弃用。
描述:
AWS Lambda 运行时(执行)环境是基于在创建 Lambda 函数时选择的配置设置构建的容器。当在安全更新中禁用对运行时组件的支持时,Lambda 会弃用运行时。借助最新的运行时,您可以受益于新功能和增强功能,以及更好的安全性、性能和可靠性。
推荐:
利用最新的运行时来利用最佳的安全改进,降低 Lambda 函数中出现错误和漏洞的风险。
5. Lambda 函数应该使用最新的运行时(MEDIUM)
资源级说明:
将 Lambda 函数升级到最新的运行时,不要使用过时的运行时环境,这可能会导致安全更新不可用。
基线:
检查用于 Lambda 函数的运行时是否已弃用。
描述:
AWS Lambda 运行时(执行)环境是基于在创建 Lambda 函数时选择的配置设置构建的容器。当在安全更新中禁用对运行时组件的支持时,Lambda 会弃用运行时。借助最新的运行时,您可以受益于新功能和增强功能,以及更好的安全性、性能和可靠性。
推荐:
利用最新的运行时来利用最佳的安全改进,降低 Lambda 函数中出现错误和漏洞的风险。
Amazon ElastiCache
1. Amazon ElastiCache - 未充分利用的节点(优先级:高)
基线:
检查 Amazon ElastiCache 的主机级指标并识别似乎未充分利用的节点。
描述:
如果缓存节点符合以下条件,则认为它未充分利用:
- 过去 7 天中至少有 4 天的每日 CPU 使用率百分比低于 10%。
- 在过去 7 天中至少有 4 天,每日引擎 CPU 使用率(仅适用于 Redis 引擎)的百分比低于 10%。
推荐:
从集群中删除节点或更改为较小的节点类型。
2. 适用于 Redis 的 Amazon ElastiCache - 多可用区(优先级:中)
基线:
检查 ElastiCache Redis 的配置并识别未启用多可用区的集群。
描述:
在计划内维护期间或在节点/可用区发生故障的不太可能发生的情况下,您必须手动重新创建和配置新的主节点。相反,您可以启用多可用区并允许 ElastiCache 自动将只读副本提升为主副本并在几秒钟内完成故障转移。
推荐:
使用 ElastiCache 管理控制台或 API 启用具有自动故障转移的多可用区。
3. 未充分利用的 ElastiCache Memcached 实例(优先级:高)
资源级说明:
列出了被视为未充分利用的 ElastiCache Memcached 实例。
基线:
检查云中 Amazon ElastiCache for Memcached 缓存环境的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon ElastiCache,您需要根据实例类型和消耗的小时数付费。您可以通过识别和停止使用较少的实例来降低成本。
4. ElastiCache Memcached - 高实例利用率(优先级:高)
基线:
检查用于 Memcached 的 Amazon ElastiCache 的性能计数器并识别似乎被高度利用的实例。
描述:
如果过去 7 天 ElastiCache for Memcached 实例的平均每日 CPU 使用率超过 90%,则认为 ElastiCache for Memcached 实例使用过度。
推荐:
考虑更改实例大小。
5. 未充分利用的 ElastiCache Redis 实例(优先级:高)
资源级说明:
列出了被视为未充分利用的 ElastiCache Redis 实例。
基线:
检查云中 Amazon ElastiCache for Redis 缓存环境的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon ElastiCache,您根据实例类型和消耗的小时数计费。您可以通过识别和停止使用较少的实例来降低成本。
6. ElastiCache Redis - 高实例利用率(优先级:高)
基线:
检查 Amazon ElastiCache for Redis 的性能计数器并识别似乎被高度利用的实例。
描述:
如果过去 7 天 ElastiCache for Redis 实例的平均每日 CPU 使用率超过 90%,则认为 ElastiCache for Redis 实例使用过度。
推荐:
考虑更改实例大小。
Amazon CloudFront
1. Amazon CloudFront – WAF 集成(优先级:中)
基线:
检查 Amazon CloudFront Web 分配是否与 Web 应用程序防火墙 (AWS WAF) 集成。
描述:
AWS Cloudfront — WAF 集成使您能够根据与 CDN 分发关联的 WAF Web 访问控制列表 (ACL) 中定义的标准阻止对 Cloudfront 内容交付网络发出的任何恶意请求。它有助于防止可能危及 Web 应用程序安全性或对其施加不必要负载的应用程序层攻击。
推荐:
创建所需的 WAF 访问控制列表并将其与适当的 Web 分配相关联,以将 CloudFront 与 AWS WAF 集成。
所需权限:
“cloudfront:ListDistributions”
2. Amazon CloudFront – 访问日志(优先级:中)
基线:
检查 Amazon Cloudfront 发行版是否启用了访问日志记录功能。
描述:
Cloudfront 访问日志包含有关对您的 Web 内容发出的每个请求的详细信息(请求的对象名称、访问日期和时间、客户端 IP、访问点、错误代码等),这些信息在安全审核期间或作为各种分析/报表工具的输入数据。
推荐:
为您的 Cloudfront CDN 分发启用访问日志记录。
所需权限:
“cloudfront:ListDistributions”和“cloudfront:GetDistribution”
3. Amazon CloudFront – 强制加密(优先级:中)
基线:
检查您的 Amazon CloudFront CDN 分配与其最终用户之间的通信是否使用 HTTPS 加密。
描述:
为您的 CloudFront CDN 分发建立与 HTTPS(SSL 加密)的通信可以保证边缘(缓存)服务器和应用程序查看器之间的加密流量不会被恶意用户解密,以防恶意用户能够拦截通过 CDN 分发网络发送的数据包.
推荐:
配置 CloudFront 分发查看器协议策略以对传输中的数据实施 HTTPS 加密。
所需权限:
“cloudfront:ListDistributions”
4. Amazon CloudFront – 字段级加密(优先级:中)
基线:
检查是否为您的 Amazon CloudFront Web 分配启用了字段级加密。
描述:
CloudFront 字段级加密允许您添加额外的安全层以及 SSL 加密 (HTTPS),帮助您在整个系统处理过程中保护特定敏感数据,以便只有您环境中的某些应用程序可以看到这些数据。
推荐:
为您的 Amazon CloudFront Web 分配启用字段级加密。
所需权限:
“cloudfront:ListDistributions”
5. Amazon CloudFront – 不安全的 SSL 协议(优先级:中)
基线:
确保 AWS CloudFront 分配源不使用不安全的 SSL 协议。
描述:
对您的 Cloudfront 发行版使用不安全且已弃用的 SSL 协议可能会使 Cloudfront CDN 和源服务器之间的连接容易受到 POODLE(在降级的传统加密上填充 Oracle)等漏洞的攻击。强烈建议您使用 TLSv1.0 或更高版本(如果您的来源支持,最好只使用 TLSv1.2)并避免使用 SSLv3 协议。
推荐:
从您的 Cloudfront 分发源中删除已弃用的 SSLv3 协议。
所需权限:
“cloudfront:ListDistributions”
6. Amazon CloudFront – 未加密流量(优先级:中)
基线:
检查您的 AWS CloudFront 分配与其自定义源之间的通信是否使用 HTTPS 加密。
描述:
为您的 AWS Cloudfront 分发使用 HTTPS 可以保证边缘服务器和自定义源之间的加密流量不会被恶意用户解封,以防恶意用户能够捕获通过 Cloudfront 内容分发网络 (CDN) 发送的数据包。它可以帮助您保护 Web 内容的交付并满足传输中数据加密的合规性要求。
推荐:
启用 HTTPS 以加密 CloudFront 分配边缘站点与其源之间的流量。
所需权限:
“cloudfront:ListDistributions”
Amazon API Gateway
1. API 网关 - 启用 SSL 客户端证书(优先级:中)
基线:
检查您的 Amazon API Gateway API 是否使用 SSL 证书来验证对您的后端系统发出的 HTTP 请求是否来自 API Gateway 服务。
描述:
为确保对您的后端服务发出的 HTTP 请求源自您的 Amazon API Gateway API,强烈建议使用客户端 SSL 证书来验证请求者的真实性。
推荐:
生成 SSL 证书并将其与您的 Amazon API Gateway API 相关联。
所需权限:
“apigateway:RestApis”和“apigateway:GetStages”
2. API Gateway - API 的 CloudWatch Logs(优先级:中)
基线:
检查是否为使用 Amazon API Gateway 创建的 API 启用了 AWS CloudWatch 日志记录。
描述:
Amazon CloudWatch 日志记录有助于在阶段级别记录有关 API 执行的信息。此信息对于解决您的 API 遇到的任何问题非常有用。
推荐:
为您的 Amazon API Gateway API 启用 AWS CloudWatch Logs。
所需权限:
“apigateway:RestApis”和“apigateway:GetStages”
3. API Gateway - 内容编码(优先级:中)
基线:
检查是否为您的 Amazon API Gateway API 启用了内容编码功能。
描述:
Amazon API Gateway 允许您的客户端使用受支持的压缩类型之一调用带有压缩有效负载的 API。启用内容编码后,API Gateway 服务允许根据客户端的 Accept-Encoding 标头压缩响应正文。为您的 API 有效负载启用压缩将帮助您提高 API 性能并降低带宽利用率。
推荐:
使用内容编码功能启用 Amazon API Gateway API 有效负载压缩。
所需权限:
“apigateway:RestApis”
4. API Gateway - API 的 CloudWatch 指标(优先级:中)
基线:
检查是否为使用 AWS API Gateway 创建的所有 API 启用了详细的 CloudWatch 指标。
描述:
API 阶段的 AWS CloudWatch 指标允许您获取更精细的指标数据,这些数据可以帮助您根据这些指标通过告警传递的信息快速采取行动并立即采取行动。
推荐:
为您的 Amazon API Gateway API 阶段启用详细的 CloudWatch 指标。
所需权限:
“apigateway:RestApis”和“apigateway:GetStages”
AWS EFS
1. AWS EFS - 托管 KMS 密钥(优先级:高)
基线:
检查您的 Amazon EFS 文件系统是否使用 KMS 客户主密钥 (CMK) 而不是 AWS 托管密钥(未定义客户密钥时 EFS 服务使用的默认密钥)进行加密。
描述:
在定义和使用您自己的 KMS CMK 客户管理的密钥来保护 EFS 文件系统数据和元数据后,您可以完全控制谁可以使用这些密钥来访问数据(包括系统元数据)。AWS KMS 服务允许您为您的文件系统创建、轮换、禁用和审核 CMK 加密密钥,并帮助您更精细地控制您的静态数据加密/解密过程。
推荐:
使用您自己的 AWS KMS CMK 客户托管密钥加密现有 AWS EFS 文件系统。
所需权限:
"elasticfilesystem:DescribeFileSystems"
2. AWS EFS - 加密(优先级:高)
基线:
检查您的 Amazon EFS 文件系统是否已加密以保护您的静态数据。
描述:
加密密钥由 AWS KMS 服务管理,无需构建和维护安全的密钥管理基础设施。您的数据在写入时被透明加密,在从文件系统读取时被透明解密,因此加密过程不需要您或您的应用程序执行任何额外操作。强烈建议对您的 EFS 文件系统进行加密,以保护您的数据和元数据免遭未经授权的访问,从而在您的组织内强制执行静态数据加密的合规性要求。
推荐:
为您的 AWS EFS 文件系统启用加密。
所需权限:
"elasticfilesystem:DescribeFileSystems"
Amazon Elastic MapReduce (EMR)
1. Amazon EMR - 对 S3 启用日志记录
基线:
检查是否启用了 Amazon EMR 集群日志文件以在 S3 存储桶中上传。
描述:
通过启用 EMR 的日志记录,它将帮助我们维护 EMR Cluster 的历史数据。默认情况下,所有日志文件都会自动从集群中删除。这些文件有助于分析和调试与 EMR 集群相关的任何问题。
推荐:
启用设置,以便将日志文件存储在 S3 中。
2. Amazon EMR - 通过 VPC
基线:
检查是否使用 EC2-VPC 平台而不是 EC2-Classic 平台预置了 Amazon EMR 集群。
描述:
Amazon 提供了两种启动集群的选项:EC2-Classic 或 EC2-VPC。在 EC2-Classic 中,您的实例在单个平面网络中运行。EC2-VPC 使您能够在 AWS 内的隔离区域中运行,您可以在其中配置虚拟网络,控制私有 IP 地址范围、子网、路由表和网络网关等方面。
推荐:
始终使用 EC2-VPC 启动您的 EMR 集群,以获得更好的安全性和可用性。
3. Amazon EMR - 加密
基线:
为 Amazon EMR 集群启用了传输中和静态加密。
描述:
Amazon EMR 允许我们加密静态数据、传输中的数据或两者。启用加密将防止未经授权的用户读取 EMR 集群上可用的敏感数据。
推荐:
为 EMR 集群中存储的数据启用加密。
4. 确保 Amazon EMR 集群主节点不使用公共 IP 地址(优先级:高)
基线:
检查 Amazon EMR 集群主节点是否使用公有 IP 地址。
描述:
Amazon EMR 为客户预置和管理 Hadoop 集群,以使用 MapReduce 模式处理大型数据集。默认情况下,管理和与其他集群通信的控制逻辑是通过公共 IP 地址进行的。如果您正在处理集群中的敏感数据,您可能需要额外的访问控制来启动该集群。
推荐:
确保 Amazon EMR 集群上的主节点不使用任何公共 IP 地址。
5. 确保 Amazon EMR 集群主节点不使用公共 IP 地址(优先级:高)
资源级说明:
使用公有 IP 地址的 Amazon EMR 集群主节点可能会破坏网络的安全性。
基线:
检查 Amazon EMR 集群主节点是否使用公有 IP 地址。
描述:
Amazon EMR 为客户预置和管理 Hadoop 集群,以使用 MapReduce 模式处理大型数据集。默认情况下,管理和与其他集群通信的控制逻辑是通过公共 IP 地址进行的。如果您正在处理集群中的敏感数据,您可能需要额外的访问控制来启动该集群。
推荐:
确保 Amazon EMR 集群上的主节点不使用任何公共 IP 地址。
Amazon Route 53
1. Amazon Route 53 - 自动续订
基线:
检查是否为您注册的域启用了自动续订功能以便自动续订。
描述:
启用自动续订功能将有助于在后期续订期之前续订我们的域,并防止其他注册者可以使用该域。即使我们在域名到期后恢复域名,恢复域名的成本也高于续费。
推荐:
启用自动续订选项以防止我们的域过期是安全的。
2. Amazon Route 53 - 域已过期
基线:
检查并识别当前是否有任何注册域已过期。
描述:
当您的域过期时,它不会显示在控制台中。如果您没有在续订期限之前续订域,那么它将过期,并且某些顶级域 (TLD) 注册机构允许您在域可供其他注册机构注册之前恢复该域。恢复域名的价格总是高于续费和新注册的,所以在恢复之前看恢复过期域名的价格。
推荐:
恢复域将帮助您拥有对过期域的完全访问权限。在域可供其他注册机构注册之前恢复域是安全的。
3. Amazon Route 53 - 启用传输锁定
基线:
检查是否启用了转移锁,防止域名劫持。
描述:
为在 AWS Route 53 注册的所有通用顶级域 (TLD) 的域注册机构启用转移锁定将防止有人在未经您许可的情况下将该域转移到另一个注册商。此功能使注册商可以强制自动拒绝所有转移请求。
推荐:
您的域名必须启用转移锁定功能。
4. Amazon Route 53 - 空 DNS
基线:
Route 53 托管区域检查 Route 53 DNS 服务的可用性。
描述:
Amazon Route 53 是一种高度可用且可扩展的云域名系统 (DNS) Web 服务。它有效地将用户请求连接到在 AWS 中运行的基础设施,例如 Amazon EC2 实例、Elastic Load Balancer 或 Amazon S3。它具有成本效益,受 IAM 保护,可灵活使用任何 AWS 服务。
推荐:
将 AWS Route 53 配置为您的域的 DNS 服务。
5. Amazon Route 53 - 悬空 DNS 记录
基线:
检查并识别 Route 53 集群中的 Dangling DNS 记录以维护安全性。
描述:
检查是否删除了指向域或子域的悬空DNS条目,以维护安全并防止恶意访问。如果您留下一个指向您无法控制的 IP 地址的域,那么就有可能有人出现并“认领”发往您域的流量。
推荐:
删除您域中的所有 Dangling DNS 条目。
6. Amazon Route 53 - 具有私有 DNS 的公共托管区域
基线:
使用私有 DNS 记录检查公开可用的托管区域,以防止信息暴露在 AWS 之外。
描述:
检查包含私有 IP/资源的 DNS 记录的 AWS Route 53 公有托管区域。对于发布网站,您需要公共托管区域,而私有托管区域仅响应来自关联 VPC 内的查询。您可以使用 Amazon Route 53 配置拆分视图 DNS,也称为水平分割 DNS。如果您想维护同一网站或应用程序的内部和外部版本,您可以配置公共和私有托管区域以返回相同域名的不同内部和外部 IP 地址。
推荐:
确保您的 Route 53 公共托管区域中没有任何私有 DNS 记录。
7. Amazon Route 53 - 到 ELB 的根别名点
基线:
检查指向 ELB 的 ROOT 域别名以维护流量。
描述:
确保根域别名记录指向弹性负载均衡器 (ELB)。Amazon DNS 记录类型,允许您为根域创建 A 记录并将其指向 Elastic Load Balancer (ELB)。别名记录为 DNS 功能提供特定于 Route 53 的扩展。别名记录必须包含指向您的 Elastic Load Balancer 的指针,而不是 IP 地址或域名。
推荐:
在您的托管区域中创建 Route 53 别名,其中包含指向您的 ELB 的根域别名记录。
8. Amazon Route 53 - ROOT 域的 DNS 别名
基线:
检查 AWS Route 53 中 ROOT 域可用的 DNS 别名记录。
描述:
通过为 Amazon Route 53 创建别名记录,您可以将流量路由到选定的 AWS 资源,例如 CloudFront 分配和 Amazon S3。与 CNAME 记录不同,您可以在 DNS 命名空间的顶部节点创建别名记录。例如,如果您注册 DNS 名称 example.com,则区域顶点为 example.com。您不能为 example.com 创建 CNAME 记录,但可以创建一个别名记录,例如 example.com,将流量路由到 www.example.com。
推荐:
确保为 AWS Route 53 托管区域内的根域设置 DNS 别名记录。
9. Amazon Route 53 - 启用隐私保护
基线:
检查是否启用隐私保护,以保护敏感信息。
描述:
启用隐私保护将保护您的联系信息免受 WHOIS(“谁是”)查询,并减少您收到的垃圾邮件数量。注册域隐私保护时默认启用。您可以选择为域的部分或所有联系人禁用隐私保护。如果这样做,任何人都可以通过发送 WHOIS 查询来查看您在注册或转移域时提供的联系信息,包括姓名、地址、电话号码和电子邮件地址。
推荐:
为您使用 Route 53 注册的域启用隐私保护。
Amazon Storage Gateway
1. Amazon Storage Gateway 卷 - 托管 KMS 密钥
基线:
检查您的 Amazon Storage Gateway 卷是否使用 KMS 客户主密钥 (CMK) 而不是 Amazon Web Services (AWS) 托管密钥进行加密。
描述:
定义和使用您自己的 KMS CMK 客户管理的密钥来保护 Amazon Storage Gateway,您可以完全控制谁可以使用这些密钥来访问卷(缓存或存储的卷)。AWS KMS 服务允许您为文件系统创建、轮换、禁用和审核 CMK 加密密钥,并帮助您更精细地控制静态数据加密/解密过程。
推荐:
使用您自己的 AWS KMS CMK 加密 Amazon Storage Gateway 卷。
2. Amazon Storage Gateway 文件共享 - 托管 KMS 密钥
基线:
检查您的 Amazon Storage Gateway 文件共享是否使用 KMS CMK 而不是 AWS 托管密钥进行加密。
描述:
在定义和使用您自己的 KMS CMK 来保护 Amazon S3 中支持的 Amazon Storage Gateway 文件共享后,您可以完全控制谁可以使用这些密钥来访问卷(缓存或存储的卷)。AWS KMS 服务允许您为文件系统创建、轮换、禁用和审核 CMK 加密密钥,并帮助您更精细地控制静态数据加密/解密过程。
推荐:
使用您自己的 AWS KMS CMK 加密 Amazon Storage Gateway 文件共享。
3. Amazon Storage Gateway 磁带 - 托管 KMS 密钥
基线:
检查您的 Amazon Storage Gateway 磁带是否使用 KMS CMK 而不是 AWS 托管密钥进行加密。
描述:
在定义和使用您自己的 KMS CMK 来保护 Amazon Storage Gateway 磁带中的可用数据后,您可以完全控制谁可以使用这些密钥来访问卷(缓存或存储的卷)。AWS KMS 服务允许您为文件系统创建、轮换、禁用和审核 CMK 加密密钥,并帮助您更精细地控制静态数据加密/解密过程。
推荐:
使用您自己的 AWS KMS CMK 加密 Amazon Storage Gateway 磁带。
Amazon MQ
1. Amazon MQ - 公共访问
基线:
检查 AWS MQ 代理是否无法公开访问以暴露敏感数据并最大程度地降低安全风险。
描述:
可以在 Amazon Virtual Private Cloud (Amazon VPC) 之外直接访问公开可用的 Amazon MQ 代理。可公开访问意味着任何人都可以通过其公共端点访问您的 MQ 代理,这会增加恶意活动的机会,例如跨站点脚本 (XSS) 和点击劫持攻击。
推荐:
通过在 VPC 中重新创建 Amazon MQ 中的公共可访问性来禁用它们。
2. Amazon MQ - 代理网络
基线:
检查您的生产 AWS MQ 代理是否在单实例或活动/备用代理的网状网络中运行。
描述:
代理网络使云应用程序能够在代理故障、可用区 (AZ) 中断或发生可能导致与整个 AWS 区域失去连接的灾难时继续运行。部署代理网络还可以分配负载以获得更高的消息吞吐量,并增加应用程序连接数量以实现高可用性和可扩展性。
推荐:
使用单实例或活动/备用代理的网状网络重新创建 Amazon MQ 代理。
3. Amazon MQ - 日志导出
基线:
检查并确定日志导出功能已启用以将您的代理日志事件发布到 AWS CloudWatch Logs。
描述:
启用日志导出功能后,Amazon MQ 会将一般日志和审计日志发布到 AWS CloudWatch Logs,让您可以持续了解代理的活动,并在审计方面满足合规性要求。
推荐:
为您现有的 Amazon MQ 代理启用日志导出功能。
4. Amazon MQ - 部署模式
基线:
检查 AWS MQ 代理是否使用主动/备用部署模式来实现高可用性。
描述:
通过启用部署模式,而不是单代理模式(默认启用),您可以为您的 Amazon MQ 代理实现高可用性,因为该服务提供自动故障转移功能。MQ 主备部署模式包括通过在一个 AZ 中创建单个 broker 实例配置的两个 broker 实例,以及在不同 AZ 中创建另一个备用 broker 实例。
推荐:
要为现有 Amazon MQ 代理启用活动/备用部署模式,您需要使用高可用性配置重新创建它们。
5. Amazon MQ - 自动次要版本升级
基线:
检查 Amazon MQ 代理是否启用了自动次要版本升级功能以接收自动次要引擎升级。
描述:
启用自动次要版本升级功能后,版本升级将在维护时段内自动进行。这样,您的 AWS MQ 代理可以获得新的软件功能、错误修复和安全补丁。
推荐:
要为现有 Amazon MQ 代理启用自动次要版本升级功能,您需要使用必要的配置重新创建代理。
6. 未充分利用的 MQ 实例(优先级:高)
资源级说明:
将列出被视为未充分利用的 Amazon MQ 实例。
基线:
检查 Amazon MQ 消息代理服务的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon MQ,您需要根据实例类型和消耗的小时数付费。您可以通过识别和停止使用较少的实例来降低成本。
7. Amazon MQ - 高实例利用率(优先级:高)
基线:
检查 Amazon MQ 的性能计数器并识别似乎被高度利用的实例。
描述:
如果 MQ 代理在过去 7 天内的平均每日 CPU 使用率超过 90%,则该 MQ 代理被视为过度使用。
推荐:
考虑更改实例大小。
AWS Certificate Manager (ACM)
1. AWS Certificate Manager - 证书通配符使用
基线:
检查您的 AWS 账户中是否使用了 AWS Certificate Manager (ACM) 单域名证书而不是通配符证书。
描述:
使用单域名证书而不是通配符证书来降低黑客攻击域/子域的风险。通过使用通配符证书,当证书的私钥被黑客入侵时,域和子域可能会受到影响。
推荐:
为ACM中的每个一级子域使用单个域名证书以增强安全性。
2. AWS Certificate Manager - 证书有效性
基线:
检查在 SSL/TLS 证书颁发或续订过程中发出的所有请求是否在由 ACM 管理时得到验证。
描述:
如果您的 ACM 证书未按时验证(在提出请求后 72 小时内),这些证书将失效,您将不得不申请新的 SSL/TLS 证书,这可能会导致您的应用程序或服务中断。
推荐:
确定当前是否在您的 AWS 账户中未验证任何 ACM 证书请求。
3. AWS Certificate Manager - 证书续订
基线:
在有效期结束前,检查是否有任何由 ACM 管理的 SSL/TLS 证书需要更新。
描述:
如果 ACM 证书未在其到期日期之前续订,它们就会失效,并且实施这些证书的 AWS 资源(CloudFront 分配)将不再安全。ACM 服务不会自动更新未使用的证书(即不再与其他 AWS 资源关联)。在这些证书失效之前,必须手动执行续订过程。
推荐:
使用 ACM 服务续订即将到期的 SSL/TLS 证书。
4. AWS Certificate Manager - 证书已过期
基线:
检查是否已删除所有由 ACM 管理的过期 SSL/TLS 证书。
描述:
删除过期的 ACM 证书可以消除将无效 SSL/TLS 证书意外部署到其他资源(例如 Elastic Load Balancing (ELB))的风险。
推荐:
删除由 ACM 管理的任何过期 SSL/TLS 证书。
AWS Elastic Kubernetes Service (EKS)
1. AWS EKS - 可公开访问
基线:
检查 Amazon Elastic Kubernetes Service (EKS) 集群的 Kubernetes API 服务器终端节点是否无法从 Internet 公开访问,以避免暴露私有数据。
描述:
Amazon EKS 为与新创建的集群通信的托管 Kubernetes API 服务器创建一个终端节点。默认情况下,可以在 VPC 外部直接访问此由 AWS EKS 管理的 API 服务器终端节点。因此,互联网上的每台机器都可以通过其公共端点访问 EKS 集群,这会增加恶意活动和攻击的机会。
推荐:
要禁用公共可访问性,您需要重新配置 EKS 集群 API 服务器端点的可见性。
2. AWS EKS - 安全组
基线:
检查与您的 EKS 集群关联的安全组是否配置为仅允许 TCP 端口 443 (HTTPS) 上的入站流量。
描述:
不要在您的 Amazon EKS 安全组中使用每种类型的端口。仅允许 HTTPS 上的入站流量,以保护您的集群免受恶意活动的侵害,例如暴力攻击。
推荐:
要仅允许在 TCP 端口 443 上进行访问,您需要重新配置与您的 Amazon EKS 集群关联的安全组。
3. AWS EKS - 集群日志
基线:
检查 Amazon EKS 集群是否启用了日志,以便您可以将日志发布到 AWS CloudWatch Logs。
描述:
通过启用 EKS 控制平面日志记录功能,EKS 将审计和诊断日志直接发送到 AWS CloudWatch Logs。这些日志可以帮助您保护并有效地运行您的 EKS 集群。您可以选择所需的日志类型(API、审计、控制器管理器、调度程序或身份验证日志)。日志记录数据被发送到为指定的 Amazon EKS 集群创建的 AWS CloudWatch 日志组。
推荐:
使您的 AWS EKS 集群能够向 Amazon CloudWatch 发布 API、审计、控制器管理器、调度程序或验证日志。
Amazon WorkSpaces
1. Amazon WorkSpaces - 未使用的实例
基线:
检查未使用的 AWS WorkSpaces 实例以降低您的 AWS 成本。
描述:
在您的 AWS 账户中运行的 WorkSpaces 实例会增加费用,即使您不使用它也是如此。强烈建议您删除所有未使用的 WorkSpaces 实例。
推荐:
终止您的 AWS 账户中可用的任何未使用的 Amazon WorkSpaces 实例。
2. Amazon WorkSpaces - 存储加密
基线:
为满足安全性和合规性要求,请检查 WorkSpaces 存储卷是否已加密。
描述:
WorkSpaces Storage Encryption 允许您对数据进行加密,以防止未经授权的用户读取敏感数据。要满足安全和隐私合规性要求,请加密您的 WorkSpaces 存储卷。
推荐:
要加密现有 AWS WorkSpaces 数据,您必须在启用卷加密功能的情况下重新创建必要的 WorkSpaces 实例。
3. Amazon WorkSpaces - 健康的实例
基线:
检查所有 WorkSpaces 实例是否健康并正常运行,以保持工作状态。
描述:
不响应服务运行状况检查的 WorkSpaces 实例被视为不正常。WorkSpaces 服务会定期向 WorkSpaces 实例发送状态请求,如果没有收到对 HealthCheck 请求的响应,则确定为不健康。
推荐:
不健康的 WorkSpaces 指标通常可以通过重新启动来清除。
Amazon Neptune
1. Amazon Neptune - IAM 数据库身份验证
基线:
检查是否为您的 Amazon Neptune 数据库集群启用了身份和访问管理 (IAM) 数据库身份验证功能以管理数据库访问。
描述:
Neptune 数据库集群的 IAM 数据库身份验证无需使用用户凭证登录 AWS IAM。它提供了各种好处。这包括传输中加密、进出使用 SSL 加密的数据库集群的网络流量以及登录时的集中管理。
推荐:
为您的 Neptune 集群启用 IAM 数据库身份验证,以通过 IAM 管理用户凭证。
2. Amazon Neptune - 自动小版本升级
基线:
检查 Neptune 数据库实例是否启用了自动次要版本升级功能,以便自动接收次要引擎升级。
描述:
Neptune 数据库会定期升级,以引入新的软件功能、错误修复、安全补丁和性能改进。在系统维护时段内,自动升级将应用于 Neptune 实例。
推荐:
启用自动次要版本升级功能以更新 Neptune 数据库实例。
3. Amazon Neptune - 多可用区
基线:
确保您的 Neptune 图形数据库集群至少部署在两个可用区中。
描述:
如果您在多个 AZ 中拥有 Neptune 图数据库集群,并且这些集群共享一个 Neptune 图数据库集群,则在 AZ 发生故障时,Neptune 图数据库集群将不可用,并且其他 AZ 内的资源将无法访问 Internet。通过在至少两个 AZ 中部署 Neptune 图形数据库集群来创建容错。
推荐:
通过在至少两个 AZ 中部署 Neptune 图形数据库集群,消除单点故障并提高应用程序的可用性。
4. Amazon Neptune - 加密
基线:
检查您的 Amazon Neptune 数据库实例是否已加密以保护您的静态数据。
描述:
加密密钥由 AWS KMS 服务管理,无需构建和维护安全的密钥管理基础设施。您的数据在写入时被透明地加密,在从数据库中读取时被透明地解密。加密过程不需要您或您的应用程序执行任何其他操作。强烈建议您加密您的 Neptune 数据库实例,以保护您的数据和元数据免遭未经授权的访问,从而在您的组织内强制执行静态数据加密的合规性要求。
推荐:
为您的 AWS Neptune 数据库实例启用加密。
5. Amazon Neptune - 托管 KMS 密钥
基线:
检查您的 Amazon Neptune 数据库实例是否使用 KMS CMK 而不是 AWS 托管密钥(未定义客户密钥时服务使用的默认加密密钥)进行加密。
描述:
在定义和使用您自己的 KMS CMK 来保护 Neptune 数据库实例后,您可以完全控制谁可以使用这些密钥来访问数据,包括系统元数据。AWS KMS 服务允许您为文件系统创建、轮换、禁用和审核 CMK 加密密钥,并帮助您更精细地控制静态数据加密/解密过程。
推荐:
通过使用所需的加密配置重新创建现有 AWS Neptune 数据库实例来保护它。
6. Amazon Neptune - 备份保留期
基线:
检查 Amazon Neptune 图形数据库集群是否设置了最短备份保留期以保留自动快照。
描述:
为 Amazon Neptune 集群设置的最短保留期将导致备份持续和增量,因此您可以快速恢复到备份保留期内的任何时间点。较长时间的备份将使您能够在发生故障时处理数据恢复过程。
推荐:
更新 Neptune 集群配置以设置足够的备份保留期。
7. 未充分利用的 Neptune 实例(优先级:高)
资源级说明:
列出了被认为未充分利用的 Neptune 实例。
基线:
检查 Amazon Neptune 完全托管图形数据库服务的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon Neptune,您根据实例类型和消耗的小时数计费。您可以通过识别和停止利用率低的实例来降低成本。
8. Neptune - 高实例利用率(优先级:高)
基线:
检查 Amazon MQ 的性能计数器并识别似乎被高度利用的实例。
描述:
如果 Neptune 实例在过去 7 天内的平均每日 CPU 使用率超过 90%,则认为 Neptune 实例过度使用。
推荐:
考虑更改实例大小。
Amazon Database Migration Service (DMS)
1. Amazon DMS - AWS DMS 复制实例在同一网络上时不应公开(优先级:高)
基线:
当源数据库和目标数据库位于同一网络中时,检查 AWS DMS 复制实例是否向公众公开。
描述:
AWS DMS 复制实例可以有一个公有或私有 IP 地址,实例利用该地址连接到源数据库和目标数据库。当源数据库和目标数据库在同一网络上并通过虚拟专用网络 (VPN) 连接到实例的虚拟私有云 (VPC) 时,请勿将 DMS 实例向公众公开。
推荐:
当源数据库和目标数据库位于您的 AWS VPC 中时,这些实例必须可以私有访问。通过创建安全组来限制向公众公开 DMS 复制实例。
Amazon Elasticsearch (ES) Service
1. Amazon Elasticsearch Service 域应位于 VPC 中(优先级:中等)
基线:
检查 Elasticsearch 服务域是否存在于 VPC 网络中。
描述:
AWS 中的 ES 域使用公共访问或 VPC 访问进行部署。当 ES 集群部署到 VPC 时,只有有权访问该 VPC 的用户才能访问集群。通过阻止公共请求,您可以通过在潜在威胁影响您的资源之前阻止它们来降低您的攻击面。
推荐:
在 AWS VPC 中启动 Amazon ES 集群以促进 ES 集群和其他 AWS 服务之间的安全通信,而无需互联网网关、网络地址转换 (NAT) 设备或 VPN 连接。
2. Elasticsearch 域应该启用静态加密(优先级:高)
基线:
确定 Elasticsearch (ES) 域是否启用了静态加密。
描述:
静态数据加密有助于防止未经授权的访问,因此不会对您的 ES 域(集群)及其存储系统内的敏感数据执行恶意活动。ES 静态加密利用 AWS KMS 服务来存储和管理加密密钥。
推荐:
确保对 ES 域进行静态加密,以保护它们免受恶意访问并满足您组织中的任何合规性要求。
3. Elasticsearch 域应该启用静态加密(优先级:高)
资源级说明:
必须对 ES 域进行静态加密,以保护资源免受安全攻击。
基线:
确定 Elasticsearch (ES) 域是否启用了静态加密。
描述:
静态数据加密有助于防止未经授权的访问,因此不会对您的 ES 域(集群)及其存储系统内的敏感数据执行恶意活动。ES 静态加密利用 AWS KMS 服务来存储和管理加密密钥。
推荐:
确保对 ES 域进行静态加密,以保护它们免受恶意访问并满足您组织中的任何合规性要求。
Amazon GuardDuty
1. GuardDuty 应该启用(优先级:中等)
基线:
检查是否启用了 Amazon GuardDuty。
描述:
AWS GuardDuty 是一项托管威胁检测服务,可持续监控您的 VPC 流日志、AWS CloudTrail 事件日志和 DNS 日志,以发现恶意或未经授权的行为。启用 GuardDuty 后,它可以帮助识别和生成有关未经授权或异常活动的调查结果并提供补救措施。
推荐:
在您的 AWS 资源可用的每个区域启用 GuardDuty,以加强您的基础设施抵御安全威胁。
Amazon CloudTrail
1. 应启用 CloudTrail 日志文件验证(优先级:中等)
基线:
检查是否启用了 CloudTrail 日志文件验证。
描述:
验证您的 CloudTrail 日志文件的完整性,并确定文件在传送到指定的 S3 存储桶后是否发生了更改。理想情况下,日志文件应保持不变。
推荐:
启用文件完整性验证功能以检查日志文件并分析在 CloudTrail 代理将它们传送到 S3 存储桶后是否有任何被修改或删除。
2. 确保启用 CloudTrail 全球服务(优先级:高)
基线:
确保启用 CloudTrail 全局服务。
描述:
通过启用 CloudTrail 全球服务,提高您 AWS 账户中 API 活动的可见性。这通过捕获非特定区域的活动(如 IAM 事件)来加强安全性并简化 AWS 账户的管理。您还可以从一个位置管理所有区域的跟踪配置,并记录未使用区域中的 API 调用以检测任何异常活动。
注意:在多个跟踪中启用全局服务会生成重复条目。为防止这种情况,请仅在单个路径中启用它并在其他路径中禁用它。推荐:
启用 CloudTrail 全球服务,以更好地管理 AWS 账户并加强云基础设施的安全性。
3. 确保使用 AWS KMS 密钥对 CloudTrail 日志进行静态加密(优先级:中等)
基线:
确定 CloudTrail 日志是否使用 AWS Key Management Service (KMS) 密钥进行静态加密。
描述:
CloudTrail 日志可以配置为利用 AWS KMS 密钥提供的服务器端加密来进一步保护日志。这增强了 CloudTrail 存储桶的安全性,并有助于更好地控制谁可以读取您组织中的日志文件。
推荐:
通过使用 AWS KMS 密钥加密静态 CloudTrail 日志来添加额外的安全层。
4. 确保日志指标过滤器和告警都存在(优先级:中等)
基线:
确定是否存在用于检测 CloudTrail 配置更改的 CloudWatch 指标过滤器和告警。
描述:
指标筛选器用于从来自 CloudTrail 到 CloudWatch 的日志数据创建数值。您可以根据传入日志设置告警,还可以在 CloudWatch 中可视化过滤器的统计信息。每次在 CloudTrail 服务级别进行配置更改时,都会触发在您的 AWS 账户中创建的 CloudWatch 告警。使用 CloudWatch 告警检测 AWS CloudTrail 配置更改以维护服务配置的完整性。
推荐:
确保同时启用日志指标过滤器和告警。
5. CloudTrail 应启用并配置至少一个多区域跟踪(优先级:高)
基线:
检查 CloudTrail 是否已启用并配置了至少一个多区域跟踪。
描述:
当您创建多区域 CloudTrail 时,AWS 实际上会在每个区域(以及每个账户,如果是组织跟踪)设置跟踪。它们是将数据发送到共享 S3 存储桶的单独跟踪。因此,通过创建多区域跟踪,集中收集数据。
推荐:
开启 CloudTrail 并配置至少一个多区域跟踪。
6. 应启用 CloudTrail 日志文件验证(优先级:中)
资源级说明:
必须启用 CloudTrail 日志文件验证,否则资源的可用性会中断。
基线:
检查是否启用了 CloudTrail 日志文件验证。
描述:
验证您的 CloudTrail 日志文件的完整性,并确定文件在传送到指定的 S3 存储桶后是否发生了更改。理想情况下,日志文件应保持不变。
推荐:
启用文件完整性验证功能以检查日志文件并分析在 CloudTrail 代理将它们传送到 S3 存储桶后是否有任何被修改或删除。
7. 确保启用 CloudTrail 全球服务(优先级:高)
资源级说明:
启用 CloudTrail 全球服务可捕获区域和全球事件,以便更好地了解您的 AWS 账户的 API 活动。
基线:
确保启用 CloudTrail 全局服务。
描述:
通过启用 CloudTrail 全球服务,提高您 AWS 账户中 API 活动的可见性。这通过捕获非特定区域的活动(如 IAM 事件)来加强安全性并简化 AWS 账户的管理。您还可以从一个位置管理所有区域的跟踪配置,并记录未使用区域中的 API 调用以检测任何异常活动。
推荐:
启用 CloudTrail 全球服务,以更好地管理 AWS 账户并加强云基础设施的安全性。
8. 确保 S3 存储桶 CloudTrail 日志不可公开访问(优先级:高)
资源级说明:
公共 S3 存储桶 CloudTrail 日志可能会破坏资源的安全性。
基线:
确定您的 S3 存储桶 CloudTrail 日志是否可公开访问。
描述:
Amazon S3 存储桶和对象默认是私有的;只有创建存储桶的个人才能访问它以及其中包含的对象。CloudTrail 日志可能包含您账户中 API 活动的详细事件。如果您为存储在 S3 存储桶中的 CloudTrail 日志提供的权限不安全,则您可能会向恶意用户提供对您的 AWS 账户日志数据的访问权限,这会增加未经授权访问的风险。
推荐:
确保与 CloudTrail 日志记录关联的 S3 存储桶不可公开访问,并保护您的 AWS 账户日志数据。
9. 确保使用 AWS KMS 密钥对 CloudTrail 日志进行静态加密(优先级:中)
资源级说明:
未使用 AWS KMS 密钥进行静态加密的 CloudTrail 日志存在安全漏洞。
基线:
确定 CloudTrail 日志是否使用 AWS Key Management Service (KMS) 密钥进行静态加密。
描述:
CloudTrail 日志可以配置为利用 AWS KMS 密钥提供的服务器端加密来进一步保护日志。这增强了 CloudTrail 存储桶的安全性,并有助于更好地控制谁可以读取您组织中的日志文件。
推荐:
通过使用 AWS KMS 密钥加密静态 CloudTrail 日志来添加额外的安全层。
10. CloudTrail 应启用并配置至少一个多区域跟踪(优先级:高)
资源级说明:
未配置至少一个多区域跟踪的 CloudTrail 跟踪可能会中断资源的可用性。
基线:
检查 CloudTrail 是否已启用并配置了至少一个多区域跟踪。
描述:
当您创建多区域 CloudTrail 时,AWS 实际上会在每个区域(以及每个账户,如果是组织跟踪)设置跟踪。它们是将数据发送到共享 S3 存储桶的单独跟踪。因此,通过创建多区域跟踪,集中收集数据。
推荐:
开启 CloudTrail 并配置至少一个多区域跟踪。
11. 确保日志指标过滤器和告警都存在(优先级:中)
资源级说明:
必须启用日志指标过滤器和告警以确保资源的高可用性。
基线:
确定是否存在用于检测 CloudTrail 配置更改的 CloudWatch 指标过滤器和告警。
描述:
指标筛选器用于从来自 CloudTrail 到 CloudWatch 的日志数据创建数值。您可以根据传入日志设置告警,还可以在 CloudWatch 中可视化过滤器的统计信息。每次在 CloudTrail 服务级别进行配置更改时,都会触发在您的 AWS 账户中创建的 CloudWatch 告警。使用 CloudWatch 告警检测 AWS CloudTrail 配置更改以维护服务配置的完整性。
推荐:
确保同时启用日志指标过滤器和告警。
Amazon Key Management Service (KMS)
1. 确保启用 KMS 密钥轮换(优先级:中等)
基线:
确定是否可以轮换 KMS 密钥。
描述:
轮换 KMS 密钥有助于减少泄露密钥的潜在影响,因为使用新密钥加密的数据无法使用以前的公开密钥访问。
推荐:
确保轮换客户创建的 KMS 密钥并减少密钥泄露的可能性。
2. 确保启用 KMS 密钥轮换(优先级:中)
资源级说明:
必须启用客户创建的 KMS 密钥的轮换,以防止密钥被泄露。
基线:
确定是否可以轮换 KMS 密钥。
描述:
轮换 KMS 密钥有助于减少泄露密钥的潜在影响,因为使用新密钥加密的数据无法使用以前的公开密钥访问。
推荐:
确保轮换客户创建的 KMS 密钥并减少密钥泄露的可能性。
DocumentDB
1. 未充分利用的 DocumentDB 实例(优先级:高)
资源级说明:
将列出被视为未充分利用的 DocumentDB 实例。
基线:
检查 Amazon DocumentDB 完全托管的数据库服务的资源利用率,如果过去 48 小时内 CPU 使用率低于 2%,则将其标记为未充分利用。
推荐:
对于 Amazon DocumentDB,您需要根据实例类型和消耗的小时数付费。您可以通过识别和停止利用率低的实例来降低成本。
2. Amazon DocumentDB - 高实例利用率(优先级:高)
基线:
检查 Amazon DocumentDB 的性能计数器并识别似乎被高度利用的实例。
描述:
如果 DocumentDB 实例在过去 7 天内的平均每日 CPU 使用率超过 90%,则该 DocumentDB 实例被视为过度使用。
推荐:
考虑更改实例大小。
视频
这是一个讨论 AWS 监控最佳实践的快速视频:
合规检查
Site24x7 对 AWS 指导报表中提供的最佳实践建议进行合规性检查。这些检查查找安全漏洞并帮助您分析您的云基础架构是否符合全球安全和合规标准。您可以识别不合规的做法并获得合规建议。
Site24x7 对以下安全标准和认证进行合规性检查:
- PCI DSS:支付卡行业数据安全标准 (PCI DSS) 确保所有实体为处理、存储或传输的信用卡信息维护一个安全的环境。
- GDPR:通用数据保护条例 (GDPR) 是一项泛欧法规,要求企业在处理其个人数据时保护客户的个人数据和隐私。
- NIST:遵守美国国家标准与技术研究院 (NIST) 可确保联邦机构满足《联邦信息安全管理法案》(FISMA) 的要求。
- APRA:澳大利亚审慎监管局 (APRA) 要求金融和保险部门的组织加强其信息安全框架。
- MAS:新加坡金融管理局 (MAS) 对金融机构实施个人责任和行为方面的指导。
- HIPAA: 1996 年的《健康保险流通与责任法案》(HIPAA) 是一项联邦法律。该法律禁止在未经患者同意或不知情的情况下披露敏感的患者健康信息。
- CIS:互联网安全中心 (CIS) 基准是保护 IT 系统和数据免受网络攻击的安全标准。
查看合规性检查
您可以查看合规性数据以及 AWS 实例的最佳实践建议。
常见问题 (FAQ)
1. Site24x7 的 AWS 指导报表是什么?
指导报表检查您的 AWS 环境并帮助您确定有效使用资源(如 EC2 实例、EBS 卷、ELB 节点等)的机会。
2. 指导报表是否可供所有用户使用?
是的。Site24x7 的 AWS 指导报表适用于所有 Site24x7 订阅持有者,包括付费和评估版。您需要做的就是通过 IAM 用户创建或跨账户 IAM 角色启用访问,并将您的 AWS 账户与 Site24x7 连接。
3.指导报表的局限性
- 目前,guidee 报表仅针对选定的 AWS 服务提供建议检查。
- 仅检查受监控资源的合规性。不考虑使用各种自动发现过滤器排除的资源。
4. 我如何访问指导报表?
对于已监控的 AWS 账户
- 登录到 Site24x7 Web 控制台。从左侧导航窗格中选择 AWS,然后选择您要查看其建议的 AWS 账户。
- 在下拉菜单中,选择指导报表。
对于新集成的 AWS 账户
构建指导报表需要一小时的持续时间(从 AWS 账户集成开始)。完成后,您可以登录到 Site24x7 控制台,选择受监控的 AWS 账户 > 指导报表以查看建议。
5. 报表多久更新一次?
指导报表将从 AWS 账户集成之日起每周更新一次。
6. 电子邮件通知呢?
将向与您的 Site24x7 订阅帐户关联的超级管理员联系人发送每周电子邮件更新。
7. 我可以计划报表吗?
是的。您可以使用计划报表功能选择频率(每天、每周或每月)、一天中的时间和用户组。
8. 新监测的资源是否会出现在指导报表中?
该报表将每周更新和刷新,在此期间发现和监控的任何不符合我们检查的新资源都将包含在报表中。
9. Site24x7 如何收集推荐所需的数据?
Site24x7 利用各种 AWS 服务级别 API 来收集配置信息。通过轮询 CloudWatch API 收集的资源使用指标用于识别空闲/未使用的资源。
10. Site24x7 如何进行实例类型推荐?
Site24x7 在启用指导报表的情况下,分析关键指标,例如您的实例的 CPU 和内存使用情况以及当前的实例类型。通过分析这两者,Site24x7 会根据您的使用模式提供使用正确实例类型的建议。