Amazon 基础安全最佳实践控件 - Amazon Security Hub
按服务分类的控件[ACM.1] 导入的和 ACM 颁发的证书应在指定的时间段后续订[ApiGateway.1] 应该启用 API Gateway REST 和 WebSocket API 日志记录[ApiGateway.2] API Gateway REST API 阶段应配置为使用 SSL 证书进行后端身份验证[ApiGateway.3] API Gateway REST API 阶段应该启用Amazon X-Ray跟踪[ApiGateway.4] API Gateway 应该与Amazon WAF Web ACL 相关联[ApiGateway.5] API Gateway REST API 缓存数据应该在静态时加密[AutoScaling.1] 与负载均衡器关联的 Auto Scaling 组应使用负载均衡器运行状况检查[AutoScaling.2] Auto Scaling 组应涵盖多个可用区[AutoScaling.3] Auto Scaling 组应将 EC2 实例配置为需要实例元数据服务版本 2 (IMDSv2)[AutoScaling.4] Auto Scaling 组启动配置的元数据响应跳数限制不应大于1[AutoScaling.5] 使用 Auto Scaling 组启动配置启动的 Amazon EC2 实例不应具有公有 IP 地址[AutoScaling.6] Auto Scaling 组应在多个可用区中使用多个实例类型[AutoScaling.9] EC2 Auto Scaling 组应使用 EC2 启动模板[CloudFormation.1] CloudFormation 堆栈应与Simple Notification Service (SNS) 集成[CloudFront.1] CloudFront 发行版应配置默认根对象[CloudFront.2] CloudFront 发行版应启用原始访问身份[CloudFront.3] CloudFront 发行版在传输过程中应要求加密[CloudFront.4] CloudFront 发行版应配置原始故障转移[CloudFront.5] CloudFront 发行版应启用日志记录[CloudFront.6] CloudFront 发行版应该已Amazon WAF启用[CloudFront.7] CloudFront 发行版应使用自定义 SSL/TLS 证书[CloudFront.8] CloudFront 发行版应使用 SNI 来提供 HTTPS 请求[CloudFront.9] CloudFront 发行版应加密流向自定义源的流量[CloudFront.10] CloudFront 发行版不应在边缘站点和自定义源之间使用过时的 SSL 协议[CloudTrail.1] CloudTrail 应启用并配置至少一个包含读写管理事件的多区域跟踪[CloudTrail.2] CloudTrail 应启用静态加密[CloudTrail.4] 确保启用 CloudTrail 日志文件验证[CloudTrail.5] 确保 CloudTrail 跟踪与亚马逊 CloudWatch 日志集成[CodeBuild.1] CodeBuild GitHub 或 Bitbucket 源存储库 URL 应使用 OAuth[CodeBuild.2] CodeBuild 项目环境变量不应包含明文证书[CodeBuild.4] CodeBuild 项目环境应该有日志配置[CodeBuild.5] CodeBuild 项目环境不应启用特权模式[Config.1] 应启用 Amazon Config[DMS.1]Amazon Database Migration Service 复制实例不应公开[DynamoDB.1] DynamoDB 表应根据需求自动扩展容量[DynamoDB.2] DynamoDB 表应启用 point-in-time 恢复功能[DynamoDB.3] DynamoDB Acelerator (DAX) 集群应进行静态加密[EC2.1] Amazon EBS 快照不应公开,这取决于任何人都可恢复的可用性[EC2.2] VPC 默认安全组不应允许入站和出站流量 [EC2.3] 附加的 EBS 卷应在静态时加密[EC2.4] 应在指定时间段后删除已停止的 EC2 实例[EC2.6] 应在所有 VPC 中启用 VPC 流量日志记录 [EC2.7] 应启用 EBS 默认加密[EC2.8] EC2 实例应使用 imdsV2[EC2.9] EC2 实例不应有公有 IP 地址[EC2.10] 应将 Amazon EC2 配置为使用为Amazon EC2 服务创建的 VPC 终端节点[EC2.15] EC2 子网不应自动分配公有 IP 地址[EC2.16] 应删除未使用的网络访问控制列表[EC2.17] EC2 实例不应使用多个 ENI[EC2.18] 安全组应只允许授权端口不受限制的传入流量[EC2.19] 安全组不应允许不受限制地访问高风险端口[EC2.20]Amazon 站点到站点 VPN 连接的两个 VPN 隧道都应已启动[EC2.21] 网络 ACL 不应允许从 0.0.0.0/0 进入端口 22 或端口 3389[EC2.22] 应移除未使用的 EC2 安全组[EC2.23] EC2 传输网关不应自动接受 VPC 连接请求[EC2.24] 不应使用半虚拟化 EC2 实例类型[EC2.27] 运行 EC2 实例不应使用密钥对(已停用)[ECR.1] ECR 私有存储库应配置图像扫描[ECR.2] ECR 私有存储库应配置标签不可变性[ECR.3] ECR 存储库应至少配置一个生命周期策略[ECS.1] Amazon ECS 任务定义应具有安全联网模式和用户定义[ECS.2] Amazon ECS 服务不应自动分配公有 IP 地址[ECS.3] ECS 任务定义不应共享主机的进程命名空间[ECS.4] ECS 容器应以非特权方式运行[ECS.5] ECS 容器应限于对根文件系统的只读访问权限[ECS.8] 密钥不应作为容器环境变量传递[ECS.10] Fargate 服务应该在最新的 Fargate 平台版本上运行[ECS.12] ECS 集群应启用容器洞察[EFS.1] 应将 Amazon EFS 配置为使用以下方法加密静态文件数据Amazon KMS[EFS.2] 亚马逊 EFS 卷应包含在备份计划中[EFS.3] EFS 接入点应强制使用根目录[EFS.4] EFS 接入点应强制使用用户身份[EKS.2] EKS 集群应该在支持的 Kubernetes 版本上运行[ElasticBeanstalk.1] Elastic Beanstalk 环境应启用增强型运行状况报告[ElasticBeanstalk.2] 应启用 Elastic Beanstalk 托管平台更新[ELB.2] 具有 HTTPS/SSL 侦听器的经典负载均衡器应使用提供的证书Amazon Certificate Manager[ELB.3] Classic Load Balancer 监听器应配置为 HTTPS 或 TLS 终止[ELB.4] 应将应用程序负载均衡器配置为删除 HTTP 标头[ELB.5] 应启用应用程序和传统负载均衡器日志记录[ELB.6] 应启用Application Load Balancer 删除保护[ELB.7] 经典负载均衡器应启用连接耗尽[ELB.8] 带有 HTTPS/SSL 侦听器的经典负载均衡器应使用具有强配置的预定义安全策略[ELB.9] 经典负载均衡器应启用跨区域负载均衡[ELB.10] 经典负载均衡器应跨越多个可用区[ELB.12] 应用程序负载均衡器应配置为防御或最严格的不同步缓解模式[ELB.13] 应用程序、网络和网关负载均衡器应跨越多个可用区[ELB.14] 经典负载均衡器应配置为防御或最严格的不同步缓解模式[elbv2.1] 应将Application Load Balancer 配置为将所有 HTTP 请求重定向到 HTTPS[EMR.1] Amazon EMR 集群主节点不应有公有 IP 地址[ES.1] Elasticsearch 域应启用静态加密[ES.2] Elasticsearch 域应该在 VPC 中[ES.3] Elasticsearch 域应加密节点之间发送的数据[ES.4] 应启用 Elasticsearch 域错误记录到 CloudWatch 日志[ES.5] Elasticsearch 域应启用审核日志[ES.6] Elasticsearch 域应至少有三个数据节点[ES.7] Elasticsearch 域应配置至少三个专用主节点[ES.8] 与 Elasticsearch 域的连接应使用 TLS 1.2 进行加密[GuardDuty.1] GuardDuty 应启用[IAM.1] IAM 策略不应允许完整的 “*” 管理权限[IAM.2] IAM 用户不应附加 IAM 政策[IAM.3] IAM 用户的访问密钥应每 90 天或更短时间轮换一次[IAM.4] IAM 根用户访问密钥不应存在[IAM.5] 应为拥有控制台密码的所有 IAM 用户启用 MFA[IAM.6] 应该为根用户启用硬件 MFA[IAM.7] IAM 用户的密码策略应具有强配置[IAM.8] 应删除未使用的 IAM 用户证书[IAM.21] 您创建的 IAM 客户托管策略不应允许对服务执行通配符操作[Kinesis.1] Kinesis Data Streams 应该在静态时加密[KMS.1] IAM 客户托管策略不应允许对所有 KMS 密钥进行解密和重新加密操作[KMS.2] IAM 委托人不应有允许对所有 KMS 密钥进行解密和重新加密操作的 IAM 内联策略 [KMS.3] 不应无意中删除Amazon KMS密钥[Lambda.1] Lambda 函数策略应禁止公共访问[Lambda.2] Lambda 函数应使用支持的运行时[Lambda.4] Lambda 函数应配置死信队列(已停用)[Lambda.5] VPC Lambda 函数应在多个可用区中运行[NetworkFirewall.3] Network Firewall 策略应至少关联一个规则组[NetworkFirewall.4] 对于完整的数据包,Network Firewall 策略的默认无状态操作应为丢弃或转发[NetworkFirewall.5] 对于分段数据包,Network Firewall 策略的默认无状态操作应为丢弃或转发[NetworkFirewall.6] 无状态Network Firewall 规则组不应为空[OpenSearch.1] OpenSearch 域应启用静态加密[OpenSearch.2] OpenSearch 域应位于 VPC 中[OpenSearch.3] OpenSearch 域应加密节点之间发送的数据[OpenSearch.4] 应启用将 OpenSearch 域错误记录到 CloudWatch 日志[OpenSearch.5] OpenSearch 域应启用审核日志[OpenSearch.6] OpenSearch 域应至少有三个数据节点[OpenSearch.7] OpenSearch 域应启用精细访问控制[OpenSearch.8] 与 OpenSearch 域的连接应使用 TLS 1.2 进行加密[RDS.1] RDS 快照应为私有快照[RDS.2] Amazon RDS 数据库实例应禁止公共访问,具体取决于 PubliclyAccessible 配置[RDS.3] RDS 数据库实例应启用静态加密[RDS.4] 应对 RDS 集群快照和数据库快照进行静态加密[RDS.5] RDS 数据库实例应配置多个可用区[RDS.6] 应为 RDS 数据库实例和集群配置增强监控[RDS.7] RDS 群集应启用删除保护[RDS.8] RDS 数据库实例应启用删除保护[RDS.9] 应启用数据库日志记录[RDS.10] 应为 RDS 实例配置 IAM 身份验证[RDS.11] Amazon RDS 实例应启用自动备份[RDS.12] 应为 RDS 集群配置 IAM 身份验证[RDS.13] 应启用 RDS 自动次要版本升级[RDS.14] Amazon Aurora 集群应启用回溯功能[RDS.15] 应为多个可用区配置 RDS 数据库集群[RDS.16] 应将 RDS 数据库集群配置为将标签复制到快照[RDS.17] 应将 RDS 数据库实例配置为将标签复制到快照[RDS.18] 应在 VPC 中部署 RDS 实例[RDS.19] 应为关键集群事件配置 RDS 事件通知订阅[RDS.20] 应为关键数据库实例事件配置 RDS 事件通知订阅[RDS.21] 应为关键数据库参数组事件配置 RDS 事件通知订阅[RDS.22] 应为关键数据库安全组事件配置 RDS 事件通知订阅[RDS.23] RDS 数据库和集群不应使用数据库引擎的默认端口[RDS.24] RDS 数据库集群应使用自定义管理员用户名[RDS.25] RDS 数据库实例应使用自定义管理员用户名[Redshift.1] Amazon Redshift 集群应禁止公共访问[Redshift.2] 与 Amazon Redshift 集群的连接应在传输过程中进行加密[Redshift.3] Amazon Redshift 集群应启用自动快照[Redshift.4] Amazon Redshift 集群应启用审计日志[Redshift.6] Amazon Redshift 应该启用到主要版本的自动升级[Redshift.7] Amazon Redshift 集群应使用增强型 VPC 路由[Redshift.8] Amazon Redshift 集群不应使用默认的管理员用户名[Redshift.9] Redshift 集群不应使用默认的数据库名称[S3.1] 应启用 S3 阻止公有访问设置[S3.2] S3 存储桶应禁止公开读取访问[S3.3] S3 存储桶应禁止公开写入访问[S3.4] S3 存储桶应启用服务器端加密[S3.5] S3 存储桶应要求请求才能使用安全套接字层[S3.6] 应限制在存储桶策略中授予其他Amazon账户的 Amazon S3 权限[S3.8] 应在存储区级别启用 S3 阻止公有访问设置[S3.9] 应启用 S3 存储桶服务器访问日志记录[S3.10] 启用版本控制的 S3 存储桶应配置生命周期策略[S3.11] S3 存储桶应启用事件通知[S3.12] 不应使用 S3 访问控制列表 (ACL) 来管理用户对存储区的访问[S3.13] S3 存储桶应配置生命周期策略[SageMaker.1] SageMaker 笔记本电脑实例不应直接访问互联网[SecretsManager.1] Secrets Manager 密钥应启用自动轮换[SecretsManager.2] 配置为自动轮换的 Secrets Manager 密钥应成功轮换[SecretsManager.3] 移除未使用的Secrets Manager 密钥[SecretsManager.4] Secrets Manager 密钥应在指定的天数内轮换[SNS.1] SNS 主题应使用以下方法进行静态加密Amazon KMS[SNS.2] 应为发送到主题的通知消息启用传送状态日志功能[SQS.1] 应对 Amazon SQS 队列进行静态加密[SSM.1] EC2 实例应由以下人员管理Amazon Systems Manager[SSM.2] 由 Systems Manager 管理的所有 EC2 实例都应符合补丁要求[SSM.3] 由 Systems Manager 管理的实例的关联合规状态应为COMPLIANT[SSM.4] SSM 文档不应公开[WAF.1] 应启用Amazon WAF经典的全球 Web ACL 日志记录[WAF.2] WAF 区域规则应至少具有一个条件[WAF.3] WAF 区域规则组应至少有一条规则[WAF.4] WAF Classic Regional Web ACL 应至少包含一个规则或规则组[WAF.6] WAF 全局规则应至少具有一个条件[WAF.7] WAF 全局规则组应至少有一条规则[WAF.8] WAF 全球 Web ACL 应至少包含一个规则或规则组
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon 基础安全最佳实践控件

Amazon 基础安全最佳实践标准包含以下控件。对于每个控件,介绍内容包括以下信息。

  • 控件适用的类别。有关类别的说明,请参阅控件类别

  • 严重程度

  • 控件评估的适用资源。我们还列出了控件的依赖资源。对于变更触发的控件,必须将资源记录在中Amazon Config才能使控件生效。有关更多信息,请参阅 Amazon 基础安全最佳实践控件所需的 Amazon Config 资源

  • 必需的 Amazon Config 规则以及由 Amazon Security Hub 设置的任意特定参数值

  • 补救步骤

请注意,控制编号中的空白表示控件尚未发布。如果将某个控件标记为 “已停用”,则 Security Hub 不会生成该控件的查找结果。

按服务分类的控件

Amazon Certificate Manager

Amazon API Gateway

Amazon EC2 Auto Scaling

Amazon CloudFormation

亚马逊 CloudFront

Amazon CloudTrail

Amazon CodeBuild

Amazon Config

Amazon Database Migration Service

Amazon DynamoDB

Amazon EC2

Amazon ECR

Amazon ECS

AEFS zon

亚马逊 EKS

Amazon Elastic Beanstalk

Elastic Load Balancing

Amazon EMR

亚马逊 ES

亚马逊 GuardDuty

Amazon Identity and Access Management

Amazon Kinesis

Amazon Key Management Service

Amazon Lambda

Amazon Network Firewall

亚马逊 OpenSearch 服务

Amazon Relational Database Service

Amazon Redshift

Amazon Simple Storage Service

亚马逊 SageMaker

Amazon Secrets Manager

Amazon Simple Notification Service

Amazon Simple Queue Service

Amazon EC2 Systems Manager

Amazon WAF

[ACM.1] 导入的和 ACM 颁发的证书应在指定的时间段后续订

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::ACM::Certificate

Amazon Config 规则:acm-certificate-expiration-check

时间表类型:Triger

参数:

  • daysToExpiration: 30

此控制检查您账户中的 ACM 证书是否在 30 天内被标记为过期。它会检查导入的证书和 Amazon Certificate Manager 提供的证书。

ACM 可以自动续订使用 DNS 验证的证书。对于使用电子邮件验证的证书,您必须回复域名验证电子邮件。ACM 不会自动续订您导入的证书。您必须手动续订导入的证书。

有关 ACM 证书托管续订的更多信息,请参阅《Amazon Certificate Manager用户指南》中的 ACM 证书托管续订

注意

以下区域不支持此控制。

  • 非洲(开普敦)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

修复

针对您的由 Amazon 颁发的 SSL/TLS 证书,ACM 提供了托管续订。这意味着 ACM 要么自动续订您的证书(如果您使用 DNS 验证),要么在证书过期临近时向您发送电子邮件通知。对于公有和私有 ACM 证书,都提供这些服务。

适用于通过电子邮件验证的域

当证书到期 45 天后,ACM 会向域名所有者发送一封针对每个域名的电子邮件。要验证域名并完成续订,您必须回复电子邮件通知。

有关更多信息,请参阅《Amazon Certificate Manager用户指南》通过电子邮件验证的域名续订

适用于通过 DNS 验证的域

ACM 会自动续订使用 DNS 验证的证书。在证书到期前 60 天,ACM 会验证证书是否可以续订。

如果无法验证域名,则 ACM 会发送一条通知,告知需要手动验证。它会在过期前 45 天、30 天、1 天和 1 天的时候发送这些通知。

有关更多信息,请参阅《Amazon Certificate Manager用户指南》中的 DNS 验证域的续订

[ApiGateway.1] 应该启用 API Gateway REST 和 WebSocket API 日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::ApiGateway::Stage,AWS::ApiGatewayV2::Stage

Amazon Config 规则:api-gw-execution-logging-enabled

时间表类型:Triger

参数:None(无)

此控件检查亚马逊 API Gateway REST 或 WebSocket API 的所有阶段是否都启用了日志记录。如果未为某个阶段的所有方法启用日志记录,或者ERROR既未启用也未启用日志,loggingLevel则控制将失败INFO

API Gateway RES WebSocket T 或 API 阶段应启用相关日志。API Gateway REST 和 WebSocket API 执行日志提供向 API Gateway REST 和 WebSocket API 阶段发出的请求的详细记录。这些阶段包括 API 集成后端响应、Lambda 授权方requestId响应和Amazon集成终端节点。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 欧洲(米兰)

修复

要启用 REST 和 WebSocket API 操作的日志记录,请参阅 AP CloudWatch I Gateway 开发者指南中的使用 API Gateway 控制台设置 API 日志记录。

[ApiGateway.2] API Gateway REST API 阶段应配置为使用 SSL 证书进行后端身份验证

类别:保护 > 数据保护

严重性:

资源类型:AWS::ApiGateway::Stage

Amazon Config 规则:api-gw-ssl-enabled

时间表类型:Triger

参数:None(无)

此控件检查Amazon API Gateway REST API 阶段是否配置了 SSL 证书。后端系统使用这些证书来验证传入请求是否来自 API Gateway。

API Gateway REST API 阶段应配置 SSL 证书,以允许后端系统对来自 API Gateway 的请求进行身份验证。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何生成和配置 API Gateway REST API SSL 证书的详细说明,请参阅 API Gateway 开发者指南中的生成和配置用于后端身份验证的 SSL 证书

[ApiGateway.3] API Gateway REST API 阶段应该启用Amazon X-Ray跟踪

类别:检测 > 检测服务

严重性:

资源类型:AWS::ApiGateway::Stage

Amazon Config 规则:api-gw-xray-enabled

时间表类型:Triger

参数:None(无)

此控件检查您的亚马逊 API Gateway REST API 阶段是否启用了Amazon X-Ray主动跟踪。

X-Ray 主动跟踪可以更快地响应底层基础设施的性能变化。性能变化可能导致 API 的可用性不足。X-Ray 主动跟踪提供流经您的 API Gateway REST API 操作和互联服务的用户请求的实时指标。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何为 API Gateway REST API 操作启用 X-Ray 主动跟踪的详细说明,请参阅Amazon X-Ray开发者指南Amazon X-Ray中的 Amazon API Gateway 主动跟踪支持

[ApiGateway.4] API Gateway 应该与Amazon WAF Web ACL 相关联

类别:保护 > 保护服务

严重性:

资源类型:AWS::ApiGateway::Stage

Amazon Config 规则:api-gw-associated-with-waf

时间表类型:Triger

参数:None(无)

此控件检查 API Gateway 阶段是否使用Amazon WAF Web 访问控制列表 (ACL)。如果Amazon WAF Web ACL 未连接到 REST API Gateway 阶段,则此控制将失败。

Amazon WAF 是一个 Web 应用程序防火墙,可帮助保护 Web 应用程序和 API 免受攻击。通过它,您可以配置 ACL,这是一组规则,基于可自定义的 Web 安全规则以及您定义的条件,允许、阻止或计数 Web 请求。确保您的 API Gateway 阶段与Amazon WAF Web ACL 相关联,以帮助保护其免受恶意攻击。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何使用 API Gateway 控制台将Amazon WAF区域 Web ACL 与现有 API Gatey API 阶段相关联的信息,请参阅 API Gate way 开发人员指南中的使用Amazon WAF来保护您的 API

[ApiGateway.5] API Gateway REST API 缓存数据应该在静态时加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::ApiGateway::Stage

Amazon Config 规则:api-gw-cache-encrypted(由 Security Hub 开发的自定义规则)

时间表类型:Triger

参数:None(无)

此控件检查 API Gateway REST API 阶段中启用缓存的所有方法是否均已加密。如果 API Gateway REST API 阶段中的任何方法配置为缓存且缓存未加密,则控制将失败。

对静态数据进行加密可降低存储在磁盘上的数据被未经身份验证的用户访问的风险Amazon。它添加了另一组访问控制,以限制未经授权的用户访问数据的能力。例如,需要有 API 权限才能解密数据,然后才能读取数据。

API Gateway REST API 缓存应进行静态加密,以增加安全层。

修复

要修复此控制,请将阶段配置为加密缓存数据。

为指定阶段配置 API 缓存
  1. 通过以下网址打开 API Gateway 控制台:https://console.aws.amazon.com/apigateway/

  2. 选择 API。

  3. 选择 Stages (阶段)

  4. 在 API 的 Stages (阶段) 列表中,选择要添加缓存的阶段。

  5. 选择 Settings

  6. 选择 启用 API 缓存

  7. 更新所需的设置,然后选择 “加密缓存数据”。

  8. 选择 Save Changes(保存更改)。

[AutoScaling.1] 与负载均衡器关联的 Auto Scaling 组应使用负载均衡器运行状况检查

类别:识别 > 清单

严重性:

资源类型:AWS::AutoScaling::AutoScalingGroup

Amazon Config 规则:autoscaling-group-elb-healthcheck-required

时间表类型:Triger

参数:None(无)

此控件检查与负载均衡器关联的 Auto Scaling 组是否正在使用 Elastic Load Balancing 运行状况检查。

这可确保该组可以根据负载均衡器提供的其他测试确定实例的运行状况。使用 Elastic Load Balancing 运行状况检查有助于支持使用 EC2 Auto Scaling 组的应用程序的可用性。

修复

要修复此问题,请更新 Auto Scaling 组以使用 Elastic Load Balancing 运行状况检查。

启用Elastic Load Balancing 运行状况检查
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

  3. 选中您的 组对应的复选框。

  4. 选择 Edit(编辑)。

  5. 在运行He alth 检查下,对于 Health 检查类型,选择 ELB

  6. 对于 Health check grace period (运行状况检查宽限期),输入 300

  7. 选择页面底部的更新

有关在 Auto Scaling 组中使用负载均衡器的更多信息,请参阅Amazon Auto Scaling用户指南

[AutoScaling.2] Auto Scaling 组应涵盖多个可用区

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::AutoScaling::AutoScalingGroup

Amazon Config 规则:autoscaling-multiple-az

时间表类型:Triger

参数:None(无)

此控件检查 Auto Scaling 组是否跨越多个可用区。如果 Auto Scaling 组不跨越多个可用区,则控制会失败。

Amazon EC2 Auto Scaling 组可以配置为使用多个可用区。在某些用例中,例如批处理任务或需要将可用区间传输成本保持在最低水平时,首选使用具有单个可用区的 Auto Scaling 组。但是,不跨多个可用区的 Auto Scaling 组不会在另一个可用区启动实例,以补偿配置的单个可用区不可用。

修复

有关如何向现有Auto Scaling 组添加可用区的信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的可用区

[AutoScaling.3] Auto Scaling 组应将 EC2 实例配置为需要实例元数据服务版本 2 (IMDSv2)

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::AutoScaling::LaunchConfiguration

Amazon Config 规则:autoscaling-launchconfig-requires-imdsv2

时间表类型:Triger

参数:None(无)

此控件检查是否在 Amazon EC2 Auto Scaling 组启动的所有实例上启用了 IMDSv2。如果实例元数据服务 (IMDS) 版本未包含在启动配置中,或者如果同时启用了 IMDSv1 和 IMDSv2,则控制将失败。

IMDS 提供有关您的实例的数据,可以用来配置或管理正在运行的实例。

IMDS 版本 2 增加了在 IMDSv1 中没有的新保护措施,以进一步保护您的 EC2 实例。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

Auto Scaling 组一次与一个启动配置关联。在创建启动配置后,您无法修改启动配置。要更改 Auto Scing 组的启动配置,请将现有的启动配置作为启用 IMDSv2 的新启动配置的基础。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的为新实例配置实例元数据选项

[AutoScaling.4] Auto Scaling 组启动配置的元数据响应跳数限制不应大于1

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::AutoScaling::LaunchConfiguration

Amazon Config 规则:autoscaling-launch-config-hop-limit

时间表类型:Triger

参数:None(无)

此控件检查元数据令牌可以传输的网络跳数。如果元数据响应跳数限制大于,则控制失败1

实例元数据服务 (IMDS) 提供有关 Amazon EC2 实例的元数据信息,可用于应用程序配置。将元数据服务的 HTTPPUT 响应限制为 EC2 实例,可保护 IMDS 免遭未经授权的使用。

IP 数据包中的生存时间 (TTL) 字段每跳减少一个。这种减少可以用来确保数据包不会在 EC2 之外传输。IMDSv2 保护可能被错误配置为开放式路由器、第 3 层防火墙、VPN、隧道或 NAT 设备的 EC2 实例,从而防止未经授权的用户检索元数据。使用 IMDSv2 时,包含密钥令牌的PUT响应无法传送到实例外部,因为默认元数据响应跳数限制设置为1。但是,如果该值大于1,则令牌可以离开 EC2 实例。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何修改现有启动配置的元数据响应跳数限制的详细说明,请参阅 Amazon EC2 Linux 实例用户指南中的修改现有实例的实例元数据选项

[AutoScaling.5] 使用 Auto Scaling 组启动配置启动的 Amazon EC2 实例不应具有公有 IP 地址

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::AutoScaling::LaunchConfiguration

Amazon Config 规则:autoscaling-launch-config-public-ip-disabled

时间表类型:Triger

参数:None(无)

此控件检查 Auto Scaling 组的关联启动配置是否为该组的实例分配了公有 IP 地址。如果关联的启动配置分配了公有 IP 地址,则控制将失败。

Auto Scaling 组启动配置中的 Amazon EC2 实例不应具有关联的公有 IP 地址,有限的边缘情况除外。Amazon EC2 实例只能从负载均衡器后面访问,而不是直接暴露在互联网上。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

Auto Scaling 组一次与一个启动配置关联。创建启动配置后,您将无法对其进行修改。要更改 Auto Scaling 组的启动配置,请将现有的启动配置作为新启动配置的基础。然后,更新 Auto Scaling 组以使用新的启动配置,如以下步骤所述。

更改 Auto Scaling 组的启动配置后,将使用新的配置选项启动所有new Scaling 组的启动配置后,将使用新的配置选项启动所有新的实例。现有实例不会受到影响。要更新现有实例,请终止这些实例,以便 Auto Scaling 组替换这些实例,或者根据您的终止策略启用自动扩展,以逐步使用较新实例替换较旧实例。

启用Elastic Load Balancing 运行状况检查
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格的 Auto Scaling 下,选择启动配置

  3. 选择启动配置并依次选择 Actions A ctions,然后依次选择 A 这将设置与原启动配置选项相同的新启动配置,但在名称中会增加“Copy”文本。

  4. 在 “创建启动配置” 页面上,展开 “其他配置-可选” 下的 “高级详细信息”。

  5. IP 地址类型下,选择请勿向任何实例分配公有 IP 地址

  6. 完成后,选择创建启动配置

  7. 在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

  8. 选中 Auto Scaling 组旁边的复选框。

  9. 将在页面底部打开一个拆分窗格,其中显示有关所选组的信息。

  10. 详细信息选项卡上,选择启动配置编辑

  11. 对于启动配置,选择新的启动配置。

  12. 更改完启动配置后,选择 Update

[AutoScaling.6] Auto Scaling 组应在多个可用区中使用多个实例类型

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::AutoScaling::AutoScalingGroup

Amazon Config 规则:autoscaling-multiple-instance-types

时间表类型:Triger

参数:None(无)

该控件检查 Amazon EC2 Auto Scaling 组是否使用多个实例类型。如果 Auto Scaling 组仅定义了一个实例类型,则控制会失败。

您可以跨多个可用区中运行的多个实例类型部署应用程序以提高可用性。Secury Hub 建议使用多个实例类型,这样,如果您选择的可用区中实例容量不足,Auto Scaling 组可以启动另一种实例类型。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关创建具有多个实例类型的 Auto Scaling 组的说明,请参阅 Amazon EC2 AAuto Scaling 用户指南中的具有多个实例类型和购买选项的Auto Scaling

[AutoScaling.9] EC2 Auto Scaling 组应使用 EC2 启动模板

类别:识别 > 资源配置

严重性:

资源类型:AWS::AutoScaling::AutoScalingGroup

Amazon Config 规则:autoscaling-launch-template

时间表类型:Triger

参数:None(无)

此控件会检查 Amazon EC2 Auto Scaling 组是否是从 EC2 启动模板创建的。如果 Amazon EC2 Auto Scaling 组不是使用启动模板创建的,或者没有在混合实例策略中指定启动模板,则此控制将失败。

EC2 Auto Scaling 组可以从 EC2 启动模板或启动配置创建。但是,使用启动模板创建 Auto Scaling 组可确保您可以使用最新的功能和改进。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要使用 EC2 启动模板创建 AAuto Scaling 组,请参阅 A mazon EC2 AAuto Scaling 用户指南中的使用启动模板创建 AAuto Scaling 。有关如何使用启动模板替换启动配置的信息,请参阅 Amazon EC2 Windows 实例用户指南中的将启动配置替换为启动模板

[CloudFormation.1] CloudFormation 堆栈应与Simple Notification Service (SNS) 集成

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::CloudFormation::Stack

Amazon Config 规则:cloudformation-stack-notification-check

时间表类型:Triger

参数:

  • SNSTopic1: 30

  • SNSTopic2: 30

  • SNSTopic3: 30

  • SNSTopic4: 30

  • SNSTopic5: 30

  • (Optional): SNS topic ARN: 30

此控件检查亚马逊简单通知服务通知是否已集成到堆 CloudFormation栈中。如果没有与 CloudFormation 堆栈关联的 SNS 通知,则该堆栈的控制将失败。

为您的 CloudFormation 堆栈配置 SNS 通知有助于立即将堆栈发生的任何事件或更改通知利益相关者。

注意

以下区域不支持此控件:

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Europe (Paris)

  • Europe (Stockholm)

  • 中东(巴林)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何更新 CloudFormation 堆栈的信息,请参阅Amazon CloudFormation用户指南中的Amazon CloudFormation堆栈更新

[CloudFront.1] CloudFront 发行版应配置默认根对象

类别:保护 > 安全访问管理 > 资源不可公开访问

严重性:重大

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-default-root-object-configured

时间表类型:Triger

参数:None(无)

此控件检查是否将 Amazon CloudFront 分发配置为返回作为默认根对象的特定对象。如果 CloudFront 发行版未配置默认根对象,则控制将失败。

用户有时可能会请求分配的根 URL,而不是分配中的对象。发生这种情况时,指定一个默认根对象,可以帮助您避免公开 Web 分配的内容。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关如何为您的分配指定默认根对象的详细说明,请参阅 Amazon CloudFront 开发者指南中的如何指定默认根对象

[CloudFront.2] CloudFront 发行版应启用原始访问身份

类别:保护 > 安全访问管理 > 资源策略配置

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-origin-access-identity-enabled

时间表类型:Triger

参数:None(无)

此控制检查具有 Amazon S3 Origin 类型的亚马逊 CloudFront 发行版是否配置了原始访问身份 (OAI)。如果未配置 OAI,则控制失败。

CloudFront OAI 阻止用户直接访问 S3 存储桶内容。当用户直接访问 S3 存储桶时,他们实际上绕过了 CloudFront 分配和应用于底层 S3 存储桶内容的任何权限。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关详细的补救说明,请参阅《亚马逊 CloudFront 开发者指南》中的创建 CloudFront OAI 并将其添加到您的发行版中。

[CloudFront.3] CloudFront 发行版在传输过程中应要求加密

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-viewer-policy-https

时间表类型:Triger

参数:None(无)

此控件检查亚马逊 CloudFront 发行版是否要求查看者直接使用 HTTPS 或是否使用重定向。如果设置ViewerProtocolPolicy为 fallow-all ordefaultCacheBehavior 或 for,则控制失败cacheBehaviors

HTTPS (TLS) 可用于帮助防止潜在攻击者使用 person-in-the-middle或类似攻击来窃听或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。对传输中的数据进行加密可能会影响性能。您应该使用此功能测试您的应用程序,以了解性能概况和 TLS 的影响。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关详细的补救说明,请参阅查看者之间的通信需要 HTTPS 和 Amazon CloudFront 开发者指南 CloudFront中的内容。

[CloudFront.4] CloudFront 发行版应配置原始故障转移

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-origin-failover-enabled

时间表类型:Triger

参数:None(无)

此控件检查 Amazon CloudFront 分发是否配置了具有两个或更多源的源组。

CloudFront 源故障转移可以提高可用性。如果主源不可用,或者返回特定的 HTTP 响应状态代码,则源故障转移自动将流量重定向到辅助源。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关详细的补救说明,请参阅 Amazon CloudFront 开发者指南中的创建原始组

[CloudFront.5] CloudFront 发行版应启用日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-accesslogs-enabled

时间表类型:Triger

参数:None(无)

此控件检查 CloudFront 发行版上是否启用了服务器访问日志。如果未为分配启用访问日志,则控制将失败。

CloudFront 访问日志提供有关 CloudFront 接收的每个用户请求的详细信息。每个日志都包含诸如收到请求的日期和时间、发出请求的查看者的 IP 地址、请求的来源以及查看器发出的请求的端口号等信息。

这些日志对于安全和访问审计以及取证调查等应用程序很有用。有关如何分析访问日志的更多指导,请参阅 Amazon A thena 用户指南中的查询亚马逊 CloudFront 日志

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关如何为 CloudFront 分配配置访问日志的信息,请参阅 Amazon CloudFront 开发者指南中的配置和使用标准日志(访问日志)

[CloudFront.6] CloudFront 发行版应该已Amazon WAF启用

类别:保护 > 防护服务

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-associated-with-waf

时间表类型:Triger

参数:None(无)

此控件检查 CloudFront 分布是否与任一 Web ACLAmazon WAF 或Amazon WAF v2 Web ACL 相关联。如果分配未与 Web ACL 关联,则控制失败。

Amazon WAF 是一个 Web 应用程序防火墙,可帮助保护 Web 应用程序和 API 免受攻击。通过它,您可以配置一组规则,称为 Web 访问控制列表 (Web ACL),基于可自定义的 Web 安全规则以及您定义的条件,允许、阻止或计数 Web 请求。确保您的 CloudFront 分发与Amazon WAF Web ACL 相关联,以帮助保护其免受恶意攻击。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关如何将 Web ACL 与 CloudFront 分配关联的信息,请参阅亚马逊 CloudFront 开发者指南中的使用Amazon WAF控制对内容的访问权限

[CloudFront.7] CloudFront 发行版应使用自定义 SSL/TLS 证书

类别:保护 > 数据保护 > 加密 data-in-transit

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-custom-ssl-certificate

时间表类型:Triger

参数:None(无)

此控制检查 CloudFront 发行版是否使用 CloudFront 提供的默认 SSL/TLS 证书。如果 CloudFront 发行版使用自定义 SSL/TLS 证书,则此控制通过。如果 CloudFront 分发使用默认 SSL/TLS 证书,则此控制将失败。

自定义 SSL/TLS 允许您的用户使用备用域名访问内容。您可以在Amazon Certificate Manager(推荐)或 IAM 中存储自定义证书。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

要使用自定义 SSL/TLS 证书为您的 CloudFront 分配添加备用域名,请参阅亚马逊 CloudFront 开发者指南中的添加备用域名

[CloudFront.8] CloudFront 发行版应使用 SNI 来提供 HTTPS 请求

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-sni-enabled

时间表类型:Triger

参数:None(无)

此控制检查亚马逊 CloudFront 发行版是否使用自定义 SSL/TLS 证书,并配置为使用 SNI 提供 HTTPS 请求。如果关联了自定义 SSL/TLS 证书,但 SSL/TLS 支持方法是专用 IP 地址,则此控制将失败。

服务器名称指示 (SNI) 是对 TLS 协议的扩展,2010 年以后发布的浏览器和客户端均支持。如果您 CloudFront 将配置为使用 SNI 处理 HTTPS 请求,则将备用域名与每个边缘站点中的 IP 地址 CloudFront 关联。当查看器提交针对内容的 HTTPS 请求时,DNS 将该请求传送到正确边缘站点的 IP 地址。指向您域名的 IP 地址在 SSL/TLS 握手协商期间确定;IP 地址并非专用于您的分发。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

要将您的 CloudFront 分配配置为使用 SNI 提供 HTTPS 请求,请参阅 CloudFront 开发者指南中的使用 SNI 提供 HTTPS 请求(适用于大多数客户端)

[CloudFront.9] CloudFront 发行版应加密流向自定义源的流量

类别:保护 > 数据保护 > 加密 data-in-transit

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-traffic-to-origin-encrypted

时间表类型:Triger

参数:None(无)

此控制检查亚马逊 CloudFront 发行版是否对流向自定义源的流量进行加密。对于其原始协议策略允许 “http-only” 的 CloudFront 分配,此控制会失败。如果发行版的源协议策略为 “match-viewer”,而查看者协议策略为 “allow-all”,则此控制也会失败。

HTTPS (TLS) 可用于帮助防止窃听或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

要更新原始协议策略以要求对您的 CloudFront 连接进行加密,请参阅亚马逊 CloudFront 开发者指南中的要求 HTTPS CloudFront 与您的自定义源之间的通信

[CloudFront.10] CloudFront 发行版不应在边缘站点和自定义源之间使用过时的 SSL 协议

类别:保护 > 数据保护 > 加密 data-in-transit

严重性:

资源类型:AWS::CloudFront::Distribution

Amazon Config 规则:cloudfront-no-deprecated-ssl-protocols

时间表类型:Triger

参数:None(无)

此控制检查亚马逊 CloudFront 发行版是否使用过时的 SSL 协议在 CloudFront 节点和您的自定义源之间进行 HTTPS 通信。如果 CloudFront 分布OriginSslProtocols包含 where includes,CustomOriginConfig则此控制将失效SSLv3

2015 年,互联网工程任务组 (IETF) 正式宣布应弃用 SSL 3.0,因为该协议不够安全。建议您使用 TLSv1.2 或更高版本与您的自定义源进行 HTTPS 通信。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

要更新您的 CloudFront 分配的 Origin SSL 协议,请参阅亚马逊 CloudFront 开发者指南中的要求 HTTPS CloudFront 与您的自定义源之间的通信

[CloudTrail.1] CloudTrail 应启用并配置至少一个包含读写管理事件的多区域跟踪

类别:识别 > 记录

严重性:

资源类型:Amazon账户

Amazon Config 规则:multi-region-cloudtrail-enabled

时间表类型:定期

参数:

  • readWriteType: ALL

此控件检查是否存在至少一条多区域 CloudTrail 跟踪。它还会检查其中至少一条跟踪的ExcludeManagementEventSources参数是否为空。

Amazon CloudTrail 记录您账户的 Amazon API 调用并向您发送日志文件。记录的内容包括以下信息。

  • API 调用方的身份

  • API 调用的时间

  • API 调用方的源 IP 地址

  • 请求参数

  • Amazon 服务返回的响应元素

CloudTrail 提供账户的Amazon API 调用历史记录,包括通过、Amazon SDKAmazon Web Services Management Console、命令行工具进行的 API 调用。历史记录还包括来自更高级别 Amazon 服务(如 Amazon CloudFormation)的 API 调用。

生成的Amazon API 调用历史记录 CloudTrail 支持安全分析、资源变更跟踪和合规性审计。多区域跟踪还提供以下好处。

  • 多区域跟踪有助于检测在其他本不应使用的区域中发生的意外活动。

  • 多区域跟踪可确保默认情况下为跟踪启用全局服务事件日志记录。全局服务事件日志记录将记录 Amazon 全局服务生成的事件。

  • 对于多区域跟踪,所有读取和写入操作的管理事件可确保 CloudTrail 记录 Amazon 账户所有资源上的管理操作。

默认情况下,使用创建的 CloudTrail 跟踪Amazon Web Services Management Console是多区域跟踪。

修复

要修复此问题,请在中创建新的多区域跟踪 CloudTrail。

要在中创建新路线 CloudTrail
  1. 通过 https://console.aws.amazon.com/cloudtrail/ 打开 CloudTrail 控制台。

  2. 如果您 CloudTrail 之前没有使用过,请选择 “立即开始”。

  3. 选择 Trails (跟踪),然后选择 Create trail (创建跟踪)

  4. 输入跟踪的名称。

  5. Storage location (存储位置) 下,执行下列操作之一:

    1. 要为 CloudTrail 日志Create a new S3 存储桶,请选择 Create a new S 3,然后输入new S3 存储桶的名称。

    2. 要使用现有 S3 存储桶,对于 Create a new S3 bucket (创建新 S3 存储桶),请选择 No (否),然后选择要使用的 S3 存储桶。

  6. “其他设置” 下,选择 “高级”。在 “启用日志文件验证” 中,选择 “启用”。

  7. 选择 Create(创建)

要在中更新现有跟踪 CloudTrail
  1. 通过 https://console.aws.amazon.com/cloudtrail/ 打开 CloudTrail 控制台。

  2. 选择 Trails (跟踪)

  3. Name (名称) 列中选择跟踪的名称。

  4. 对于 Management events(管理事件),选择 Edit(编辑)。

  5. 对于读取/写入事件,请选择管理事件

  6. API 活动下,选择读取写入

[CloudTrail.2] CloudTrail 应启用静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::CloudTrail::Trail

Amazon Config 规则:cloud-trail-encryption-enabled

时间表类型:定期

参数:None(无)

此控件检查 CloudTrail 是否配置为使用服务器端加密 (SSE)Amazon KMS key 加密。如果定义了 KmsKeyId,则检查通过。

为了给敏感 CloudTrail 日志文件增加安全层,您应该对日志文件使用带有Amazon KMS —managed keys (SSE-KMS) 的服务器端加密,以便进行静态加密。 CloudTrail 请注意,预设情况下,提交 CloudTrail 到您存储桶的日志文件是用 Simple Storage Service(Amazon S3)托管加密密钥 (SSE-S3) 通过 Amazon 服务器端加密进行加密的。

修复

要修复此问题,请更新您的跟踪以启用日志文件的 SSE-KMS 加密。

启用 CloudTrail 日志加密
  1. 通过 https://console.aws.amazon.com/cloudtrail/ 打开 CloudTrail 控制台。

  2. 选择 Trails (跟踪)

  3. 选择要更新的跟踪。

  4. 在 “常规详细信息” 下,选择 “编辑”

  5. 对于日志文件 SSE-KMS 加密,选择启用

  6. 对于 Create a new KMS key (创建新的 KMS 密钥),执行以下操作之一:

    • 要创建密钥,请选择 “建”。然后在Amazon KMS别名中输入密钥的别名。密钥是在与 S3 存储桶相同的区域中创建的。

    • 要使用现有密钥,请选择现有密钥,然后从Amazon KMS别名中选择密钥。

      Amazon KMS 密钥和 S3 存储桶必须位于同一区域。

  7. 选择 Save(保存)。

    您可能需要修改的策略 CloudTrail 才能成功与您的 KMS 密钥交互。有关更多信息,请参阅《Amazon CloudTrail用户指南》中的使用 Amazon KMS—managed 密钥 (SSE-KMS) 加密 CloudTrail 日志文件

[CloudTrail.4] 确保启用 CloudTrail 日志文件验证

类别:数据保护 > 数据完整性

严重性:

资源类型:AWS::CloudTrail::Trail

Amazon Config 规则:cloud-trail-log-file-validation-enabled

时间表类型:定期

参数:None(无)

此控件检查 CloudTrail跟踪上是否启用了日志文件完整性验证。

CloudTrail 日志文件验证会创建一个数字签名的摘要文件,其中包含 CloudTrail 写入 Amazon S3 的每个日志的哈希值。您可以使用这些摘要文件确定日志文件是否已更改、删除或 CloudTrail 未更改。

Security Hub 建议您在所有跟踪上启用文件验证。日志文件验证提供额外的 CloudTrail 日志完整性检查。

有关更多信息,请参阅《Amazon CloudTrail用户指南》中的启用验证和验证文件

修复

要修复此问题,请更新您的 CloudTrail 跟踪以启用日志文件验证。

启用 CloudTrail 日志文件验证
  1. 通过 https://console.aws.amazon.com/cloudtrail/ 打开 CloudTrail 控制台。

  2. 选择 Trails (跟踪)

  3. 在 “名称” 下,选择要编辑的跟踪的名称。

  4. 在 “常规详细信息” 下,选择 “编辑”

  5. “其他设置” 下,为 “日志文件验证” 选择 “启用”。

  6. 选择 Save changes(保存更改)。

有关更多信息,请参阅《Amazon CloudTrail用户指南》中的验证 CloudTrail 日志文件完整性

[CloudTrail.5] 确保 CloudTrail 跟踪与亚马逊 CloudWatch 日志集成

类别:识别 > 记录

严重性:

资源类型:AWS::CloudTrail::Trail

Amazon Config 规则:cloud-trail-cloud-watch-logs-enabled

时间表类型:定期

参数:None(无)

此控件检查 CloudTrail 跟踪是否配置为向日志发送 CloudWatch 日志。如果跟踪的CloudWatchLogsLogGroupArn属性为空,则控制失败。

CloudTrail 记录在给定账户中进行的Amazon API 调用。记录的信息包含:

  • API 调用方的身份

  • API 调用的时间

  • API 调用方的源 IP 地址

  • 请求参数

  • Amazon服务返回的响应元素

CloudTrail 使用 Amazon S3 进行日志文件存储和传输。您可以在指定的 S3 存储桶中捕获 CloudTrail 日志以进行长期分析。要执行实时分析,您可以配置为将日志发送 CloudTrail 到 CloudWatch 日志。

对于在账户的所有区域中启用的跟踪, CloudTrail 将来自所有这些区域的日志文件发送到 CloudWatch 日志日志组。

Security Hub 建议您将 CloudTrail 日志发送到 CloudWatch 日志。请注意,此建议旨在确保捕获、监控账户活动并对账户活动进行适当警报。您可以使用 CloudWatch 日志在您的Amazon服务中进行设置。本建议不排除使用不同的解决方案。

将 CloudTrail 日志发送到 CloudWatch 日志有助于根据用户、API、资源和 IP 地址记录实时和历史活动。您可以使用这种方法为异常或敏感账户活动建立警报和通知。

修复

您可以使用控制台启用与 CloudWatch 日志的 CloudTrail 集成。

启用与 CloudWatch 日志的 CloudTrail 集成
  1. 通过 https://console.aws.amazon.com/cloudtrail/ 打开 CloudTrail 控制台。

  2. 选择 Trails (跟踪)

  3. 选择没有CloudWatch 日志日志组值的跟踪。

  4. CloudWatch Logs (日志) 下,选择 Edit (编辑)

  5. 选择 Enabled (已启用)

  6. 对于 Log 组,请执行以下操作之一:

    • 要使用默认日志组,请保持名称不变。

    • 要使用现有的日志组,请选择 Exi st ing(现有),然后输入要使用的日志组的名称。

    • 要创建新的日志组,请选择 New(新建),然后输入要创建的日志组的名称。

  7. 对于 IAM role (IAM 角色),执行以下操作之一:

    • 要使用现有角色,请选择 Exi st ing(现有),然后从下拉列表中选择角色。

    • 要创建新角色,请选择建,然后输入要创建的角色的名称。将为新角色分配一个策略以授予所需的权限。

    要查看授予角色的权限,请展开策略文档

  8. 选择 Save changes(保存更改)。

有关更多信息,请参阅Amazon CloudTrail用户指南》中的使用控制台配置 CloudWatch 日志监控

[CodeBuild.1] CodeBuild GitHub 或 Bitbucket 源存储库 URL 应使用 OAuth

类别:保护 > 安全开发

严重性:重大

资源类型:AWS::CodeBuild::Project

Amazon Config 规则:codebuild-project-source-repo-url-check

时间表类型:Triger

参数:None(无)

此控件检查 GitHub 或 Bitbucket 源存储库 URL 是否包含个人访问令牌或用户名和密码。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

身份验证凭证绝不应以明文方式存储或传输,也不应显示在存储库 URL 中。您应该使用 OAuth 来授予访问或 Bitbucket 存储库的授权,而不是个人访问令牌 GitHub 或用户名和密码。使用个人访问令牌或用户名和密码可能会导致您的凭证遭受意外的数据暴露和未经授权的访问。

修复

您可以更新您的 CodeBuild 项目以使用 OAuth。

从 CodeBuild 项目源中删除基本身份验证/(GitHub) 个人访问令牌
  1. 通过 https://console.aws.amazon.com/codebuild/ 打开 CodeBuild 控制台。

  2. 选择包含个人访问令牌或用户名和密码的构建项目。

  3. Edit (编辑) 中,选择 Source (源)

  4. 选择断开与 GitHub /Bitbucket 的连接。

  5. 选择 “使用 OAuth Connect”,然后选择 “Connect 到 GitHub/Bitbucket”。

  6. 出现提示时,选择 authorize as appropriate (相应授权)

  7. 根据需要,重新配置存储库 URL 和其他配置设置。

  8. 选择 Update source (更新源)

有关更多信息,请参阅《Amazon CodeBuild用户指南》基于案例的CodeBuild 使用示例

[CodeBuild.2] CodeBuild 项目环境变量不应包含明文证书

类别:保护 > 安全开发

严重性:重大

资源类型:AWS::CodeBuild::Project

Amazon Config 规则:codebuild-project-envvar-awscred-check

时间表类型:Triger

参数:None(无)

该控制检查项目是否包含环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

身份验证凭证 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 决不能以明文方式存储,因为这可能会导致意外的数据暴露和未经授权的访问。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要修复此问题,请更新您的 CodeBuild 项目以删除环境变量。

从 CodeBuild 项目中移除环境变量
  1. 通过 https://console.aws.amazon.com/codebuild/ 打开 CodeBuild 控制台。

  2. 展开 Build (构建)

  3. 选择 Build project (构建项目),然后选择包含明文凭证的构建项目。

  4. Edit (编辑) 中,选择 Environment (环境)

  5. 展开 Additional configuration (其他配置)

  6. 选择环境变量旁边的 Remove (删除)

  7. 选择 Update environment (更新环境)

将敏感值存储在 Amazon EC2 Systems Manager 参数存储库中,然后从您的构建规范中检索它们
  1. 通过 https://console.aws.amazon.com/codebuild/ 打开 CodeBuild 控制台。

  2. 展开 Build (构建)

  3. 选择 Build project (构建项目),然后选择包含明文凭证的构建项目。

  4. Edit (编辑) 中,选择 Environment (环境)

  5. 展开 Additional configuration (其他配置),然后滚动到 Environment variables (环境变量)

  6. 按照本教程创建包含您的敏感数据的Systems Manager 参数。

  7. 在创建参数后,复制参数名称。

  8. 回到 CodeBuild 控制台,选择创建环境变量

  9. 输入在构建规范中显示的变量名称。

  10. 对于 Value (值),粘贴参数名称。

  11. 对于 Type (类型),选择 Parameter (参数)

  12. 要删除包含明文凭证的不合规环境变量,请选择 Remove (删除)

  13. 选择 Update environment (更新环境)

有关更多信息,请参阅《Amazon CodeBuild用户指南》中的构建环境中的环境变量

[CodeBuild.4] CodeBuild 项目环境应该有日志配置

类别:识别 > 记录

严重性:

资源类型:AWS::CodeBuild::Project

Amazon Config 规则:codebuild-project-logging-enabled

时间表类型:Triger

参数:None(无)

此控件检查 CodeBuild 项目环境是否至少有一个日志选项,即 S3 或启用 CloudWatch 日志。如果 CodeBuild 项目环境没有启用至少一个日志选项,则此控制将失败。

从安全角度来看,日志记录是一项重要功能,可在future 发生任何安全事件时进行取证。将 CodeBuild 项目中的异常与威胁检测相关联可以增强人们对这些威胁检测的准确性的信心。

修复

有关如何配置 CodeBuild 项目日志设置的更多信息,请参阅 CodeBuild 用户指南中的创建构建项目(控制台)

[CodeBuild.5] CodeBuild 项目环境不应启用特权模式

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::CodeBuild::Project

Amazon Config 规则:codebuild-project-environment-privileged-check

时间表类型:Triger

参数:None(无)

此控件检查Amazon CodeBuild项目环境是否启用了特权模式。当Amazon CodeBuild项目环境启用特权模式时,此控制将失效。

默认情况下,Docker 容器不允许访问任何设备。特权模式将授予构建项目的 Docker 容器访问所有设备的权限。设置值privilegedModetrue允许在 Docker 容器内运行 Docker 守护程序。Docker 守护程序监听 Docker API 请求并管理 Docker 对象,例如镜像、容器、网络和卷。仅在构建项目用于构建 Docker 映像时,此参数才应设置为 true。否则,应禁用此设置,以防止意外访问 Docker API 以及容器的底层硬件,因为意外访问privilegedMode可能会有恶意篡改或删除关键资源的风险。

修复

有关如何配置 CodeBuild 项目环境设置的更多信息,请参阅 CodeBuild 用户指南中的创建构建项目(控制台)

[Config.1] 应启用 Amazon Config

类别:识别 > 清单

严重性:

资源类型:Amazon账户

Amazon Config规则:None(无)

时间表类型:定期

参数:None(无)

该控制检查是否已在账户中为本地区域启用了 Amazon Config,并记录所有资源。

Amazon Config 服务对您账户中支持的 Amazon 资源执行配置管理,并向您提供日志文件。记录的信息包括配置项(Amazon 资源)、配置项之间的关系以及资源之间的任何配置更改。

Security Hub 建议您在所有区域Amazon Config中启用。Amazon Config 捕获的 Amazon 配置项历史记录可用于安全分析、资源更改跟踪和合规性审计。

注意

Config.1 要求Amazon Config在您使用Security Hub 的所有区域中启用该功能。

由于 Security Hub 是一项区域服务,因此对此控制执行的检查仅检查该账户的当前区域。它不会检查所有区域。

要允许针对每个区域中的全局资源进行安全检查,您还必须记录全局资源。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

您也可以考虑在未启用全球资源记录的区域禁用 IAM.1、IAM.2、IAM.3、IAM.5、IAM.8 和 IAM.21。由于 IAM 是一项全球服务,因此 IAM 资源将仅记录在启用全球资源记录的区域中。

要了解更多信息,请参阅Amazon Config开发者指南Amazon Config中的入门指南

修复

启用后Amazon Config,将其配置为记录所有资源。

配置 Amazon Config 设置
  1. 通过以下网址打开 Amazon Config 控制台:https://console.aws.amazon.com/config/

  2. 选择要在其中配置 Amazon Config 的区域。

  3. 如果您Amazon Config之前没有使用过,请参阅Amazon Config开发者指南中的入门

  4. 从菜单导航到 “设置” 页面,然后执行以下操作:

    • 选择 Edit(编辑)。

    • 要记录的资源类型下,选择记录该区域支持的所有资源包括全球资源(例如Amazon IAM 资源)

    • 在 “数据保留期” 下,选择Amazon Config数据的默认保留期,或指定自定义保留期。

    • 在 “Amazon Config角色” 下,选择 “创建Amazon Config服务相关角色” 或 “从账户中选择一个角色”,然后选择要使用的角色。

    • Amazon S3 bucket (Amazon S3 存储桶) 下面,指定要使用的存储桶,或者创建存储桶并包括前缀(可选)。

    • Amazon SNS 主题下,从您的账户中选择一个 Amazon SNS 主题或创建一个 Amazon SNS 主题。有关 Amazon SNS 的更多信息,请参阅 Amaz on Simple Notification Service 入门指南

  5. 选择 Save(保存)。

有关使用 fromAmazon Config 的更多信息Amazon CLI,请参阅Amazon Config开发者指南Amazon Config中的开启

您还可以使用 Amazon CloudFormation 模板自动执行这一过程。有关更多信息,请参阅Amazon CloudFormation用户指南中的Amazon CloudFormation StackSets 示例模板

[DMS.1]Amazon Database Migration Service 复制实例不应公开

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::DMS::ReplicationInstance

Amazon Config 规则:dms-replication-not-public

时间表类型:定期

参数:None(无)

此控件检查Amazon DMS复制实例是否为公共实例。为此,它会检查该PubliclyAccessible字段的值。

私有复制实例有一个私有 IP 地址,您无法在复制网络之外访问该地址。当源数据库和目标数据库位于同一个网络中时,复制实例应具有私有 IP 地址。网络还必须使用 VPN 或 VPC 对等连接到复制实例的 VPC。Amazon Direct Connect要了解有关公有和私有复制实例的更多信息,请参阅Amazon Database Migration Service用户指南中的公有和私有复制实例

您还应确保仅限授权用户访问您的Amazon DMS实例配置。为此,请限制用户修改Amazon DMS设置和资源的 IAM 权限。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

请注意,一旦创建了复制实例,就无法更改公共访问设置。必须将其删除并重新创建。

将Amazon DMS复制实例设置配置为阻止公有访问
  1. 打开 Amazon Database Migration Service 控制台 (https://console.aws.amazon.com/dms/)。

  2. 导航到复制实例,然后删除公共实例。选择实例,选择操作,然后选择删除

  3. 选择创建复制实例。提供配置详情。

  4. 要禁用公共访问,请确保未选择 “可公开访问”。

  5. 选择 Create(创建)

有关更多信息,请参阅Amazon Database Migration Service用户指南中有关创建复制实例的部分。

[DynamoDB.1] DynamoDB 表应根据需求自动扩展容量

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::DynamoDB::Table

Amazon Config 规则:dynamodb-autoscaling-enabled

时间表类型:定期

参数:None(无)

此控件检查 Amazon DynamoDB 表是否可以根据需要扩展其读取和写入容量。如果表使用按需容量模式或配置了 Auto Scaling 的配置模式,则此控制将通过。按需扩展容量可避免限制异常,这有助于保持应用程序的可用性。

按需容量模式下的 DynamoDB 表仅受 DynamoDB 吞吐量默认表配额限制。要提高这些配额,您可以通过提交支持请求Amazon Web Services Support

具有自动扩展功能的预置模式下的 DynamoDB 表可根据流量模式动态调整预置的吞吐容量。有关 DynamoDB 请求限制的更多信息,请参阅 Amazon DynamoDB 开发人员指南中的请求限制和突增容量

注意

Amazon GovCloud (美国东部)或Amazon GovCloud (美国西部)不支持此控件。

修复

有关在容量模式下对现有表启用 DynamoDB 自动扩展的详细说明,请参阅 Amazon DynamoDB 开发人员指南中的对现有表启用 DynamoDB auto 扩展。

[DynamoDB.2] DynamoDB 表应启用 point-in-time 恢复功能

类别:恢复 > 弹性 > 启用备份

严重性:

资源类型:AWS::DynamoDB::Table

Amazon Config 规则:dynamodb-pitr-enabled

时间表类型:Triger

参数:None(无)

此控件检查是否为 Amazon DynamoDB 表启用了 point-in-time 恢复 (PITR)。

备份可帮助您更快地从安全事件中恢复。它们还可以增强系统的弹性。DynamoDB point-in-time 恢复可自动备份 DynamoDB 表。它减少了从意外删除或写入操作中恢复的时间。启用了 PITR 的 DynamoDB 表可以还原到最近 35 天中的任何时间点。

修复

要修复此问题,请向您的 DynamoDB 表添加 point-in-time 恢复功能。

如欲为现有表启用 DynamoDB point-in-time 恢复
  1. https://console.aws.amazon.com/dynamodb/ 打开 DynamoDB 控制台。

  2. 选择要处理的表,然后选择 Backeps(备份)。

  3. 在 “Point-in-time 恢复” 部分的 “状态” 下,选择 “启用”。

  4. 再次选择 “启用” 以确认更改。

[DynamoDB.3] DynamoDB Acelerator (DAX) 集群应进行静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::DAX::Cluster

Amazon Config 规则:dax-encryption-enabled

时间表类型:定期

参数:None(无)

此控件检查 DAX 集群是否进行静态加密。

对静态数据进行加密可降低存储在磁盘上的数据被未经身份验证的用户访问的风险Amazon。加密增加了另一组访问控制,以限制未经授权的用户访问数据的能力。例如,需要有 API 权限才能解密数据,然后才能读取数据。

修复

集群创建后,不能启用或禁用静态加密。必须重新创建集群,才能启用静态加密。有关如何创建启用静态加密的 DAX 集群的详细说明,请参阅使用 Amazon DynamoDB 开发人员指南Amazon Web Services Management Console中的启用静态加密

[EC2.1] Amazon EBS 快照不应公开,这取决于任何人都可恢复的可用性

类别:保护 > 安全网络配置

严重性:重大

资源类型:Amazon账户

Amazon Config 规则:ebs-snapshot-public-restorable-check

时间表类型:定期

参数:None(无)

此控件检查亚马逊弹性区块存储快照是否未公开。如果任何人都可以恢复 Amazon EBS 快照,则控制失败。

EBS 快照用于在特定时间点将 EBS 卷上的数据备份到 Amazon S3。您可以使用快照还原 EBS 卷的先前状态。与公众共享快照几乎是不允许的。通常,公开共享快照的决定要么是决策错误,要么是没有完全理解其含义。此检查有助于确保所有此类共享都是完全经过规划并且是有意进行的。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

要修复此问题,请更新您的 EBS 快照以将其设为私有而不是公开。

将公有 EBS 快照变为私有快照
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格的 E lastic Block Store 下,选择快照菜单,然后选择您的公有快照。

  3. Actions (操作) 中,选择 Modify permissions (修改权限)

  4. 选择 Private (私有)

  5. (可选)添加要与之共享快照的授权账户的账号,然后选择添加权限。Amazon

  6. 选择 Save(保存)。

[EC2.2] VPC 默认安全组不应允许入站和出站流量

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::EC2::SecurityGroup

Amazon Config 规则:vpc-default-security-group-closed

时间表类型:Triger

参数:None(无)

该控制检查 VPC 的默认安全组是否不允许入站或出站流量。

默认安全组的规则允许来自分配给相同安全组的网络接口(及其关联实例)的所有出站和入站流量。

我们不建议使用默认安全组。由于无法删除默认安全组,因此您应更改默认安全组规则设置以限制入站和出站流量。如果意外为 EC2 实例等资源配置了默认安全组,这可以防止意外的流量。

修复

要修复此问题,请创建新的安全组并将这些安全组分配给您的资源。为防止使用默认安全组,请删除其入站和出站规则。

创建新的安全组并将其分配给您的资源
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Security Groups(安全组)。查看默认安全组详细信息以了解分配给它们的资源。

  3. 为资源创建一组最小权限安全组。有关如何创建安全组的详细信息,请参阅 Amazon VPC 用户指南中的创建安全组

  4. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  5. 在 Amazon EC2 控制台上,将使用默认安全组的资源的安全组更改为您创建的最低权限安全组。请参阅 Amazon VPC 用户指南中的更改实例的安全组

将新安全组分配给资源后,从默认安全组中移除入站和出站规则。这样可以确保不使用默认安全组。

从默认安全组中删除规则
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Security Groups(安全组)。

  3. 选择默认安全组并选择入站规则选项卡。选择 Edit inbound rules(编辑入站规则)。然后删除所有入站规则。选择 Save rules(保存规则)。

  4. 对每个默认安全组重复上一步骤。

  5. 选择默认安全组并选择出站规则选项卡。选择编辑出站规则。然后删除所有出站规则。选择 Save rules(保存规则)。

  6. 对每个默认安全组重复上一步骤。

有关更多信息,请参阅 Amazon VPC 用户指南中的使用安全组

[EC2.3] 附加的 EBS 卷应在静态时加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::EC2::Volume

Amazon Config 规则:encrypted-volumes

时间表类型:Triger

参数:None(无)

该控制检查处于连接状态的 EBS 卷是否已加密。要通过此检查,EBS 卷必须处于使用中并加密。如果 EBS 卷未挂载,则不需要接受此检查。

为了增加 EBS 卷中敏感数据的安全性,您应该启用静态 EBS 加密。Amazon EBS 加密提供了直接用于 EBS 资源的加密解决方案,无需您构建、维护和保护自己的密钥管理基础设施。它在创建加密卷和快照时使用 KMS 密钥。

要了解有关 Amazon EBS 加密的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的 Amazon EBS 加密。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

没有直接对现有未加密卷或快照进行加密的方法。您只能在新的卷或快照创建时对其进行加密。

如果您启用了默认加密,Amazon EBS 使用您用于 Amazon EBS 加密的默认密钥对生成的新卷或快照实施加密。即使您未启用默认加密,也可以在创建单个卷或快照时启用加密。在这两种情况下,您都可以覆盖用于 Amazon EBS 加密的默认密钥并选择对称的客户托管密钥。

有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的创建 Amazon EBS 卷和复制 Amazon EBS 快照

[EC2.4] 应在指定时间段后删除已停止的 EC2 实例

类别:识别 > 清单

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-stopped-instance

时间表类型:定期

参数:

  • allowedDays: 30

此控件检查任何 EC2 实例的停止时间是否超过了允许的天数。如果 EC2 实例的停止时间超过允许的最大时间段(默认为 30 天),则无法通过此项检查。

失败的发现表明 EC2 实例在很长一段时间内没有运行。这会带来安全风险,因为 EC2 实例没有得到积极维护(分析、修补、更新)。如果稍后启动,则缺乏适当的维护可能会导致您的Amazon环境出现意外问题。要在一段时间内安全地将 EC2 实例保持在非运行状态,请定期启动它进行维护,然后在维护后将其停止。理想情况下,这是一个自动化过程。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

您可以使用控制台或命令行终止 EC2 实例。

在终止 EC2 实例之前,请确认您不会丢失任何数据:

  • 检查您的亚马逊 EBS 卷是否在终止时被删除。

  • 从 EC2 实例存储卷复制所需数据到 Amazon EBS 或 Amazon S3。

终止 EC2 实例(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中的 Instances 下,选择 Instances

  3. 选择实例,然后选择操作实例状态终止

  4. 当系统提示您确认时,选择 Yes, Terminate(是,终止)。

终止 EC2 实例(Amazon CLI适用于 Windows 的工具 PowerShell)

使用以下命令之一。有关命令行接口的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的访问 A mazon EC2。

要了解有关终止实例的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的终止实例

[EC2.6] 应在所有 VPC 中启用 VPC 流量日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::EC2::VPC

Amazon Config 规则:vpc-flow-logs-enabled

时间表类型:定期

参数:

  • trafficType: REJECT

此控件检查是否找到并启用了 VPC 的 Amazon VPC 流日志。流量类型设置为Reject

使用 VPC 流日志功能,您可以捕获有关传入和传出您的 VPC 中网络接口的 IP 地址流量的信息。创建流日志后,您可以在 CloudWatch 日志中查看和检索其数据。为了降低成本,您还可以将流日志发送到 Amazon S3。

Security Hub 建议您为 VPC 的数据包拒绝启用流量记录。流日志提供对通过 VPC 的网络流量的可见性,并可以在安全工作流程中检测异常流量或提供见解。

默认情况下,记录包括 IP 地址流的不同组件的值,包括源、目标和协议。有关日志字段的更多信息和描述,请参阅 Amazon VPC 用户指南中的 VPC 流日志

修复

要修复此问题,请启用 VPC 流量记录。

启用 VPC 流日志记录
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在 “虚拟私有云” 下,选择您的 VPC

  3. 选择要更新的 VPC。

  4. 在页面底部,选择 Flow Logs(流日志)。

  5. 选择 Create flow log(创建流日志)

  6. 对于 Filter (筛选条件),选择 Reject (拒绝)

  7. 对于目标日志组,请选择要使用的日志组。

  8. 对于 IAM 角色,选择要使用的 IAM 角色。

  9. 选择 Create(创建)

[EC2.7] 应启用 EBS 默认加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:Amazon账户

Amazon Config 规则:ec2-ebs-encryption-by-default

时间表类型:定期

参数:None(无)

此控制检查是否为 Amazon Elastic Block Store (Amazon EBS) 默认启用账户级加密。如果未启用账户级加密,则控制将失败。

为您的账户启用加密后,Amazon EBS 卷和快照副本将进行静态加密。这为您的数据增加了一层保护。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的默认加密

请注意,以下实例类型不支持加密:R1、C1 和 M1。

修复

您可以使用 Amazon EC2 控制台为 Amazon EBS 卷启用默认加密。

针对某个区域配置用于 Amazon EBS 加密的默认加密
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从导航窗格中,选择 EC2 控制面板

  3. 在页面的右上角,选择账户属性,然后选择 EBS 加密

  4. 选择管理

  5. 选择 Enable (启用)。您可以将Amazon 托管式密钥具有您自己alias/aws/ebs创建的别名的保留为默认加密密钥,或者选择对称的客户托管密钥。

  6. 选择更新 EBS 加密

[EC2.8] EC2 实例应使用 imdsV2

类别:保护 > 网络安全

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-imdsv2-check

时间表类型:Triger

参数:None(无)

此控件检查您的 EC2 实例元数据版本是否配置有实例元数据服务版本 2 (IMDSv2)。如果 IMDSv2 设置HttpTokens为 “必需”,则控制通过。如果设置为HttpTokens,则控制失败optional

您可以使用实例元数据配置或管理正在运行的实例。IMDS 提供对临时、经常轮换的证书的访问权限。这些证书无需手动或以编程方式对实例进行硬编码或分发敏感证书。IMDS 在本地连接到每个 EC2 实例。它在特殊的 “本地链接” IP 地址 169.254.169.254 上运行。只有在实例上运行的软件才能访问此 IP 地址。

IMDS 版本 2 为以下类型的漏洞添加了新的保护措施。这些漏洞可以用来尝试访问 IMDS。

  • 打开网站应用程序防火墙

  • 打开反向代理

  • 服务器端请求伪造 (SSRF) 漏洞

  • 打开第 3 层防火墙和网络地址转换 (NAT)

Security Hub 建议您使用 IMDSv2 配置 EC2 实例。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

要修复未配置 IMDSv2 的 EC2 实例,您可以要求使用 IMDSv2。

要要求在现有实例上使用 IMDSv2,请在请求实例元数据时修改 Amazon EC2 元数据选项。按《适用于 Linux 实例的 Amazon EC2 EC2 用户指南》中的为现有实例配置实例元数据选项中的说明操作。

要要求在新实例启动时使用 IMDSv2,请按照 Amazon EC2 Linux 实例用户指南中为新实例配置实例元数据选项中的说明进行操作。

从控制台使用 IMDSv2 配置您的新 EC2 实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择启动实例,然后选择启动实例

  3. 在 “高级详细信息” 下,对于元数据版本,选择 “仅限 V2”(需要令牌)

  4. 在摘要面板中,查看您的更改,然后选择启动实例

如果您的软件使用 IMDSv1,则可以重新配置软件,以使用 IMDSv2。有关详细信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的过渡到使用实例元数据服务版本 2。

[EC2.9] EC2 实例不应有公有 IP 地址

类别:保护 > 安全网络配置 > 公有 IP 地址

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-instance-no-public-ip

时间表类型:Triger

参数:None(无)

此控件检查 EC2 实例是否具有公有 IP 地址。如果 EC2 实例配置项目中存在该publicIp字段,则控制失败。此控制仅适用于 IPv4 地址。

公有 IPv4 地址是指可通过 Internet 访问的 IP 地址。如果您使用公有 IP 地址启动您的实例,则可从 Internet 访问您的 EC2 实例。私有 IPv4 地址是指无法通过 Internet 访问的 IP 地址。您可以使用私有 IPv4 地址,在同一 VPC 中或连接的私有网络中的 EC2 实例之间进行通信。

IPv6 地址是全球唯一的,因此可通过 Internet 访问。但是,默认情况下,所有子网的 IPv6 寻址属性都设置为 false。有关 IPv6 的更多信息,请参阅 Amazon VPC 用户指南中的您的 VPC 中的 IP 寻址

如果您有合法的用例来维护具有公有 IP 地址的 EC2 实例,则可以隐藏此控制中的发现。有关前端架构选项的更多信息,请参阅架Amazon构博客或 Th is Is My Architecture 系列

修复

使用非默认 VPC,这样默认情况下不会为实例分配公有 IP 地址。

在默认 VPC 中启动 EC2 实例时,系统会为它分配公有 IP 地址。当您在非默认 VPC 中启动 EC2 实例时,子网配置决定它是否接收公有 IP 地址。子网有一个用于确定子网中的新 EC2 实例是否从公有 IPv4 地址池接收公有 IP 地址的公有 IP 地址的属性。

您不能从 EC2 实例手动关联公有 IP 地址。要控制您的 EC2 实例是否接收公有 IP 地址,请执行以下操作之一:

有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的公有 IPv4 地址和外部 DNS 主机名

如果您的 EC2 实例与弹性 IP 地址,则可从 Internet 访问您的 EC2 实例。您可以随时取消弹性 IP 地址与实例或网络接口的关联。

撤销弹性 IP 地址的关联
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Elastic IPs

  3. 选择要取消关联的弹性 IP 地址。

  4. 操作中,选择取消关联弹性 IP 地址

  5. 选择取消关联

[EC2.10] 应将 Amazon EC2 配置为使用为Amazon EC2 服务创建的 VPC 终端节点

类别:保护-安全网络配置 > API 私有访问

严重性:

资源类型:AWS::EC2::VPC

Amazon Config 规则:service-vpc-endpoint-enabled

时间表类型:定期

参数:

  • serviceName: ec2

此控件检查是否为每个 VPC 创建了 Amazon EC2 的服务终端节点。如果 VPC 没有为 Amazon EC2 服务创建 VPC 终端节点,则控制会失败。

此控件评估单个账户中的资源。它无法描述账户之外的资源。由于Amazon Config和 Security Hub 不进行跨账户检查,因此您将看到在账户间共享的 VPC 的FAILED调查结果。Security Hub 建议你隐瞒这些FAILED发现。

为了改善 VPC 的安保状况,您可以将 Amazon EC2 配置为使用接口 VPC 终端节点以使用 Amazon EC2 接口。接口终端节点由提供支持Amazon PrivateLink,您可以使用该技术私密访问 Amazon EC2 API 操作。它将 VPC 和 Amazon EC2 之间的所有网络流量限制在 Amazon 网络以内。由于仅在同一区域内支持终端节点,因此无法在 VPC 和其他区域内的服务之间创建终端节点。这样可以防止意外调用其他区域的 Amazon EC2 API。

要了解有关为 Amazon EC2 创建 VPC 终端节点的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 和接口 VPC 终端节点

修复

要修复此问题,您可以创建与 Amazon EC2 的接口 VPC 终端节点连接。

从 Amazon VPC 控制台创建通往 Amazon EC2 的接口终端节点
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Endpoints(端点)。

  3. 选择 Create Endpoint(创建终端节点)。

  4. 对于服务类别,选择 Amazon 服务

  5. 对于服务名称,选择 com.amazonaws。 <region>.ec2。

  6. 对于类型,选择接口

  7. 完成以下信息:

    1. 对于 VPC,选择要在其中创建端点的 VPC。

    2. 对于 Subnets(子网),选择要在其中创建端点网络接口的子网(可用区)。并非所有可用区都支持所有Amazon服务。

    3. 要为接口终端节点启用私有 DNS,请选中启用 DNS 名称对应的复选框。默认情况下,此选项处于启用状态。

      要使用私有 DNS 选项,您的 VPC 的以下属性必须设置为 true:

      • enableDnsHostnames

      • enableDnsSupport

      有关更多信息,请参阅 Amazon VPC 用户指南中的查看和更新 VPC 的 DNS 支持

    4. 对于 Security group(安全组),选择要与端点网络接口关联的安全组。

    5. (可选)添加或删除标签。要添加标签,请选择添加标签并执行以下操作:

      • 对于 Key(键),输入标签名称。

      • 对于 Value(值),输入键值。

    6. 要删除标签,请选择标签 Ke y and V al ue 右侧的删除按钮 (x)。

  8. 选择 Create endpoint(创建端点)。

为创建接口 VPC 终端节点策略

您可以向 VPC 终端节点附加策略来控制对 Amazon EC2 API 的访问。此策略指定以下内容:

  • 可执行操作的委托人

  • 可执行的操作

  • 可对其执行操作的资源

有关创建 VPC 终端节点策略的更多详细信息,请参阅 Amazon EC2 Linux 实例用户指南中的 Amazon EC2 和接口 VPC 终端节点

[EC2.15] EC2 子网不应自动分配公有 IP 地址

类别:保护 > 网络安全

严重性:

资源类型:AWS::EC2::Subnet

Amazon Config 规则:subnet-auto-assign-public-ip-disabled

时间表类型:Triger

参数:None(无)

此控件检查Amazon Virtual Private Cloud (Amazon VPC) 子网中的公有 IP 的分配是否已MapPublicIpOnLaunch设置为FALSE。如果将标志设置为,则控件通过FALSE

所有子网都有一个用于确定在子网中创建的网络接口是否自动接收公有 IPv4 地址的属性。在启用了此属性的子网中启动的实例会为其主网络接口分配一个公有 IP 地址。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以通过 Amazon VPC 控制台配置子网。

将子网配置为不分配公有 IP 地址
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Subnets(子网)。

  3. 选择您的子网,然后依次选择 S ubnet Act ions、Modify auto-as s

  4. 清除 Enabled Apply(启用自动分配公有 IPv4 地址)复选框,然后选择保存

[EC2.16] 应删除未使用的网络访问控制列表

类别:预防 > 网络安全

严重性:

资源类型:AWS::EC2::NetworkAcl

Amazon Config 规则:vpc-network-acl-unused-check

时间表类型:Triger

参数:None(无)

该控制检查是否存在任何未使用的网络访问控制列表 (ACL)。

该控件检查资源的项目配置AWS::EC2::NetworkAcl并确定网络 ACL 的关系。

如果唯一的关系是网络 ACL 的 VPC,则控制失败。

如果列出了其他关系,则控制权通过。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何删除未使用的网络 ACL 的说明,请参阅 Amazon VPC 用户指南中的删除网络 ACL

[EC2.17] EC2 实例不应使用多个 ENI

类别:网络安全

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-instance-multiple-eni-check

时间表类型:Triger

参数:

  • Adapterids(可选)— 附加到 EC2 实例的网络接口 ID 列表

此控制检查 EC2 实例是否使用多个弹性网络接口 (ENI) 或弹性结构适配器 (EFA)。如果使用单个网络适配器,则此控制通过。该控件包括一个可选参数列表,用于标识允许的 ENI。

多个 ENI 可能导致双宿主实例,即具有多个子网的实例。这会增加网络安全的复杂性,并引入意想不到的网络路径和访问。

如果属于 Amazon EKS 集群的 Amazon EKS 集群具有多个 ENI,则此控制也会失败。如果您需要使用具有多个 ENI 的 EC2 实例作为 Amazon EKS 集群的一部分,则可以隐藏这些发现。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要修复此问题,请分离其他 ENI。

分离网络接口
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 网络与安全下,选择网络接口

  3. 按不合规实例 ID 筛选列表以查看关联的 ENI。

  4. 选择要删除的 ENI。

  5. 从 “操作” 菜单中选择 “分离”。

  6. 如果你看到提示你确定要断开以下网络接口吗? ,选择 “分离”。

[EC2.18] 安全组应只允许授权端口不受限制的传入流量

类别:保护 > 安全网络配置 > 安全组配置

严重性:

资源类型:AWS::EC2::SecurityGroup

Amazon Config 规则:vpc-sg-open-only-to-authorized-ports

时间表类型:Triger

参数:

  • authorizedTcpPorts(可选)— 以逗号分隔的允许无限制访问的端口列表。例如:'80, 443'。 对于此规则,的默认值authorizedTcpPorts为 80 和 443。

此控件检查正在使用的安全组是否允许不受限制的传入流量。或者,该规则检查authorizedTcpPorts参数中是否列出了端口号。

  • 如果安全组规则端口号允许不受限制的传入流量,但在中指定了端口号authorizedTcpPorts,则控制通过。authorizedTcpPorts 的默认值为 80, 443

  • 如果安全组规则端口号允许不受限制的传入流量,但未在authorizedTcpPorts输入参数中指定端口号,则控制失败。

  • 如果未使用该参数,则任何具有不受限制入站规则的安全组的控制都将失败。

安全组对流向的入口和出口网络流量提供状态过滤Amazon。安全组规则应遵循最低权限访问原则。不受限制的访问(带有 /0 后缀的 IP 地址)增加了黑客 denial-of-service 攻击、攻击和数据丢失等恶意活动的机会。

除非特别允许某个端口,否则该端口应拒绝不受限制的访问。

注意

此控件在亚太地区(大阪)不支持此控件。

修复

有关如何修改安全组的信息,请参阅 Amazon VPC 用户指南中的添加、删除或更新规则

[EC2.19] 安全组不应允许不受限制地访问高风险端口

类别:保护 > 限制网络访问

严重性:重大

资源类型:AWS::EC2::SecurityGroup

Amazon Config 规则:vpc-sg-restricted-common-ports(由 Security Hub 开发的自定义规则)

时间表类型:Triger

参数:None(无)

此控制检查风险最高的指定端口是否可以访问安全组不受限制的传入流量。当安全组中的规则均不允许从 0.0.0.0/0 进入这些端口的入站流量时,此控制即告通过。

不受限制访问 (0.0.0/0) 增加了恶意活动的机会,包括黑客 denial-of-service 攻击、攻击和数据丢失。

安全组为 Amazon 资源提供传入和传出网络流量的有状态筛选。任何安全组都不应允许对以下端口进行不受限制的入口访问:

  • 20、21 (FTP)

  • 22 (SSH)

  • 23 (Telnet)

  • 25 (SMTP)

  • 110 (POP3)

  • 135 (RPC)

  • 143 (IMAP)

  • 445(CIFS)

  • 1433、1434 (MSSQL)

  • 3000(Go、Node.js 和 Ruby Web 开发框架)

  • 3306 (MySQL)

  • 3389 (RDP)

  • 4333 (ahsp)

  • 5000(Python 网页开发框架)

  • 5432 (postgreSQL)

  • 5500 (fcp-addr-srvr1)

  • 5601(OpenSearch 控制面板)

  • 8080(代理)

  • 8088(传统 HTTP 端口)

  • 8888(备用 HTTP 端口)

  • 9200 或 9300 (OpenSearch)

修复

有关如何从安全组删除规则的信息,请参阅 Amazon EC2 Linux 实例用户指南中的从安全组删除规则

[EC2.20]Amazon 站点到站点 VPN 连接的两个 VPN 隧道都应已启动

类别:弹性 > 恢复 > 高可用性

严重性:

资源类型:AWS::EC2::VPNConnection

Amazon Config 规则:vpc-vpn-2-tunnels-up

时间表类型:Triger

参数:None(无)

VPN 隧道是一种加密链接,用于在客户网络和Amazon站点到站点 VPN 连接Amazon中传输数据或在客户网络中传输数据。每个 VPN 连接均包括两条 VPN 隧道,可以同时使用这两条隧道来实现高可用性。确保两个 VPN 隧道都可用于 VPN 连接,这对于确认 VPAmazon C 与您的远程网络之间的安全且高度可用的连接非常重要。

此控件检查Site-tAmazon o-Site VPN 提供的两个 VPN 隧道是否处于 UP 状态。如果一条或两条隧道处于 DOWN 状态,则控制失败。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 中东(巴林)

修复

要修改 VPN 隧道选项,请参阅《Site-to-Site VPN 用户指南》中的修改Amazon Site-to-Site VPN 隧道选项

[EC2.21] 网络 ACL 不应允许从 0.0.0.0/0 进入端口 22 或端口 3389

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::EC2::NetworkAcl

Amazon Config 规则:nacl-no-unrestricted-ssh-rdp

时间表类型:Triger

参数:None(无)

此控制检查网络访问控制列表 (NACL) 是否允许无限制地访问 SSH/RDP 入口流量的默认 TCP 端口。如果 NACL 入站条目允许 TCP 端口 22 或 3389 的源 CIDR 块为 '0.0.0.0/0' 或 ':: /0',则规则失败。

对远程服务器管理端口(例如端口 22 (SSH) 和端口 3389 (RDP))的访问不应公开访问,因为这可能允许意外访问您的 VPC 中的资源。

修复

有关 NACL 的更多信息,请参阅《VPC 用户指南》中的网络 ACL

[EC2.22] 应移除未使用的 EC2 安全组

类别:识别 > 清单

严重性:

资源类型:AWS::EC2::SecurityGroup,AWS::EC2::NetworkInterface

Amazon Config 规则:ec2-security-group-attached-to-eni-periodic

时间表类型:定期

参数:None(无)

此Amazon控制检查安全组是否已连接到Amazon Elastic Compute Cloud (Amazon EC2) 实例或elastic network interface。如果安全组与 Amazon EC2 实例或elastic network interface 不关联,则控制将失败。

修复

要创建、分配和删除安全组,请参阅 Amazon EC2 用户指南中的安全组

[EC2.23] EC2 传输网关不应自动接受 VPC 连接请求

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::EC2::TransitGateway

Amazon Config 规则:ec2-transit-gateway-auto-vpc-attach-disabled

时间表类型:Triger

参数:None(无)

此控件检查 EC2 传输网关是否自动接受共享的 VPC 附件。对于自动接受共享 VPC 连接请求的 Transit Gateway,此控制会失败。

启用 TranAutoAcceptSharedAttachments sit Gateway 可将 Transit Gateway 配置为自动接受任何跨账户 VPC 连接请求,无需验证请求或附件源账户。为了遵循授权和身份验证的最佳实践,我们建议关闭此功能,以确保仅接受授权的 VPC 连接请求。

注意

以下区域不支持此控件:

  • 亚太地区(香港)

  • Asia Pacific (Mumbai)

  • Asia Pacific (Osaka)

  • China (Beijing)

  • China (Ningxia)

  • 中东(巴林)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何修改中Transit Gateway 的信息,请参阅 Amazon VPC 开发人员指南中的修改中转网关

[EC2.24] 不应使用半虚拟化 EC2 实例类型

类别:识别 > 漏洞、补丁和版本管理

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-paravirtual-instance-check

时间表类型:Triger

参数:None(无)

此控件检查 EC2 实例的虚拟化类型是否为半虚拟化。如果 EC2 实例virtualizationType的设置为,则控制失败paravirtual

Linux Amazon 系统映像 (AMI) 使用两种虚拟化类型之一:半虚拟化 (PV) 或硬件虚拟机 (HVM)。半虚拟化和 HVM AMI 之间的主要区别在于它们的启动方式,以及它们能否使用特定硬件扩展 (CPU、网络和存储) 实现更好的性能。

以往,半虚拟化来宾在许多情况下的性能优于 HVM 来宾,但是由于硬件虚拟机虚拟化的功能增强以及 HVM AMI 可使用半虚拟化驱动程序,情况发生了改变。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Linux AMI 虚拟化类型

注意

以下区域不支持此控件:

  • 美国东部(俄亥俄州)

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • 亚太地区(雅加达)

  • 亚太地区(孟买)

  • Asia Pacific (Osaka)

  • 亚太地区(首尔)

  • 加拿大(中部)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(伦敦)

  • 欧洲(米兰)

  • Europe (Paris)

  • Europe (Stockholm)

  • 中东(巴林)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何将 EC2 实例更新为新实例类型的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的更改实例类型

[EC2.27] 运行 EC2 实例不应使用密钥对(已停用)

此控件将停用。

[ECR.1] ECR 私有存储库应配置图像扫描

类别:识别 > 漏洞、补丁和版本管理

严重性:

资源类型:AWS::ECR::Repository

Amazon Config 规则:ecr-private-image-scanning-enabled

时间表类型:Triger

参数:None(无)

此控件检查私有 ECR 存储库是否配置了图像扫描。如果私有 ECR 存储库未配置图像扫描,则此控制将失败。请注意,您还必须为每个存储库配置推送时扫描,才能通过此控制。

ECR 映像扫描有助于识别容器镜像中的软件漏洞。ECR 使用开源 Clair 项目中的常见漏洞和披露 (CVE) 数据库,并提供扫描发现结果的列表。在 ECR 存储库上启用图像扫描可为所存储图像的完整性和安全性添加一层验证层。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要为 ECR 存储库配置图像扫描,请参阅亚马逊弹性容器注册表用户指南中的图像扫描。

[ECR.2] ECR 私有存储库应配置标签不可变性

类别:识别 > 清单 > 标记

严重性:

资源类型:AWS::ECR::Repository

Amazon Config 规则:ecr-private-tag-immutability-enabled

时间表类型:Triger

参数:None(无)

此控件检查私有 ECR 存储库是否启用了标签不可变性。如果私有 ECR 存储库禁用了标签不可变性,则此控制将失败。如果启用了标签不可变性且其值为,则此规则通过IMMUTABLE

Amazon ECR 标签不可变性使客户能够依赖图像的描述性标签作为跟踪和唯一识别图像的可靠机制。不可变标签是静态的,这意味着每个标签都指一个唯一的图像。这提高了可靠性和可扩展性,因为使用静态标签将始终导致部署相同的映像。配置后,标签不变性可防止标签被覆盖,从而减少攻击面。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要创建配置了不可变标签的存储库或更新现有存储库的镜像标签可变性设置,请参阅 Amazon Elastic Container Registry 用户指南中的图像标签可变性

[ECR.3] ECR 存储库应至少配置一个生命周期策略

类别:识别 > 资源配置

严重性:

资源类型:AWS::ECR::Repository

Amazon Config 规则:ecr-private-lifecycle-policy-configured

时间表类型:Triger

参数:None(无)

此控件检查 Amazon ECR 存储库是否配置了至少一个生命周期策略。如果 ECR 存储库未配置任何生命周期策略,则此控制将失败。

Amazon ECR 生命周期策略使您能够指定存储库中镜像的生命周期管理。通过配置生命周期策略,您可以根据使用期限或计数自动清理未使用镜像和镜像的过期时间。自动执行这些任务可以帮助您避免无意中使用仓库中的过时图像。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要配置生命周期策略,请参阅 Amazon Elastic Container Registry 用户指南中的创建生命周期策略预览

[ECS.1] Amazon ECS 任务定义应具有安全联网模式和用户定义

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config 规则:ecs-task-definition-user-for-host-mode-check

时间表类型:Triger

参数:

  • SkipInactiveTaskDefinitions: true

此控件检查具有主机联网模式的活动的 Amazon ECS 任务定义是否也有privilegeduser容器定义。对于具有主机网络模式和容器定义(其中privileged=false或为空或为空)的任务定义,user=root控制失败。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

如果任务定义具有提升的权限,那是因为客户已特别选择加入该配置。当任务定义启用了主机联网但客户没有选择提升权限时,此控制会检查是否存在意外的权限升级。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何更新任务定义的信息,请参阅 Amazon Elastic 容器服务开发人员指南中的更新任务定义

请注意,更新任务定义时,它不会更新从先前任务定义启动的正在运行的任务。要更新正在运行的任务,必须使用新的任务定义重新部署该任务。

[ECS.2] Amazon ECS 服务不应自动分配公有 IP 地址

类别:保护 > 安全网络配置 > 资源不可公开访问

严重性:

资源类型:AWS::ECS::Service

Amazon Config 规则:ecs-service-assign-public-ip-disabled(由 Security Hub 开发的自定义规则)

时间表类型:Triger

参数:

  • exemptEcsServiceArns (可选). Security Hub 不填充此参数。不受此规则约束的 Amazon ECS 服务的 ARN 列表,以逗号分隔。

    COMPLIANT如果 Amazon ECS 服务已AssignPublicIP设置为ENABLED并在此参数列表中指定,则此规则为准。

    NON_COMPLIANT如果 Amazon ECS 服务已AssignPublicIP设置为ENABLED且未在此参数列表中指定,则此规则为准。

此控件会检查 Amazon ECS 服务是否已配置为自动分配公有 IP 地址。如果AssignPublicIP是,则此控件将失效ENABLED。如果AssignPublicIP是,则此控件通过DISABLED

公有 IP 地址是指可通过 Internet 访问的 IP 地址。如果您使用公有 IP 地址启动 Amazon ECS 实例,则可以从互联网访问您的 Amazon ECS 实例。Amazon ECS 服务不应公开访问,因为这可能允许意外访问您的容器应用程序服务器。

注意

亚太地区(大阪)区域不支持此控件。

修复

要禁用自动公有 IP 分配,请参阅亚马逊弹性容器服务开发人员指南中的为您的服务配置 VPC 和安全组设置

[ECS.3] ECS 任务定义不应共享主机的进程命名空间

类别:识别 > 资源配置

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config规则:ecs-task-definition-pid-模式检查

时间表类型:Triger

参数:None(无)

此控件检查 Amazon ECS 任务定义是否配置为与其容器共享主机的进程命名空间。如果任务定义与在其上运行的容器共享主机的进程命名空间,则控制失败。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

进程 ID (PID) 命名空间提供进程之间的分离。它可以防止系统进程可见,并允许重复使用 PID,包括 PID 1。如果主机的 PID 命名空间与容器共享,它将允许容器查看宿主系统上的所有进程。这减少了主机和容器之间进程级隔离的好处。这些情况可能导致对主机本身进程的未经授权的访问,包括操纵和终止这些进程。客户不应与在其上运行的容器共享主机的进程命名空间。

修复

要在任务定义pidMode上配置,请参阅 Amazon Elastic Container Service 开发人员指南中的任务定义参数

[ECS.4] ECS 容器应以非特权方式运行

类别:保护 > 安全访问管理 > 根用户访问限制

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config 规则:ecs-containers-nonprivileged

时间表类型:Triger

参数:None(无)

此控件检查 Amazon ECS 任务定义的容器定义中的privileged参数是否设置为true。如果此参数等于,则控制失败true。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

我们建议您从 ECS 任务定义中删除提升的权限。当权限参数为时true,将对此容器提供对主机容器实例的提升的主机容器实例权限(类似于根用户)。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要在任务定义上配置privileged参数,请参阅 Amazon Elat Continer Service 开发人员指南中的高级容器定义参数

[ECS.5] ECS 容器应限于对根文件系统的只读访问权限

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config 规则:ecs-containers-readonly-access

时间表类型:Triger

参数:None(无)

此控制检查 Amazon ECS 容器是否仅限于对已安装的根文件系统的只读访问权限。如果 Amazon ECS 任务定义的容器定义中的ReadonlyRootFilesystem参数设置为,则此控制将失败false。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

启用此选项可减少安全攻击媒介,因为容器实例的文件系统不能被篡改或写入,除非它对其文件系统文件夹和目录具有明确的读写权限。此控制还遵循最小权限原则。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

将容器定义限制为对根文件系统的只读访问权限
  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 在左侧导航窗格中,请选择 Task Definit ies

  3. 对于包含需要更新的容器定义的每个任务定义,请执行以下操作:

    • 选择需要更新的容器定义。

    • 选择 “编辑容器”。对于 “存储和日志”,选择 “只读根文件系统”。

    • 在 “编辑容器” 选项卡底部选择 “更新”。

    • 选择 Create(创建)

[ECS.8] 密钥不应作为容器环境变量传递

类别:保护 > 安全开发 > 凭证不是硬编码的

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config 规则:ecs-no-environment-secrets

时间表类型:Triger

参数:

  • SecretKeys =AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,ECS_ENGINE_AUTH_DATA

此控件检查容器定义environment参数中任何变量的键值是否包括AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、或ECS_ENGINE_AUTH_DATA。如果任何容器定义中的单个环境变量等于AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、或,则此控制将失败ECS_ENGINE_AUTH_DATA。此控件不涵盖从其他位置(如 Amazon S3)传入的环境变量。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

Amazon Systems Manager参数存储可以帮助您改善组织的安全状况。我们建议使用 Parameter Store 来存储密钥和证书,而不是直接将它们传递到您的容器实例或将它们硬编码到您的代码中。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要使用 SSM 创建参数,请参阅Amazon Systems Manager用户指南中的创建Systems Manager 参数。有关创建指定密钥的任务定义的更多信息,请参阅亚马逊弹性容器服务开发人员指南中的使用 Secrets Manager 指定敏感数据

[ECS.10] Fargate 服务应该在最新的 Fargate 平台版本上运行

类别:识别 > 漏洞、补丁和版本管理

严重性:

资源类型:AWS::ECS::Service

Amazon Config 规则:ecs-fargate-latest-platform-version

时间表类型:Triger

参数:None(无)

此控件检查亚马逊 ECS Fargate 服务是否正在运行最新的 Fargate 平台版本。如果平台版本不是最新版本,则此控制将失败。

Amazon Fargate平台版本指的是任务基础设施的特定运行时环境,即内核和容器运行时版本的组合。随着运行环境的发展,新的平台版本也随之发布。例如,可能会发布新版本以进行内核或操作系统更新、新功能、错误修复或安全更新。Fargate 任务的安全更新和修补程序将自动部署。如果安全问题影响平台版本,Amazon 为平台版本提供补丁。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更新现有服务,包括其平台版本,请参阅 Amazon Elastic Container 服务开发人员指南中的更新服务。

[ECS.12] ECS 集群应启用容器洞察

类别:识别 > 记录

严重性:

资源类型:AWS::ECS::Cluster

Amazon Config 规则:ecs-container-insights-enabled

时间表类型:Triger

参数:None(无)

此控件检查 ECS 集群是否使用容器洞察。如果没有为集群设置容器见解,则此控制将失败。

监控是保持 Amazon ECS 集群的可靠性、可用性和性能的重要方面。使用 Container Insights 从 CloudWatch 容器化应用程序和微服务中收集、聚合和汇总指标与日志。 CloudWatch 自动收集许多资源(例如 CPU、内存、磁盘和网络)的指标。Container Insights 还提供诊断信息(如容器重新启动失败),以帮助您查明问题并快速解决问题。您还可以对容器洞察收集的指标设置 CloudWatch 警报。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要使用容器见解,请参阅亚马逊 CloudWatch 用户指南中的更新服务

[EFS.1] 应将 Amazon EFS 配置为使用以下方法加密静态文件数据Amazon KMS

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::EFS::FileSystem

Amazon Config 规则:efs-encrypted-check

时间表类型:定期

参数:None(无)

此控件检查 Amazon Elastic File System 是否配置为使用加密文件数据Amazon KMS。在以下情况下,检查失败。

请注意,此控件不使用KmsKeyId参数efs-encrypted-check。它只检查 Encrypted 的值。

要为 Amazon EFS 中的敏感数据增加安全层,您应该创建加密文件系统。Amazon EFS 支持对静态文件系统进行加密。创建 Amazon EFS 文件系统时,可以启用静态数据加密。要了解有关 Amazon EFS 加密的更多信息,请参阅《Ama zon EFS 用户指南》中的 Amazon Elastic File Syst em 中的数据加密

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

有关如何加密新 Amazon EFS 文件系统的详细信息,请参阅 AAmazon E lastic File System 用户指南中的加密静态数据

[EFS.2] 亚马逊 EFS 卷应包含在备份计划中

类别:恢复 > 弹性 > Backup

严重性:

资源类型:AWS::EFS::FileSystem

Amazon Config 规则:efs-in-backup-plan

时间表类型:定期

参数:None(无)

此控制检查是否将 Amazon Elastic File System (Amazon EFS) 文件系统添加到中的备份计划中Amazon Backup。如果 Amazon EFS 文件系统未包含在备份计划中,则控制将失败。

在备份计划中包括 EFS 文件系统可帮助您保护数据免遭删除和数据丢失。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要修复此问题,请更新您的文件系统以启用自动备份。

为现有文件系统启用自动备份
  1. 访问 https://console.aws.amazon.com/efs/,打开 Amazon Elastic File System 控制台。

  2. 文件系统页面上,选择要启用自动备份的文件系统。

    将显示文件系统详细信息页面。

  3. 在 “常规” 下,选择 “编辑”

  4. 要启用自动备份,请选择启用自动备份

  5. 选择 Save changes(保存更改)。

要了解更多信息,请访问 Amazon Elastic File System 用户指南中的使用Amazon Backup Amazon EFS。

[EFS.3] EFS 接入点应强制使用根目录

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::EFS::AccessPoint

Amazon Config 规则:efs-access-point-enforce-root-directory

时间表类型:Triger

参数:None(无)

此控制检查 Amazon EFS 接入点是否配置为强制使用根目录。如果将的值设置Path/(文件系统的默认根目录),则控制失败。

在强制执行根目录时,使用访问点的 NFS 客户端使用在访问点上配置的根目录,而不是文件系统的根目录。强制为接入点设置根目录有助于通过确保接入点的用户只能访问指定子目录的文件来限制数据访问。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何为 Amazon EFS 接入点强制使用根目录的说明,请参阅 Amazon E lastic 文件系统用户指南中的使用接入点强制使用根目录。

[EFS.4] EFS 接入点应强制使用用户身份

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::EFS::AccessPoint

Amazon Config 规则:efs-access-point-enforce-user-identity

时间表类型:Triger

参数:None(无)

此控制检查 Amazon EFS 接入点是否配置为强制使用用户身份。如果在创建 EFS 接入点时未定义 POSIX 用户身份,则此控制将失败。

Amazon EFS 访问点是 EFS 文件系统中特定于应用程序的入口点,便于轻松地管理应用程序对共享数据集的访问。访问点可以为通过访问点发出的所有文件系统请求强制执行用户身份(包括用户的 POSIX 组)。访问点还可以为文件系统强制执行不同的根目录,以便客户端只能访问指定目录或其子目录中的数据。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要强制使用 Amazon EFS 接入点的用户身份,请参阅Amazon E lastic File System 用户指南中的使用接入点强制使用用户份。

[EKS.2] EKS 集群应该在支持的 Kubernetes 版本上运行

类别:识别 > 漏洞、补丁和版本管理

严重性:

资源类型:AWS::EKS::Cluster

Amazon Config 规则:eks-cluster-supported-version

时间表类型:Triger

参数:

  • eks:oldestVersionSupported(目前支持的最旧版本是 1.19)

此控件检查 Amazon EKS 集群是否在支持的 Kubernetes 版本上运行。如果 EKS 集群在不受支持的版本上运行,则控制会失败。

如果您的应用程序不需要一个特定版本的 Kubernetes,我们建议您为您的集群使用 EKS 支持的最新可用 Kubernetes 版本。有关亚马逊 EKS 支持的 Kubernetes 版本的更多信息,请参阅亚马逊 EKS Kubernetes 发布日历亚马逊 EKS 版本支持以及亚马逊 EKS 用户指南中的常见问题解答 /para >。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更新 EKS 集群,请在 Amazon EKS 用户指南中更新 Ama zon EKS 集群 Kubernetes 版本 /para >。

[ElasticBeanstalk.1] Elastic Beanstalk 环境应启用增强型运行状况报告

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::ElasticBeanstalk::Environment

Amazon Config 规则:beanstalk-enhanced-health-reporting-enabled

时间表类型:Triger

参数:None(无)

此控件检查您的Amazon Elastic Beanstalk环境是否启用了增强型运行状况报告。

Elastic Beanstalk 增强型运行状况报告可以更快地响应底层基础设施运行状况的变化。这些更改可能导致应用程序的可用性不足。

Elastic Beanstalk 增强型运行状况报告提供了状态描述符,用于评估已识别问题的严重性并确定可能的调查原因。支持的亚马逊系统映像 (AMI) 中包含的 Elastic Beanstalk 运行状况代理用于评估环境 EC2 实例的日志和指标。

有关更多信息,请参阅《Amazon Elastic Beanstalk开发者指南》中的增强型运行状况报告和监控

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何启用增强型运行状况报告的说明,请参阅Amazon Elastic Beanstalk开发者指南中的使用 Elastic Beanstalk 控制台启用增强型运行状况报告

[ElasticBeanstalk.2] 应启用 Elastic Beanstalk 托管平台更新

类别:检测 > 漏洞、补丁和版本管理

严重性:

资源类型:AWS::ElasticBeanstalk::Environment

Amazon Config 规则:elastic-beanstalk-managed-updates-enabled

时间表类型:Triger

参数:None(无)

此控件检查是否为 Elastic Beanstalk 环境启用了托管平台更新。

启用托管平台更新可确保安装适用于环境的最新可用平台补丁、更新和功能。及时安装补丁是保护系统的重要一步。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何启用托管平台更新的说明,请参阅《Amazon Elastic Beanstalk开发者指南》中托管平台更新下的 “配置托管平台更新”。

[ELB.2] 具有 HTTPS/SSL 侦听器的经典负载均衡器应使用提供的证书Amazon Certificate Manager

类别:保护 > 传输中数据加密

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-acm-certificate-required

时间表类型:Triger

参数:None(无)

此控件检查Classic Load Balancer 是否使用Amazon Certificate Manager (ACM) 提供的 HTTPS/SSL 证书。如果使用 HTTPS/SSL 侦听器配置的Classic Load Balancer 不使用 ACM 提供的证书,则控制将失败。

要创建证书,可以使用 ACM 或支持 SSL 和 TLS 协议的工具(如 OpenSSL)。Security Hub 建议您使用 ACM 为负载均衡器创建或导入证书。

ACM 与传统负载均衡器集成,以便您可以在负载均衡器上部署证书。您还应该自动续订这些证书。

注意

以下区域不支持这些控件:

  • 非洲(开普敦)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

修复

有关如何将 ACM SSL/TLS 证书与Classic Load Balancer 关联的信息,请参阅Amazon知识中心文章如何将 ACM SSL/TLS 证书与经典、应用程序或Network Load Balancer 关联?

[ELB.3] Classic Load Balancer 监听器应配置为 HTTPS 或 TLS 终止

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-tls-https-listeners-only

时间表类型:触发器

参数:None(无)

此控件检查经典负载均衡器侦听器是用 HTTPS 或 TLS 协议配置的,用于前端(客户端到负载均衡器)连接。如果Classic Load Balancer 有监听器,则该控件适用。如果您的Classic Load Balancer 没有配置侦听器,则该控件不会报告任何发现。

如果为前端连接配置了 TLS 或 HTTPS 的Classic Load Balancer 监听器,则控制权通过。

如果监听器没有为前端连接配置 TLS 或 HTTPS,则控制将失败。

在开始使用负载均衡器之前,必须添加一个或多个侦听器。侦听器是使用配置的协议和端口检查连接请求的进程。监听器可以支持 HTTP 和 HTTPS/TLS 协议。您应始终使用 HTTPS 或 TLS 侦听器,以便负载均衡器在传输过程中完成加密和解密工作。

修复

要修复此问题,请更新您的监听器以使用 TLS 或 HTTPS 协议。

将所有不合规的监听器更改为 TLS/HTTPS 监听器
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Load Balancers (负载均衡器)。然后,选择您的Classic Load Balancer。

  3. 选择 “听众” 选项卡,然后选择 “编辑”

  4. 对于Loa d Balancer 协议未设置为 HTTPS 或 SSL 的所有监听器,请将设置更改为 HTTPS 或 SSL。

  5. 对于所有修改过的监听器,在 SSL 证书下,选择更改

  6. 对于所有修改过的监听器,选择从 ACM 选择证书

  7. 从 Celerts (证书) 下拉列表中选择证书。然后选择 Save(保存)。

  8. 更新所有监听器后,选择 Save

[ELB.4] 应将应用程序负载均衡器配置为删除 HTTP 标头

类别:保护 > 网络安全

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:alb-http-drop-invalid-header-enabled

时间表类型:触发器

参数:None(无)

此控件评估Amazon应用程序负载均衡器,以确保将其配置为删除无效的 HTTP 标头。如果的值设置为,routing.http.drop_invalid_header_fields.enabled则控制失败false

默认情况下,应用程序负载均衡器配置为删除无效的 HTTP 标头值。删除这些标头值可防止 HTTP 不同步攻击。

请注意,如果启用了 ELB.12,则可以禁用此控件。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 亚太地区(大阪)

  • 欧洲(米兰)

修复

要修复此问题,请将您的负载均衡器配置为删除无效的标头字段。

为负载均衡器配置为删除无效的标头字段
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Load Balancers (负载均衡器)

  3. 选择Application Load Balancer。

  4. 操作中,选择编辑属性

  5. 在 “删除无效标题字段” 下,选择 “启用”。

  6. 选择 Save(保存)。

[ELB.5] 应启用应用程序和传统负载均衡器日志记录

类别:日志记录

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-logging-enabled

时间表类型:触发器

参数:None(无)

此控件检查Application Load Balancer 传统负载均衡器是否启用了日志记录。如果access_logs.s3.enabled是,则控制失败false

Elastic Load Balancing 提供了访问日志,该访问日志可捕获有关发送到负载均衡器的请求的详细信息。每个日志都包含信息 (例如,收到请求的时间、客户端的 IP 地址、延迟、请求路径和服务器响应)。您可以使用这些访问日志分析流量模式并解决问题。

要了解更多信息,请参阅经典负载均衡器用户指南中的经典负载均衡器的访问日志

修复

要修复此问题,请更新您的负载均衡器以启用日志记录。

启用访问日志
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Load Balancers (负载均衡器)

  3. 选择Application Load Balancer。

  4. 操作中,选择编辑属性

  5. 在 “访问日志” 下,选择 “启用”。

  6. 输入您的 S3 位置。这个位置可以存在,也可以为您创建。如果您未指定前缀,则访问日志存储在 S3 存储桶的根目录中。

  7. 选择 Save(保存)。

[ELB.6] 应启用Application Load Balancer 删除保护

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::ElasticLoadBalancingV2::LoadBalancer

Amazon Config 规则:elb-deletion-protection-enabled

时间表类型:触发器

参数:None(无)

该控件检查Application Load Balancer 是否已启用删除保护。如果未配置删除保护,则控件将失效。

启用删除保护以保护您的Application Load Balancer 免遭删除。

修复

为了防止您的负载均衡器被意外删除,您可以启用删除保护。默认情况下,已为负载均衡器禁用删除保护。

如果您为负载均衡器启用删除保护,则必须先禁用删除保护,然后才能删除负载均衡器。

从控制台启用删除保护

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的 LOAD BALANCING(负载均衡)下,选择 Load Balancers(负载均衡器)。

  3. 选择负载均衡器。

  4. Description (说明) 选项卡上,选择 Edit attributes (编辑属性)

  5. 编辑负载均衡器属性页面上,为删除保护选择启用,然后选择保存

  6. 选择 Save(保存)。

要了解更多信息,请参阅应用程序负载均衡器用户指南中的删除保护

[ELB.7] 经典负载均衡器应启用连接耗尽

类别:恢复 > 故障恢复能力

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-connection-draining-enabled(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

该控件检查传统负载均衡器是否已启用连接耗尽。

在 Clasion Loaad Calancer 上启用连接耗尽,可确保负载均衡器停止向正在取消注册或运行状况不佳的实例发送请求。它使现有连接保持打开状态。这对 Auto Scaling 组中的实例特别有用,可确保连接不会突然中断。

修复

要在 Classic 负载均衡器上启用连接耗尽,请按照Classic Load B alancer 用户指南中为传统负载均衡器配置连接耗尽中的步骤操作。

[ELB.8] 带有 HTTPS/SSL 侦听器的经典负载均衡器应使用具有强配置的预定义安全策略

类别:保护 > 传输中数据加密

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-predefined-security-policy-ssl-check

时间表类型:触发器

参数:

  • predefinedPolicyName: ELBSecurityPolicy-TLS-1-2-2017-01

此控件检查您的Classic Load Balancer HTTPS/SSL 侦听器是否使用预定义策略ELBSecurityPolicy-TLS-1-2-2017-01。如果Classic Load Balancer HTTPS/SSL 侦听器不使用,则控制会失败ELBSecurityPolicy-TLS-1-2-2017-01

安全策略是 SSL 协议、密码和服务器顺序首选项选项的组合。预定义策略控制在客户端与负载均衡器之间进行 SSL 协商期间要支持的密码、协议和优先顺序。

使用ELBSecurityPolicy-TLS-1-2-2017-01可以帮助您满足要求您禁用特定版本的 SSL 和 TLS 的合规性和安全标准。有关更多信息,请参阅经典负载均衡器用户指南中的经典负载均衡器的预定义 SSL 安全策略

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 亚太地区(大阪)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

修复

有关如何在Classic Load Balancer 中使用预定义安全策略ELBSecurityPolicy-TLS-1-2-2017-01的信息,请参阅传统负载均衡器用户指南中的配置安全设置

[ELB.9] 经典负载均衡器应启用跨区域负载均衡

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:elb-cross-zone-load-balancing-enabled

时间表类型:触发器

参数:

  • predefinedPolicyName: ELBSecurityPolicy-TLS-1-2-2017-01

此控件检查是否为传统负载均衡器 (CLB) 启用了跨区域负载均衡。如果未为 CLB 启用跨区负载均衡,则此控制将失败。

负载均衡器节点仅在其可用区中的已注册目标之间分配流量。禁用了跨区域负载均衡后,每个负载均衡器节点会仅在其可用区中的已注册目标之间分配流量。如果各可用区的注册目标数量不同,则流量将无法均匀分配,并且与另一个区域中的实例相比,一个区域中的实例最终可能会被过度利用。启用跨区域负载均衡,经典负载均衡器的每个负载均衡器节点会跨启用的所有可用区中的注册实例平均分配请求。有关详细信息,请参阅 Elastic L oaad Balancing 用户指南中的跨区域负载均衡。

注意

非洲(开普敦)不支持此控件。

修复

要在经典负载均衡器中启用跨区域负载均衡,请参阅 Elastic L oad Balancing 用户指南中的启用跨区域负载均衡。

[ELB.10] 经典负载均衡器应跨越多个可用区

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:clb-multiple-az

时间表类型:触发器

参数:None(无)

此控件检查Classic Load Balancer 是否已配置为跨越多个可用区。如果Classic Load Balancer 不跨多个可用区,则控制失败。

可以设置Classic Load Balancer,以便在单个可用区或多个可用区中的 Amazon EC2 实例间分发传入请求。如果唯一配置的可用区不可用,则不跨多个可用区的Classic Load Balancer 无法将流量重定向到另一个可用区中的目标。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何向Classic Load Balancer 添加可用区的信息,请参阅传统负载均衡器用户指南中的添加或删除可用区

[ELB.12] 应用程序负载均衡器应配置为防御或最严格的不同步缓解模式

类别:数据保护 > 数据完整性

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:alb-desync-mode-check

时间表类型:触发器

参数:

  • desyncMode: 防御,最严格

此控件检查Application Load Balancer 是否配置为防御或最严格的不同步缓解模式。如果Application Load Balancer 未配置为防御性或最严格的不同步缓解模式,则控制将失败。

HTTP 不同步问题可能导致请求走私,并使应用程序容易受到请求队列或缓存中毒的影响。反过来,这些漏洞可能导致凭证填充或执行未经授权的命令。配置了防御性或最严格的不同步缓解模式的应用程序负载均衡器可保护您的应用程序免受可能由 HTTP 不同步引起的安全问题的影响。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更新应用程序负载均衡器的不同步缓解模式,请参阅App lication Load Balancer 用户指南中的不同步缓解模式

[ELB.13] 应用程序、网络和网关负载均衡器应跨越多个可用区

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::ElasticLoadBalancingV2::LoadBalancer

Amazon Config 规则:elbv2-multiple-az

时间表类型:触发器

参数:None(无)

此控件检查Elastic Load Balancer V2(应用程序、网络或网关Load Balancer)是否已注册来自多个可用区的实例。如果Elastic Load Balancer V2 在少于两个可用区中注册了实例,则控制会失败。

弹性负载均衡 在一个或多个可用区中的多个目标(如 EC2 实例、容器和 IP 地址)之间自动分配传入的流量。弹性负载均衡 根据传入流量随时间的变化对负载均衡器进行扩展。建议至少配置两个可用区以确保服务的可用性,因为如果一个可用区不可用,Elastic Load Balancer 将能够将流量定向到另一个可用区。配置多个可用区将有助于避免应用程序出现单点故障。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要向Application Load Balancer 添加可用区,请参阅适用于 Application Loay Lo at C alancer 的用户指南中的 Application Loat Loat Loat 要向Network Load Balancer 添加可用区,请参阅网络负载均衡器用户指南中的网络负载均衡器。要向网关Load Balancer 添加可用区,请参阅网关Load Balancer 用户指南中的创建网关负载均衡器

[ELB.14] 经典负载均衡器应配置为防御或最严格的不同步缓解模式

类别:数据保护 > 数据完整性

严重性:

资源类型:AWS::ElasticLoadBalancing::LoadBalancer

Amazon Config 规则:clb-desync-mode-check

时间表类型:触发器

参数:

  • desyncMode: 防御,最严格

此控件检查Classic Load Balancer 是否配置为防御或最严格的不同步缓解模式。如果Application Load Balancer 未配置为防御性或最严格的不同步缓解模式,则此控制将失败。

HTTP 不同步问题可能导致请求走私,并使应用程序容易受到请求队列或缓存中毒的影响。反过来,这些漏洞可能导致凭据劫持或执行未经授权的命令。配置了防御性或最严格的不同步缓解模式的经典负载均衡器可保护您的应用程序免受可能由 HTTP 不同步引起的安全问题的影响。

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更新 Classic 负载均衡器的不同步缓解模式,请参阅经典负载均衡器用户指南中的修改不同步缓解模式。

[elbv2.1] 应将Application Load Balancer 配置为将所有 HTTP 请求重定向到 HTTPS

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::ElasticLoadBalancingV2::LoadBalancer

Amazon Config 规则:alb-http-to-https-redirection-check

时间表类型:定期

参数:None(无)

此控件检查应用程序负载均衡器的所有 HTTP 侦听器上是否配置了 HTTP 到 HTTPS 重定向。如果应用程序负载均衡器的一个或多个 HTTP 侦听器没有配置 HTTP 到 HTTPS 重定向,则检查失败。

在开始使用Application Load Balancer 之前,必须添加一个或多个侦听器。侦听器是使用配置的协议和端口检查连接请求的进程。侦听器支持 HTTP 和 HTTPS 协议。可以使用 HTTPS 侦听器将加密和解密的工作交给Application Load Balancer 完成。您应该使用Application Load Balancer 重定向操作将客户端 HTTP 请求重定向到端口 443 上的 HTTPS 请求,以便在传输中强制加密。

要了解更多信息,请参阅《适用于 Application Load Balancer 的用户指南》中的应用程序负载均衡器的侦听

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

要修复此问题,请更新您的负载均衡器以重定向 HTTP 请求。

在Application Load Balancer 上将 HTTP 请求重定向到 HTTPS
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Load Balancers (负载均衡器)

  3. 选择Application Load Balancer。

  4. 选择 Listeners (侦听器) 选项卡。

  5. 选择一个 HTTP 侦听器(端口 80 TCP),然后选择 Edit (编辑)

  6. 如果存在现有规则,则必须将其删除。否则,选择 Add action (添加操作),然后选择 Redirect to... (重定向到...)

  7. 选择 HTTPS,然后输入 443

  8. 选择圆形符号中的复选标记,然后选择 Update (更新)

[EMR.1] Amazon EMR 集群主节点不应有公有 IP 地址

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::EMR::Cluster

Amazon Config 规则:emr-master-no-public-ip

时间表类型:定期

参数:None(无)

此控件检查 Amazon EMR 集群上的主节点是否具有公有 IP 地址。

如果主节点具有与其任何实例关联的公有 IP 地址,则控制失败。公有 IP 地址在实例的NetworkInterfaces配置PublicIp字段中指定。此控件仅检查处于RUNNINGWAITING状态的 Amazon EMR 集群。

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

在启动期间,您可以控制是否为默认子网或非默认子网中的实例分配公有 IPv4 地址。

默认情况下,默认子网的此属性设置为true。除非是由 Amazon EC2 启动实例向导创建的false,否则非默认子网的 IPv4 公有寻址属性设置为。在这种情况下,向导将该属性设置为true

您需要在具有私有子网的 VPC 中启动集群,该子网将 IPv4 公有寻址属性设置为false

启动后,即无法手动将该公有 IPv4 地址与您的实例取消关联。

要修复这一发现,您需要在 VPC 私有子网中创建一个新集群。有关如何在 VPC 私有子网中启动集群的信息,请参阅 Amazon EMR 管理指南中的在 VPC 中启动集群。

[ES.1] Elasticsearch 域应启用静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-encrypted-at-rest

时间表类型:定期

参数:None(无)

此控件检查 Elasticsearch 域是否启用了静态加密配置。如果未启用静态加密,检查将失败。

要为中的敏感数据增加一层安全保护 OpenSearch,您应将您的配置 OpenSearch 为静态加密。ElasticSearch 域名提供静态数据加密。该功能使用 Amazon KMS 存储和管理您的加密密钥。为执行加密,它使用具有 256 位密钥 (AES-256) 的高级加密标准算法。

要了解有关 OpenSearch 静态加密的更多信息,请参阅《亚马逊 OpenSearch OpenSearch 服务开发者指南》中的 Amazon Service 静态数据加密。

注意

某些实例类型,例如t.smallt.medium,不支持静态数据加密。有关详细信息,请参阅 Amazon Service 开发 OpenSearch 人员指南中的支持的实例类型

修复

默认情况下,域不对数据进行静态加密,并且您无法配置现有的域以使用该功能。

要启用该功能,您必须创建另一个域并迁移数据。有关创建域的信息,请参阅亚马逊 OpenSearch 服务开发者指南

静态数据加密需要 OpenSearch 服务 5.1 或更高版本。有关为 OpenSearch 服务加密静态数据的更多信息,请参阅亚马逊 OpenSearch 服务开发者指南

[ES.2] Elasticsearch 域应该在 VPC 中

类别:保护 > 安全网络配置 > VPC 中的资源

严重性:重大

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-in-vpc-only

时间表类型:定期

参数:None(无)

此控件检查 Elasticsearch 域是否在 VPC 中。它不会通过评估 VPC 子网路由配置来确定公有访问权限。您应该确保 Elasticsearch 域未连接到公有子网。请参阅亚马逊 OpenSearch 服务开发者指南中的基于资源的政策。您还应该确保根据建议的最佳实践配置了 VPC。请参阅《亚马逊 VPC 用户指南》中的 VPC 安全最佳实践

在 VPC 中部署的 Elasticsearch 域可以通过私有Amazon网络与 VPC 资源通信,无需通过公共互联网。此配置通过限制对传输中数据的访问来提高安全状况。VPC 提供多种网络控制来保护对 Elasticsearch 域的访问,包括网络 ACL 和安全组。Security Hub 建议您将公有 Elasticsearch 域迁移到 VPC,以利用这些控件。

修复

如果您创建一个具有公有终端节点的域,则以后无法将其放置在 VPC 中。您必须创建一个新的域,然后迁移数据。反之亦然。如果在 VPC 中创建一个域,则该域不能具有公有终端节点。您必须创建另一个域或禁用该控制。

请参阅亚马逊 OpenSearch 服务开发者指南中的在 VPC 中启动您的亚马逊 OpenSearch 服务

[ES.3] Elasticsearch 域应加密节点之间发送的数据

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-node-to-node-encryption-check

时间表类型:触发器

参数:None(无)

此控件检查 Elasticsearch 域是否启用了 node-to-node 加密。

HTTPS (TLS) 可用于帮助防止潜在攻击者使用或类似攻击来窃听 person-in-the-middle 或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。为 Elasticsearch 域启用 node-to-node 加密可确保集群内部通信在传输过程中得到加密。

此配置可能会导致性能损失。在启用此选项之前,您应该注意并测试性能权衡。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

修复

有关在新域和现有域上启用 node-to-node 加密的信息,请参阅 Amazon Ser OpenSearch vice 开发人员指南中的启用 node-to-node加密

[ES.4] 应启用 Elasticsearch 域错误记录到 CloudWatch 日志

类别:识别-记录

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-logs-to-cloudwatch

时间表类型:触发器

参数:

  • logtype = 'error'

此控件检查 Elasticsearch 域是否配置为向日志发送错误 CloudWatch 日志。

您应该启用 Elasticsearch 域的错误日志,并将这些日志发送到 CloudWatch 日志以进行保留和响应。域错误日志可以帮助进行安全和访问审计,也可以帮助诊断可用性问题。

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何启用日志发布的信息,请参阅 Amazon Ser OpenSearch vice 开发人员指南中的启用日志发布(控制台)

[ES.5] Elasticsearch 域应启用审核日志

类别:识别 > 记录

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-audit-logging-enabled(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:

  • cloudWatchLogsLogGroupArnList (可选). Security Hub 不填充此参数。应为审核 CloudWatch 日志配置的以逗号分隔的日志日志组列表。

    NON_COMPLIANT如果未在此参数列表中指定 Elasticsearch 域的 CloudWatch 日志组,则使用此规则。

此控件检查 Elasticsearch 域是否启用了审核日志。如果 Elasticsearch 域未启用审计日志,则此控制将失败。

审核日志是高度可定制的。通过它们,您可以跟踪 Elasticsearch 集群上的用户活动,包括身份验证成功和失败、请求 OpenSearch、索引更改以及传入的搜索查询。

修复

有关启用审计日志的详细说明,请参阅 Amazon Service 开发 OpenSearch 人员指南中的启用审计日志

[ES.6] Elasticsearch 域应至少有三个数据节点

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-data-node-fault-tolerance(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查 Elasticsearch 域是否配置了至少三个数据节点,并且zoneAwarenessEnabledtrue

Elasticsearch 域需要至少三个数据节点才能实现高可用性和容错能力。部署具有至少三个数据节点的 Elasticsearch 域可确保节点出现故障时群集运行。

修复

修改 Elasticsearch 域中的数据节点数量
  1. 打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/es/

  2. 在 “我的域名” 下,选择要编辑的域名。

  3. 选择 Edit domain (编辑域)

  4. 在 “数据节点” 下,将 “节点数” 设置为一个大于或等于的数字3

    对于三个可用区部署,设置为三的倍数以确保在可用区之间均匀分布。

  5. 选择 Submit(提交)

[ES.7] Elasticsearch 域应配置至少三个专用主节点

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-primary-node-fault-tolerance(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查 Elasticsearch 域是否配置了至少三个专用主节点。如果域不使用专用的主节点,则此控制将失败。如果 Elasticsearch 域有五个专用主节点,则此控制权将通过。但是,可能没有必要使用三个以上的主节点来降低可用性风险,这会导致额外的成本。

Elasticsearch 域需要至少三个专用的主节点才能实现高可用性和容错能力。在数据节点蓝/绿部署期间,专用主节点资源可能会紧张,因为还有其他节点需要管理。部署具有至少三个专用主节点的 Elasticsearch 域可确保在节点出现故障时有足够的主节点资源容量和集群操作。

修复

修改 OpenSearch 域中专用主节点的数量
  1. 打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/es/

  2. 在 “我的域名” 下,选择要编辑的域名。

  3. 选择 Edit domain (编辑域)

  4. 专用主节点下,将实例类型设置为所需的实例类型。

  5. 主节点数设置为等于三个或更多。

  6. 选择 Submit(提交)

[ES.8] 与 Elasticsearch 域的连接应使用 TLS 1.2 进行加密

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::Elasticsearch::Domain

Amazon Config 规则:elasticsearch-https-required(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查使用 TLS 1.2 是否需要连接到 Elasticsearch 域。如果 Elasticsearch 域TLSSecurityPolicy不是政策 min-tls-1-2-2019-07,则检查失败。

HTTPS (TLS) 可用于帮助防止潜在攻击者使用 person-in-the-middle或类似攻击来窃听或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。对传输中的数据进行加密可能会影响性能。您应该使用此功能测试您的应用程序,以了解性能概况和 TLS 的影响。与以前版本的 TLS 相比,TLS 1.2 提供了多项安全增强功能。

修复

要启用 TLS 加密,请使用 UpdateDomainConfigAPI 操作来配置,以便设置TLSSecurityPolicyDomainEndpointOptions有关更多信息,请参阅 Amazon Ser OpenSearch vice 开发人员指南

[GuardDuty.1] GuardDuty 应启用

类别:检测 > 检测服务

严重性:

资源类型:Amazon账户

Amazon Config 规则:guardduty-enabled-centralized

时间表类型:定期

参数:None(无)

此控件检查您的 GuardDuty 账户和地区 GuardDuty 是否启用了亚马逊。

强烈建议您在所有支持的Amazon区域 GuardDuty 中启用。这样做可以生成 GuardDuty 有关未经授权或异常活动的调查结果,即使在您未积极使用的区域也是如此。这还 GuardDuty 允许监控 IAM 等全球Amazon服务 CloudTrail 的事件。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • China (Beijing)

  • China (Ningxia)

  • Europe (Milan)

  • Middle East (Bahrain)

  • Amazon GovCloud (美国东部)

修复

要修复此问题,请启用 GuardDuty。

有关如何启用( GuardDuty包括Amazon Organizations如何使用管理多个账户)的详细信息,请参阅亚马逊 GuardDuty 用户指南 GuardDuty中的入门

[IAM.1] IAM 策略不应允许完整的 “*” 管理权限

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::Policy

Amazon Config 规则:iam-policy-no-statements-with-admin-access

时间表类型:触发器

参数:None(无)

此控件通过添加带"Effect": "Allow"有 over 的语句来检查默认版本的 IAM 策略(也称为客户托管策略)是否具有管理员访问权限"Resource": "*""Action": "*"如果您的 IAM 策略包含此类语句,则控制会失败。

该控制仅检查您创建的客户托管策略。它不检查内联和Amazon托管策略。

IAM 策略定义了一组授予用户、群组或角色的权限。按照标准安全建议,Amazon 建议您授予最低特权,这意味着仅授予执行任务所需的权限。当您提供完全管理权限而不是用户所需的最低权限集时,您会将资源暴给可能有害的操作。

首先确定用户需要执行的任务,然后拟定仅限用户执行这些任务的策略,而不是允许完全管理权限。最开始只授予最低权限,然后根据需要授予其他权限,则样会更加安全。请不要一开始就授予过于宽松的权限而后再尝试收紧权限。

您应该删除带"Effect": "Allow" 有 over 语句的 IAM 策略"Resource": "*""Action": "*"

注意

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要修改您的 IAM 策略,使其不允许完整的 “*” 管理权限,请参阅 IAM 用户指南中的编辑 IAM 策略

[IAM.2] IAM 用户不应附加 IAM 政策

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::User

Amazon Config 规则:iam-user-no-policies-check

时间表类型:触发器

参数:None(无)

此控制可检查您的所有 IAM 用户是否都没有附加策略。相反,IAM 用户必须继承 IAM 群组或角色的权限。

默认情况下,IAM 用户、组和角色无法访问Amazon资源。IAM 策略向用户、群组或角色授予权限。我们建议您将 IAM 策略直接应用于群组和角色,但不要应用于用户。随着用户数量的增长,在组或角色级别分配权限可降低访问管理的复杂性。降低访问管理的复杂性有助于减少委托人意外收到或保留过多权限的机会。

注意

由亚马逊简单电子邮件服务创建的 IAM 用户是使用内联策略自动创建的。Security Hub 会自动免除这些用户的此控制。

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要解决此问题,请创建 IAM 群组并将策略附加到该群组。然后,将用户添加到群组中。策略将应用于组中的每一位用户。要删除直接附加到用户的策略,请参阅《IAM 用户指南》中的添加和删除 IAM 身份权限

[IAM.3] IAM 用户的访问密钥应每 90 天或更短时间轮换一次

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::User

Amazon Config 规则:access-keys-rotated

时间表类型:定期

参数:

  • maxAccessKeyAge:90

该控制检查是否在 90 天内轮换了活动访问密钥。

我们强烈建议您不要在账户中生成和删除所有访问密钥。相反,推荐的最佳做法是创建一个或多个 IAM 角色或使用联合。您可以使用这些方法允许用户使用其现有的公司凭证登录 Amazon Web Services Management Console 和 Amazon CLI。

每种方法都有其使用案例。对于拥有现有中央目录或计划需要超过 IAM 用户当前限制的企业,Federation 通常更好。在Amazon环境之外运行的应用程序需要访问密钥才能以编程方式访问Amazon资源。

但是,如果需要提供编程访问的资源在 Amazon 内部运行,则最佳做法是使用 IAM 角色。通过角色,您可以授予资源访问权限,而无需在配置中硬编码访问密钥 ID 和私有访问密钥。

要了解有关保护访问密钥和账户的更多信息,请参阅《Amazon一般参考》中的管理Amazon访问密钥的最佳实践。另请参阅博客文章在使用编程访问时保护 Amazon 账户的指南

如果您已经有访问密钥,Security Hub 建议您每 90 天轮换一次访问密钥。轮换访问密钥可减少他人使用遭盗用账户或已终止账户关联的访问密钥的风险。这还可以确保无法使用可能已丢失、遭破解或被盗用的旧密钥访问数据。轮换访问密钥后,始终更新您的应用程序。

访问密钥包含一个访问密钥 ID 和一个私有访问密钥。它们用于签署您对发出的编程请求Amazon。 Amazon用户需要自己的访问密钥才能Amazon从、适用于 Windows 的工具Amazon CLI、Amazon SDK 进行编程调用 PowerShell,或者使用单个Amazon服务的 API 操作进行直接 HTTP 调用。

如果您的企业使用Amazon IAM Identity Center (successor to Amazon Single Sign-On) (IAM Identity Centity Centity Center),则用户可以登录到 Active Direcy、内置 IAM Identy Centity Center 目录或其他连接到 IAM Identy Centity Center 的 然后,他们可以映射到 IAM 角色,这样他们就可以在不需要 IAM 用户访问密钥的情况下运行Amazon CLI命令或调Amazon用 API 操作。要了解更多信息,请参阅Amazon Command Line Interface用户指南》Amazon IAM Identity Center (successor to Amazon Single Sign-On)中的配置Amazon CLI以使用

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要修复此问题,请替换所有超过 90 天的密钥。

确保访问密钥的使用时长不超过 90 天
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 选择 Users(用户)。

  3. 对于显示 Access key age (访问密钥使用期限) 超出 90 天的每个用户,选择用户名来打开该用户的设置。

  4. 选择 Security credentials (安全凭证)

  5. 为用户创建新的密钥:

    1. 选择创建访问密钥

    2. 要保存密钥内容,请下载秘密访问密钥,或者选择 Show (显示),然后从页面中复制该密钥。

    3. 将密钥存储在安全位置以提供给用户。

    4. 选择 Close(关闭)。

  6. 更新使用上一个密钥的所有应用程序以使用新密钥。

  7. 对于上一个密钥,请选择 Make inactive (转为非活跃) 来使访问密钥转为非活动状态。用户现在无法使用该密钥发出请求。

  8. 确认使用新密钥的所有应用程序都能按预期工作。

  9. 确认所有应用程序都使用新密钥后,删除以前的密钥。访问密钥一经删除,就无法恢复。

    要删除上一个密钥,请在行末尾选择 X,然后选择 Delete (删除)

[IAM.4] IAM 根用户访问密钥不应存在

类别:保护 > 安全访问管理

严重性:重大

资源类型:Amazon账户

Amazon Config 规则:iam-root-access-key-check

时间表类型:定期

参数:None(无)

此控件检查根用户访问密钥是否存在。

root 用户是Amazon账户中权限最高的用户。 Amazon访问密钥提供对给定账户的编程访问。

Security Hub 建议您删除与根用户关联的所有访问密钥。这限制了可用于危害您账户的向量。它还鼓励创建和使用最小权限的基于角色的账户。

注意

亚太地区(雅加达)或亚太地区(大阪)区域不支持此控件。

修复

要删除根用户访问密钥,请参阅 IAM 用户指南中的删除根用户的访问密钥。

[IAM.5] 应为拥有控制台密码的所有 IAM 用户启用 MFA

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::User

Amazon Config 规则:mfa-enabled-for-iam-console-access

时间表类型:定期

参数:None(无)

此控件检查是否为所有使用控制台密码的 IAM 用户启用了Amazon多重身份验证 (MFA)。

多重身份验证 (MFA) 在用户名和密码之上增加了一层额外的防护。启用 MFA 后,当用户登录 Amazon 网站时,系统会提示输入用户名和密码。此外,系统还会提示用户从他们 Amazon MFA 设备输入身份验证代码。

我们建议为拥有控制台密码的所有账户启用 MFA。MFA 旨在为控制台访问提供更高的安全性。身份验证委托人必须拥有发放具有时效性的密钥的设备,并且必须知道凭证。

注意

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要为 IAM 用户添加 MFA,请参阅《IA M 用户指南》Amazon中的使用多重身份验证 (MFA)

我们向符合条件的客户提供免费的 MFA 安全密钥。查看您的质量是否合格,然后订购免费密钥

[IAM.6] 应该为根用户启用硬件 MFA

类别:保护 > 安全访问管理

严重性:重大

资源类型:Amazon账户

Amazon Config 规则:root-account-hardware-mfa-enabled

时间表类型:定期

参数:None(无)

此控件检查您的Amazon账户是否允许使用硬件多因素身份验证 (MFA) 设备使用根用户凭证登录。

虚拟 MFA 无法提供与硬件 MFA 设备相同的安全水平。我们建议您仅在等待硬件购买批准或等待硬件到达时使用虚拟 MFA 设备。要了解更多信息,请参阅《IAM 用户指南》中的启用虚拟多重身份验证 (MFA) 设备(控制台)

基于时间的一次性密码 (TOTP) 和通用第二要素 (U2F) 令牌均可作为硬件 MFA 选项。

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)。

修复

要为根用户添加硬件 MFA 设备,请参阅 IAM 用户指南中的为Amazon账户根用户启用硬件 MFA 设备(控制台)

我们向符合条件的客户提供免费的 MFA 安全密钥。查看您的质量是否合格,然后订购免费密钥

[IAM.7] IAM 用户的密码策略应具有强配置

类别:保护 > 安全访问管理

严重性:

资源类型:Amazon账户

Amazon Config 规则:iam-password-policy

时间表类型:定期

参数:

  • RequireUppercaseCharacters: true

  • RequireLowercaseCharacters: true

  • RequireSymbols: true

  • RequireNumbers: true

  • MinimumPasswordLength: 8

此控件检查 IAM 用户的账户密码策略是否使用推荐的配置。

要访问Amazon Web Services Management Console,IAM 用户需要密码。作为最佳实践,Security Hub 强烈建议您使用联合,而不是创建 IAM 用户。Federation 允许用户使用他们现有的公司凭据登录Amazon Web Services Management Console。使用Amazon IAM Identity Center (successor to Amazon Single Sign-On)(IAM 身份中心)创建或联合用户,然后在账户中担任 IAM 角色。

要了解有关身份提供商和联合身份的更多信息,请参阅 IAM 用户指南中的身份提供商和联。要了解有关 IAM Identity Center 的更多信息,请参阅《Amazon IAM Identity Center (successor to Amazon Single Sign-On)用户指南》

如果您需要使用 IAM 用户,Security Hub 建议您强制创建强用户密码。您可以在Amazon账户上设置密码策略,以指定密码的复杂性要求和强制轮换期。当您创建或更改密码策略时,大多数密码策略设置会在用户下次更改其密码时实施。一些设置将立即实施。

修复

要更新您的密码策略以使用推荐配置,请参阅 I AM 用户指南中的为 IAM 用户设置账户密码策略

[IAM.8] 应删除未使用的 IAM 用户证书

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::User

Amazon Config 规则:iam-user-unused-credentials-check

时间表类型:定期

参数:

  • maxCredentialUsageAge:90

此控件检查您的 IAM 用户是否有 90 天未使用的密码或有效访问密钥。

IAM 用户可以使用不同类型的证书(例如密码或访问密钥)访问Amazon资源。

Security Hub 建议您删除或停用所有在 90 天或更长时间内未使用的证书。禁用或删除不必要的凭证可减少他人使用遭盗用账户或已弃用账户的关联凭证的风险。

注意

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要获取监控账户是否有过期证书所需的一些信息,请使用 IAM 控制台。例如,当您查看账户中的用户时,会显示 Access key age (访问密钥使用期限)Password age (密码使用期限)Last activity (上次活动时间)。如果上述列中的任何一个中的值大于 90 天,请停用这些用户的凭证。

您还可以使用凭证报告来监控用户账户和识别 90 天或更长时间没有活动的账户。您可以从 IAM 控制台下载.csv格式的证书报告。有关证书报告的更多信息,请参阅 IAM 用户指南中的获取Amazon账户的证书报告

确定非活动账户或未使用的凭证后,请使用以下步骤禁用它们。

禁用非活跃账户的证书
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 选择 Users(用户)。

  3. 选择拥有超过 90 天凭证的用户的姓名。

  4. 选择 Security credentials (安全凭证)

  5. 对于至少 90 天未使用的每个登录凭证和访问密钥,选择 “设为非活动状态”。

[IAM.21] 您创建的 IAM 客户托管策略不应允许对服务执行通配符操作

类别:检测 > 安全访问管理

严重性:

资源类型:AWS::IAM::Policy

Amazon Config 规则:iam-policy-no-statements-with-full-access

时间表类型:触发器

参数:

  • excludePermissionBoundaryPolicy: True

此控件检查您创建的基于身份的 IAM 策略是否具有使用 * 通配符授予对任何服务执行所有操作的权限的 Allow 语句。如果有任何策略声明包含"Effect": "Allow",则控制失败"Action": "Service:*"

例如,策略中的以下语句会导致查找失败。

"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }

如果您使用"Effect": "Allow"和,则控件也会失效"NotAction": "service:*"。在这种情况下,NotAction元素提供对Amazon服务中所有操作的访问权限,中指定的操作除外NotAction

此控制仅适用于客户管理的 IAM 策略。它不适用于由管理的 IAM 策略Amazon。

在为Amazon服务分配权限时,务必在 IAM 策略中限定允许的 IAM 操作的范围。您应将 IAM 操作限制为仅限于所需的操作。这可以帮助您设置最低权限权限。如果将策略附加到可能不需要权限的 IAM 委托人,则过于宽松的策略可能会导致权限升级。

在某些情况下,您可能需要允许具有类似前缀的 IAM 操作DescribeAvailabilityZonesDescribeFlowLogs在这些授权案例中,您可以在常用前缀中添加带后缀的通配符。例如,ec2:Describe*

如果您使用带有后缀的通配符作为前缀的 IAM 操作,则此控制即通过。例如,策略中的以下语句会得出一个已通过的调查结果。

"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }

当您以这种方式对相关的 IAM 操作进行分组时,还可以避免超过 IAM 策略的大小限制。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

Amazon Config应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域中启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。

修复

要修复此问题,请更新您的 IAM 策略,使其不允许完整的 “*” 管理权限。有关如何编辑 IAM 策略的详细信息,请参阅 IAM 用户指南中的编辑 IAM 策略

[Kinesis.1] Kinesis Data Streams 应该在静态时加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::Kinesis::Stream

Amazon Config 规则:kinesis-stream-encrypted

时间表类型:触发器

参数:None(无)

此控件检查 Kinesis Data Streams 是否使用服务器端加密进行静态加密。如果 Kinesis 流没有使用服务器端加密进行静态加密,则此控制将失败。

服务器端加密是 Amazon Kinesis Data Streams 中的一项功能,它使用在数据进入静态状态之前自动对数据进行加密Amazon KMS key。数据在写入 Kinesis 流存储层之前经过加密,从存储中检索后解密。因此,您的数据将在 Amazon Kinesis Data Streams 服务中进行静态加密。

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关为 Kinesis 流启用服务器端加密的信息,请参阅如何开始使用服务器端加密? Amazon Kinesis 开发者指南中。

[KMS.1] IAM 客户托管策略不应允许对所有 KMS 密钥进行解密和重新加密操作

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::IAM::Policy

Amazon Config 规则:iam-customer-policy-blocked-kms-actions

时间表类型:触发器

参数:

  • blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt

  • excludePermissionBoundaryPolicy: True

检查 IAM 客户托管策略的默认版本是否允许委托人对所有资源使用Amazon KMS解密操作。此控件使用自动推理引擎 Zelkova 来验证和警告您有关可能授予跨Amazon账户广泛访问您的机密权限的政策。

如果策略已开放,足以允许kms:Decrypt对任意 KMS 密钥kms:ReEncryptFrom执行操作,则此控制将失败,并将该策略标记为FAILED

该控件会评估附加和未附加的客户托管策略。它不检查内联策略或Amazon托管策略。

借Amazon KMS助,您可以控制谁可以使用您的 KMS 密钥并获得对加密数据的访问权限。IAM 策略定义身份(用户、组或角色)可以对哪些资源执行哪些操作。按照安全最佳实践,Amazon建议您允许最低权限。换句话说,您应仅向身份授予kms:Decryptkms:ReEncryptFrom权限,并且仅授予执行任务所需的密钥的权限。否则,用户可能会使用不适合您的数据的密钥。

与其为所有密钥授予权限,不如确定用户访问加密数据所需的最小密钥集。然后设计仅允许用户使用这些密钥的策略。例如,请勿允许对所有 KMS 密钥的kms:Decrypt权限。相反,kms:Decrypt只允许在您的账户使用特定区域的密钥。通过采用最小权限原则,您可以降低意外泄露数据的风险。

注意

亚太地区(雅加达)或亚太地区(大阪)区域不支持此控件。

修复

要修复此问题,您可以修改 IAM 客户托管策略以限制对密钥的访问。

修改 IAM 客户托管策略
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 导航窗格中,选择策略

  3. 选择要修改的策略旁边的箭头。

  4. 选择编辑策略

  5. 请选择 JSON 选项卡。

  6. “Resource”值更改为要允许的一个或多个特定密钥。

  7. 修改策略后,选择查看策略

  8. 选择 Save changes(保存更改)。

有关更多信息,请参阅Amazon Key Management Service开发人员指南Amazon KMS中的将 IAM 策略与一起使用

[KMS.2] IAM 委托人不应有允许对所有 KMS 密钥进行解密和重新加密操作的 IAM 内联策略

类别:保护 > 安全访问管理

严重性:

资源类型:

  • AWS::IAM::Role

  • AWS::IAM::User

  • AWS::IAM::Group

Amazon Config 规则:iam-inline-policy-blocked-kms-actions

时间表类型:触发器

参数:

  • blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt

检查您的 IAM 身份(角色、用户或群组)中嵌入的内联策略是否允许对所有 KMSAmazon KMS 密钥执行解密和重新加密操作。此控件使用自动推理引擎 Zelkova 来验证和警告您有关可能授予跨Amazon账户广泛访问您的机密权限的政策。

如果策略足够开放,允许对任意 KMS 密钥kms:ReEncryptFrom执行kms:Decrypt或操作,则此控制将失败。

借Amazon KMS助,您可以控制谁可以使用您的 KMS 密钥并获得对加密数据的访问权限。IAM 策略定义身份(用户、组或角色)可以对哪些资源执行哪些操作。按照安全最佳实践,Amazon建议您允许最低权限。换句话说,您应仅授予身份所需的权限,并且仅授予执行任务所需的密钥权限。否则,用户可能会使用不适合您的数据的密钥。

与其授予对所有密钥的权限,不如确定用户访问加密数据所需的最少密钥集。然后设计允许用户仅使用这些密钥的策略。例如,请勿允许对所有 KMS 密钥的kms:Decrypt权限。取而代之的是,只允许对账户的特定区域中的特定密钥授予权限。通过采用最小权限原则,您可以降低意外泄露数据的风险。

注意

亚太地区(雅加达)或亚太地区(大阪)区域不支持此控件。

修复

要修复此问题,您可以修改内联策略以限制对密钥的访问。

修改 IAM 内联策略
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 导航窗格中,选择用户群组角色

  3. 选择要修改其 IAM 内联策略的用户、组或角色的名称。

  4. 选择要修改的策略旁边的箭头。

  5. 选择编辑策略

  6. 请选择 JSON 选项卡。

  7. 将该"Resource"值更改为要允许的特定密钥。

  8. 修改策略后,选择查看策略

  9. 选择 Save changes(保存更改)。

有关更多信息,请参阅Amazon Key Management Service开发人员指南Amazon KMS中的将 IAM 策略与一起使用

[KMS.3] 不应无意中删除Amazon KMS密钥

类别:保护 > 数据保护 > 数据删除保护

严重性:重大

资源类型:AWS::KMS::Key

Amazon Config 规则:kms-cmk-not-scheduled-for-deletion

时间表类型:定期

参数:None(无)

此控件检查是否计划删除 KMS 密钥。如果计划删除 KMS 密钥,则控制失败。

KMS 密钥一旦删除,将无法恢复。如果删除 KMS 密钥,则在 KMS 密钥下加密的数据也将永久无法恢复。如果在计划删除的 KMS 密钥下加密了有意义的数据,请考虑使用新的 KMS 密钥解密数据或重新加密数据,除非您故意执行加密擦除

计划删除 KMS 密钥时,如果计划有误,则强制执行强制等待期,以便有时间撤消删除。默认等待期为 30 天,但在计划删除 KMS 密钥时,等待期可以缩短至 7 天。在等待期限内,计划的删除可以取消,KMS 密钥不会被删除。

有关删除 KMS 密钥的更多信息,请参阅Amazon Key Management Service开发者指南中的删除 KMS 密钥

注意

亚太地区(大阪)和欧洲(米兰)区域中不支持此控件。

修复

有关取消预定 KMS 密钥删除的详细补救说明,请参阅《Amazon Key Management Service开发者指南》中计划和取消密钥删除(控制台)下的 “取消密钥删除”。

[Lambda.1] Lambda 函数策略应禁止公共访问

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::Lambda::Function

Amazon Config 规则:lambda-function-public-access-prohibited

时间表类型:触发器

参数:None(无)

此控制检查 Lambda 函数基于资源的策略是否禁止在您的账户之外进行公共访问。

如果从 Amazon S3 调用 Lambda 函数且策略不包含条件,则控制也会失败AWS:SourceAccount

Lambda 函数不应公开访问,因为这可能允许意外访问存储在该函数中的代码。

注意

中国(北京)或中国(宁夏)区域不支持此控件。

修复

如果 Lambda 函数未能通过此控制,则表示 Lambda 函数的基于资源的策略语句允许公共访问。

要修复该问题,必须更新策略以删除权限或添加AWS:SourceAccount条件。您只能从 Lambda API 更新基于资源的策略。

以下说明使用控制台查看策略Amazon Command Line Interface并使用删除权限。

查看 Lambda 函数基于资源的策略
  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 在导航窗格中,选择 Functions(函数)。

  3. 选择函数。

  4. 请选择权限。基于资源的策略显示了在其他账户或 Amazon 服务尝试访问该函数时应用的权限。

  5. 检查基于资源的策略。确定具有使策略公开的Principal字段值的政策声明。例如,允许"*"{ "AWS": "*" }

    不能从控制台编辑策略。要删除函数的权限,请使用中的remove-permission命令Amazon CLI。

    记下要删除的语句的语句 ID (Sid) 的值。

要使用移除 Lambda 函数的权限,请发出remove-permission命令。Amazon CLI

$ aws lambda remove-permission --function-name <function-name> --statement-id <statement-id>

<function-name>替换为 Lambda 函数的名称和要删除<statement-id>的语句的语句 ID。

验证权限是否已更新
  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 在导航窗格中,选择 Functions(函数)。

  3. 选择您更新的函数。

  4. 请选择权限

    应更新基于资源的策略。如果策略中只有一个语句,则该策略为空。

有关更多信息,请参阅Amazon Lambda开发者指南Amazon Lambda中的使用基于资源的策略

[Lambda.2] Lambda 函数应使用支持的运行时

类别:保护 > 安全开发

严重性:

资源类型:AWS::Lambda::Function

Amazon Config 规则:lambda-function-settings-check

时间表类型:触发器

参数:

  • runtime: nodejs16.x, nodejs14.x, nodejs12.x, python3.9, python3.8, python3.7, ruby2.7, java11, java8, java8.al2, go1.x, dotnetcore3.1, dotnet6

此控件检查运行时的 Lambda 函数设置是否与为每种语言支持的运行时设置的预期值相匹配。此控件检查以下运行时的功能设置:nodejs16.xnodejs14.xnodejs12.xpython3.9python3.8python3.7ruby2.7java11java8java8.al2go1.xdotnetcore3.1、和dotnet6

该Amazon Config规则忽略包类型为的函数Image

Lambda 运行时是围绕不断进行维护和安全更新的操作系统、编程语言和软件库的组合构建的。当安全更新不再支持某个运行时组件时,Lambda 将弃用该运行时。虽然您无法创建使用已弃用运行时的函数,但函数仍可用于处理调用事件。确保您的 Lambda 函数是最新的,并且不使用 out-of-date 运行时环境。

要了解有关此控件检查支持的语言的支持的运行时的更多信息,请参阅Amazon Lambda开发者指南中的Amazon Lambda运行时

注意

亚太地区(大阪)或中国(宁夏)不支持此控件。

修复

有关支持的运行时和弃用计划的更多信息,请参阅Amazon Lambda开发者指南运行时支持政策部分。将运行时迁移到最新版本时,请遵循语言发布者的语法和指导。

[Lambda.4] Lambda 函数应配置死信队列(已停用)

此控件将停用。

[Lambda.5] VPC Lambda 函数应在多个可用区中运行

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::Lambda::Function

Amazon Config 规则:lambda-vpc-multi-az-check

时间表类型:触发器

参数:None(无)

此控件检查 Lambda 是否关联了多个可用区。如果只有一个可用区与 Lambda 关联,则规则失败。

跨多个可用区部署资源是确保架构内高可用性Amazon的最佳实践。可用性是机密性、完整性和可用性三合一安全模型的核心支柱。所有 Lambda 函数都应部署多可用区,以确保单个故障区域不会导致操作完全中断。

修复

要通过控制台在多个可用区部署 Lambda 函数,请执行以下操作:

  1. 通过 https://console.aws.amazon.com/lambda/ 打开Amazon Lambda控制台

  2. 从 Lambda 控制台的函数页面选择一个函数。

  3. 选择 Configuration(配置),然后选择 VPC

  4. 选择 Edit(编辑)。

  5. 如果该功能最初未连接到 VPC,请从下拉菜单中选择一个 VPC。如果该函数最初未连接到 VPC,请选择至少一个安全组连接到该函数

    注意

    函数执行角色必须拥有CreateNetworkInterface在 EC2 上调用的权限。

  6. 选择 Save(保存)。

[NetworkFirewall.3] Network Firewall 策略应至少关联一个规则组

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::NetworkFirewall::FirewallPolicy

Amazon Config 规则:netfw-policy-rule-group-associated

时间表类型:触发器

参数:None(无)

此控件检查Network Firewall 策略是否有任何关联的状态或无状态规则组。如果未分配无状态或有状态的规则组,则控制将失败。

防火墙策略定义防火墙如何监控和处理 Amazon Virtual Private Cloud (Amazon VPC) 中的流量 配置无状态和有状态规则组有助于过滤数据包和流量,并定义默认流量处理。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要向Network Firewall 策略添加规则组,请参阅Amazon Network Firewall开发者指南中的更新防火墙策略。有关创建和管理规则组的信息,请参阅中的规则组Amazon Network Firewall

[NetworkFirewall.4] 对于完整的数据包,Network Firewall 策略的默认无状态操作应为丢弃或转发

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::NetworkFirewall::FirewallPolicy

Amazon Config 规则:netfw-policy-default-action-full-packets

时间表类型:触发器

参数:

  • statelessDefaultActions: aws:drop,aws:forward_to_sfe

此控件检查Network Firewall 策略中完整数据包的默认无状态操作是丢弃还是转发。如果选择Drop或,Forward则控制通过,如果选择Pass则失败。

防火墙策略定义了您的防火墙如何监控和处理 Amazon VPC 中的流量。您可以配置无状态和有状态的规则组来过滤数据包和流量。默认为Pass可以允许意外流量。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更改防火墙策略,请执行以下操作:
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格的 “Network Fi rewall” 下,选择 “防火墙策略”。

  3. 选择要编辑的防火墙策略名称。此会将您转入防火墙策略的详细信息页面。

  4. 无状态默认操作中,选择编辑。然后选择 “丢弃” 或 “转发到有状态规则组” 作为完整数据包的默认操作

[NetworkFirewall.5] 对于分段数据包,Network Firewall 策略的默认无状态操作应为丢弃或转发

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::NetworkFirewall::FirewallPolicy

Amazon Config 规则:netfw-policy-default-action-fragment-packets

时间表类型:触发器

参数:

  • statelessFragDefaultActions (Required) : aws:drop, aws:forward_to_sfe

此控件检查Network Firewall 策略中分段数据包的默认无状态操作是丢弃还是转发。如果选择Drop或,Forward则控制通过,如果选择Pass则失败。

防火墙策略定义了您的防火墙如何监控和处理 Amazon VPC 中的流量。您可以配置无状态和有状态的规则组来过滤数据包和流量。默认为Pass可以允许意外流量。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要更改防火墙策略,请执行以下操作:
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格的 “Network Fi rewall” 下,选择 “防火墙策略”。

  3. 选择要编辑的防火墙策略名称。这会将您转入防火墙策略的详细信息页面。

  4. 无状态默认操作中,选择编辑。然后选择 “丢弃” 或 “转发到有状态规则组” 作为分段数据包的默认操作

[NetworkFirewall.6] 无状态Network Firewall 规则组不应为空

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::NetworkFirewall::RuleGroup

Amazon Config 规则:netfw-stateless-rule-group-not-empty

时间表类型:触发器

参数:None(无)

此控件检查中的无状态规则组是否Amazon Network Firewall包含规则。如果规则组没有规则,则规则将失败。

规则组包含定义您的防火墙如何处理 VPC 中流量的规则。当防火墙策略中存在空的无状态规则组时,可能会给人以该规则组将处理流量的印象。但是,当无状态规则组为空时,它不处理流量。

修复

为Network Firewall 规则组添加规则:

  1. 登录到Amazon管理控制台并通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格的 “Network Fi rewall” 下,选择 “Network Firewall 规则组”。

  3. Network Firewall 规则组页面上,选择要编辑的规则组的名称。此会将您转入防火墙规则组详细信息页面。

  4. 对于无状态规则组,选择编辑规则将规则添加到规则组。

[OpenSearch.1] OpenSearch 域应启用静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-encrypted-at-rest

时间表类型:触发器

参数:None(无)

此控件检查 OpenSearch 域是否已启用 encryption-at-rest 配置。如果未启用静态加密,检查将失败。

为了增加敏感数据的安全层,您应该将您的 OpenSearch 服务域配置为静态加密。配置静态数据加密时,会Amazon KMS存储和管理您的加密密钥。要执行加密,请Amazon KMS使用具有 256 位密钥的高级加密标准算法 (AES-256)。

要了解有关静态 OpenSearch 服务加密的更多信息,请参阅《亚马逊 OpenSearch 服务开发者指南》中的 Amazon Ser OpenSearch vice 静态数据加密。

修复

默认情况下,域不对数据进行静态加密,并且您无法配置现有的域以使用该功能。要启用该功能,您必须创建另一个域并迁移数据。

有关创建域的信息,请参阅亚马逊 OpenSearch 服务开发者指南中的创建和管理亚马逊 OpenSearch 服务域

静态数据加密需要 Amazon OpenSearch 1.0 或更高版本。有关为亚马逊加密静态数据的更多信息 OpenSearch,请参阅《亚马逊 OpenSearch OpenSearch 服务开发者指南》中的 Amazon Service 静态数据加密。

[OpenSearch.2] OpenSearch 域应位于 VPC 中

类别:保护 > 安全网络配置 > VPC 中的资源

严重性:重大

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-in-vpc-only

时间表类型:触发器

参数:None(无)

此控件检查 OpenSearch 域是否在 VPC 中。它不会通过评估 VPC 子网路由配置来确定公有访问权限。

您应确保 OpenSearch 域未连接到公有子网。请参阅《亚马逊 OpenSearch 服务开发者指南》中的基于资源的政策。您还应该确保根据建议的最佳实践配置了 VPC。请参阅 Amazon VPC 用户指南中的您的 VPC 的安全性最佳实践

OpenSearch 在 VPC 中部署的域可以通过私有Amazon网络与 VPC 资源通信,无需通过公共互联网。此配置通过限制对传输中数据的访问来提高安全状况。VPC 提供多种网络控制来保护对 OpenSearch 域的访问,包括网络 ACL 和安全组。Security Hub 建议您将公共 OpenSearch 域迁移到 VPC 以利用这些控件。

修复

如果您创建一个具有公有终端节点的域,则以后无法将其放置在 VPC 中。您必须创建一个新的域,然后迁移数据。反之亦然。如果在 VPC 中创建一个域,则该域不能具有公有终端节点。

您必须创建另一个域或禁用该控制。

请参阅 Amazon Serv OpenSearch ice 开发人员指南中的在 VPC 内启动您的 Amazon Serv OpenSearch ice 域

[OpenSearch.3] OpenSearch 域应加密节点之间发送的数据

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-node-to-node-encryption-check

时间表类型:触发器

参数:None(无)

此控件检查 OpenSearch 域是否启用了 node-to-node 加密。如果在域上禁用 node-to-node 加密,则此控制将失败。

HTTPS (TLS) 可用于帮助防止潜在攻击者使用或类似攻击来窃听 person-in-the-middle 或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。为 OpenSearch 域启用 node-to-node 加密可确保集群内部通信在传输过程中得到加密。

此配置可能会导致性能损失。在启用此选项之前,您应该注意并测试性能权衡。

修复

只能在新域上启用 Node-to-node 加密。要修复这一发现,请创建一个启用 Node-to-node 加密功能的新域,并将您的数据迁移到该存储中。按照亚马逊 OpenSearch 服务开发者指南中的说明创建新域,并确保在创建新域时选择 Node-to-node 加密选项。然后按照使用快照迁移数据将数据迁移到新域中。

[OpenSearch.4] 应启用将 OpenSearch 域错误记录到 CloudWatch 日志

类别:识别 > 记录

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-logs-to-cloudwatch

时间表类型:触发器

参数:

  • logtype = 'error'

此控件检查 OpenSearch 域是否配置为向日志发送错误 CloudWatch 日志。如果没有为域启用错误日志记录 CloudWatch ,则此控制将失败。

您应该启用 OpenSearch 域的错误日志,并将这些日志发送到 CloudWatch 日志以进行保留和响应。域错误日志可以帮助进行安全和访问审计,也可以帮助诊断可用性问题。

修复

有关如何启用日志发布的信息,请参阅 Amazon Ser OpenSearch vice 开发人员指南中的启用日志发布(控制台)

[OpenSearch.5] OpenSearch 域应启用审核日志

类别:识别 > 记录

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-audit-logging-enabled

时间表类型:触发器

参数:

  • cloudWatchLogsLogGroupArnList (可选). Security Hub 不填充此参数。应为审核 CloudWatch 日志配置的以逗号分隔的日志日志组列表。

NON_COMPLIANT如果未在此参数列表中指定 OpenSearch域的 CloudWatch 日志日志组,则使用此规则。

此控件检查 OpenSearch 域是否启用了审核日志。如果 OpenSearch 域未启用审核日志,则此控制将失败。

审核日志是高度可定制的。通过它们,您可以跟踪OpenSearch 集群上的用户活动,包括身份验证成功和失败、请求OpenSearch、索引更改以及传入的搜索查询。

修复

有关启用审计日志的详细说明,请参阅 Amazon Service 开发 OpenSearch 人员指南中的启用审计日志

[OpenSearch.6] OpenSearch 域应至少有三个数据节点

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-data-node-fault-tolerance

时间表类型:触发器

参数:None(无)

此控件检查 OpenSearch 域是否配置了至少三个数据节点,并且zoneAwarenessEnabledtrue。如果某个 OpenSearch 域小于 3 或instanceCountzoneAwarenessEnabled是,则此控制将失败false

一个 OpenSearch 域需要至少三个数据节点才能实现高可用性和容错能力。部署至少包含三个数据节点的 OpenSearch 域可确保节点出现故障时群集运行。

修复

修改 OpenSearch 域中数据节点的数量
  1. 登录到Amazon控制台并打开 Amazon Ser OpenSearch vice 控制台,网址:https://console.aws.amazon.com/es/

  2. 在 “我的域名” 下,选择要编辑的域名,然后选择 “编辑”

  3. 在 “数据节点” 下,将 “节点数” 设置为一个大于3。如果您要部署到三个可用区,请将该数字设置为三的倍数,以确保在可用区之间均匀分布。

  4. 选择 Submit(提交)

[OpenSearch.7] OpenSearch 域应启用精细访问控制

类别:保护 > 安全访问管理 > 敏感的 API 操作受限

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-access-control-enabled

时间表类型:触发器

参数:None(无)

此控件检查 OpenSearch 域是否启用了精细访问控制。如果未启用精细访问控制,则控制会失败。精细访问控制需要advanced-security-options在 OpenSearch 参数update-domain-config中启用。

精细访问控制提供了用于控制对 Amazon Ser OpenSearch vice 上的数据的访问的其他方法。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要启用精细访问控制,请参阅《亚马逊 OpenSearch OpenSearch 服务开发者指南》中的 Amazon Service 中的精细访问控制

[OpenSearch.8] 与 OpenSearch 域的连接应使用 TLS 1.2 进行加密

类别:保护 > 数据保护 > 加密 data-in-transit

严重性:

资源类型:AWS::OpenSearch::Domain

Amazon Config 规则:opensearch-https-required

时间表类型:触发器

参数:None(无)

此控件检查使用 TLS 1.2 是否需要连接到 OpenSearch 域。如果 OpenSearch 域不TLSSecurityPolicy是,则检查失败Policy-Min-TLS-1-2-2019-07

HTTPS (TLS) 可用于帮助防止潜在攻击者使用 person-in-the-middle 或类似攻击来窃听或操纵网络流量。只允许通过 HTTPS (TLS) 进行加密连接。对传输中的数据进行加密可能会影响性能。您应该使用此功能测试您的应用程序,以了解性能概况和 TLS 的影响。与以前版本的 TLS 相比,TLS 1.2 提供了多项安全增强功能。

修复

要启用 TLS 加密,请使用 UpdateDomainConfigAPI 操作配置DomainEndpointOptions以设置TLSSecurityPolicy。有关更多信息,请参阅《Amazon Service 开发 OpenSearch 人员指南》中的 Node-to-node 加密

[RDS.1] RDS 快照应为私有快照

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::RDS::DBSnapshot,AWS::RDS::DBClusterSnapshot

Amazon Config 规则:rds-snapshots-public-prohibited

时间表类型:触发器

参数:None(无)

此控件检查 Amazon RDS 快照是否公开。如果 RDS 快照是公共的,则控制失败。此控件评估 RDS 实例、Aurora 数据库实例、Neptune 数据库实例和 Amazon DocumentDB 集群。

RDS 快照用于备份 RDS 实例上在特定时间点的数据。它们可用于将 RDS 实例还原到之前的状态。

除非有意这样做,否则 RDS 快照不得为公有快照。如果您将未加密的手动快照作为公有快照进行共享,则所有Amazon账户均可使用此快照。这可能会导致 RDS 实例意外的数据泄露。

请注意,如果将配置更改为允许公有访问,则 Amazon Config 规则可能在长达 12 小时内无法检测到更改。在 Amazon Config 规则检测到更改之前,即使配置违反了规则,检查也会通过。

要了解有关共享数据库快照的更多信息,请参阅 Amazon RDS 用户指南中的共享数据库快照

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

要修复此问题,请更新您的 RDS 快照以删除公共访问权限。

删除 RDS 快照的公有访问权限
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 导航到 Snapshots (快照),然后选择要修改的公有快照

  3. Actions (操作) 中,选择 Share Snapshots (共享快照)

  4. DB snapshot visibility (数据库快照可见性) 中,选择 Private (私有)

  5. DB snapshot visibility (数据库快照可见性) 下,选择 all (全部)

  6. 选择 Save(保存)。

[RDS.2] Amazon RDS 数据库实例应禁止公共访问,具体取决于 PubliclyAccessible 配置

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-instance-public-access-check

时间表类型:触发器

参数:None(无)

此控件通过评估实例配置项目中的PubliclyAccessible字段来检查 Amazon RDS 实例是否可公开访问。

Neptune 数据库实例和 Amazon DocumentDB 集群没有PubliclyAccessible标志,无法进行评估。但是,这种控制仍然可以为这些资源生成调查结果。你可以抑制这些发现。

RDS 实例配置中的 PubliclyAccessible 值指示是否可以公开访问数据库实例。如果使用 PubliclyAccessible 配置了数据库实例,则它是一个面向 Internet 的实例并具有可公开解析的 DNS 名称,该名称解析为一个公有 IP 地址。如果无法公开访问数据库实例,则它是一个内部实例并具有解析为私有 IP 地址的 DNS 名称。

除非您打算让您的 RDS 实例可供公开访问,否则不应将 RDS 实例配置为PubliclyAccessible值。这样做可能会导致不必要的流量流向您的数据库实例。

修复

要修复此问题,请更新您的 RDS 数据库实例以删除公有访问权限。

从 RDS 数据库实例中删除公有访问权限
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 导航到 Databases (数据库),然后选择公有数据库。

  3. 选择 Modify(修改)。

  4. 在 “连接” 下,展开 “其他连接配置”

  5. 在 “公共访问” 下,选择 “不可公开访问”。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择 “立即应用”。

  8. 选择修改数据库实例

有关更多信息,请参阅 Amazon RDS 用户指南中的 VPC 中使用数据库实例

[RDS.3] RDS 数据库实例应启用静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-storage-encrypted

时间表类型:触发器

参数:None(无)

此控件检查您的 Amazon RDS 数据库实例是否已启用存储加密。

此控件适用于 RDS 数据库实例。但是,它也可以为 Aurora 数据库实例、Neptune 数据库实例和 Amazon DocumentDB 集群生成调查结果。如果这些发现没有用处,那么你可以抑制它们。

为了增加 RDS 数据库实例中敏感数据的安全性,您应将 RDS 数据库实例配置为静态加密。要静态加密 RDS DB 数据库实例和快照,请启用 RDS 数据库实例的加密选项。静态加密的数据包括数据库实例的基础存储、其自动化备份、只读副本和快照。

RDS 加密的数据库实例使用开放的标准 AES-256 加密算法,对托管 RDS 数据库实例的服务器上的数据进行加密。在加密数据后,Amazon RDS 将以透明方式处理访问的身份验证和数据的解密,并且对性能产生的影响最小。您无需修改数据库客户端应用程序来使用加密。

Amazon RDS 加密当前可用于所有数据库引擎和存储类型。Amazon RDS 加密适用于大多数数据库实例类。要了解不支持 Amazon RDS 加密的数据库实例类,请参阅 Ama zon RDS 用户指南中的加密 Amazon RDS 资源

修复

有关在 Amazon RDS 中加密数据库实例的信息,请参阅 Ama zon RDS 用户指南中的加密 Amazon RDS 资源

[RDS.4] 应对 RDS 集群快照和数据库快照进行静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::RDS::DBClusterSnapshot, AWS::RDS::DBSnapshot

Amazon Config 规则:rds-snapshots-encrypted

时间表类型:触发器

参数:None(无)

此控件检查 RDS 数据库快照是否已加密。

此控件适用于 RDS 数据库实例。但是,它也可以为 Aurora 数据库实例、Neptune 数据库实例和 Amazon DocumentDB 集群的快照生成调查结果。如果这些发现没有用处,那么你可以抑制它们。

对静态数据进行加密可降低未经身份验证的用户访问存储在磁盘上的数据的风险。应对 RDS 快照中的数据进行静态加密,以增加安全性。

修复

您可以使用 Amazon RDS 控制台来修复此问题。

对未加密的 RDS 快照进行加密
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择快照

  3. 在 “手动” 或 “系统” 下找到要加密的快照。

  4. 选中要加密的快照旁边的复选框。

  5. 选择操作,然后选择复制快照

  6. 新数据库快照标识符下,键入新快照的名称。

  7. 在 “加密” 下,选择 “启用加密”。

  8. 选择用于加密快照的 KMS 密钥。

  9. 选择 Copy Snapshot (复制快照)

  10. 创建新快照后,删除原始快照。

  11. 对于 Backup 保留期,请选择正非零值。例如,30 天。

[RDS.5] RDS 数据库实例应配置多个可用区

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-multi-az-support

时间表类型:触发器

参数:None(无)

此控件检查您的 RDS 数据库实例是否启用了高可用性。

RDS 数据库实例应针对多个可用区 (AZ) 配置。这确保了存储的数据的可用性。如果可用区出现问题以及在 RDS 常规 RDS 维护期间,多可用区部署允许自动进行故障转移。

修复

要修复此问题,请更新数据库实例以启用多个可用区。

为一个数据库实例启用多个可用区
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库),然后选择要修改的数据库实例。

  3. 选择修改。将显示 Modify DB Instance (修改数据库实例) 页面。

  4. 在 “实例规范” 下,将多可用区部署设置为 “是”

  5. 选择继续,然后查看修改摘要。

  6. (可选)选择立即应用以立即应用更改。选择此选项在某些情况下可能导致中断。有关更多信息,请参阅 Amazon RDS 用户指南中的使用 “立即应用” 设置

  7. 在确认页面上,检查您的更改。如果更改正确无误,请选择 Modify DB Instance (修改数据库实例) 保存更改。

[RDS.6] 应为 RDS 数据库实例和集群配置增强监控

类别:检测 > 检测服务

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-enhanced-monitoring-enabled

时间表类型:触发器

参数:None(无)

此控件检查您的 RDS 数据库实例是否启用了增强监控。

在 Amazon RDS 中,增强监控可以更快地响应底层基础设施的性能变化。这些性能变化可能导致数据缺乏可用性。增强监控提供您的 RDS 数据库实例在其上运行的操作系统的实时指标。实例上安装了代理。与从虚拟机管理程序层相比,代理可以更准确地获取指标。

若您想了解数据库实例上不同进程或线程对 CPU 的使用差异,增强监测指标非常有用。有关更多信息,请参阅 Amazon RDS 用户指南中的增强监控

修复

有关如何为数据库实例启用增强监控的详细说明,请参阅 Amazon RDS 用户指南中的设置和启用增强监控

[RDS.7] RDS 群集应启用删除保护

类别:保护 > 数据保护 > 数据删除保护

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:rds-cluster-deletion-protection-enabled

时间表类型:触发器

参数:None(无)

此控件检查 RDS 集群是否已启用删除保护。

此控件适用于 RDS 数据库实例。但是,它也可以为 Aurora 数据库实例、Neptune 数据库实例和 Amazon DocumentDB 集群生成调查结果。如果这些发现没有用处,那么你可以抑制它们。

启用群集删除保护是防止未经授权的实体意外删除或删除数据库的额外保护层。

启用删除保护后,无法删除 RDS 集群。在删除请求成功之前,必须禁用删除保护。

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • 中东(巴林)

  • 南美洲(圣保罗)。

修复

要修复此问题,请更新您的 RDS 数据库集群以启用删除保护。

为 RDS 数据库集群启用删除保护
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库),然后选择数据库,然后选择数据库,然后选择数据库。

  3. 选择 Modify(修改)。

  4. 在 “删除保护” 下,选择 “启用删除保护”。

  5. 选择 Continue(继续)。

  6. 在 “调度修改” 下,选择何时应用修改。选项为 A pply during during the next sched ule d wind ow

  7. 选择 Modify Cluster

[RDS.8] RDS 数据库实例应启用删除保护

类别:保护 > 数据保护 > 数据删除保护

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-instance-deletion-protection-enabled

时间表类型:触发器

参数:

  • databaseEngines: mariadb,mysql,oracle-ee,oracle-se2,oracle-se1,oracle-se,postgres,sqlserver-ee,sqlserver-se,sqlserver-ex,sqlserver-web

此控件检查使用所列数据库引擎之一的 RDS 数据库实例是否启用了删除保护。

启用实例删除保护是防止未经授权的实体意外删除或删除数据库的额外保护层。

启用删除保护后,无法删除 RDS 数据库实例。在删除请求成功之前,必须禁用删除保护。

修复

要修复此问题,请更新您的 RDS 数据库实例以启用删除保护。

为 RDS 数据库实例启用删除保护
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库),然后选择数据库,然后选择数据库,然后选择数据库。

  3. 选择 Modify(修改)。

  4. 在 “删除保护” 下,选择 “启用删除保护”。

  5. 选择 Continue(继续)。

  6. 在 “调度修改” 下,选择何时应用修改。选项为 A pply during during the next sched ule d wind ow

  7. 选择修改数据库实例

[RDS.9] 应启用数据库日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-logging-enabled

时间表类型:触发器

参数:None(无)

此控件检查以下 Amazon RDS 日志是否已启用并发送到 CloudWatch 日志:

  • Oracle:(警报、审计、跟踪、侦听器)

  • PostgreSQL:(Postgresql,升级)

  • MySQL:(审计、错误、常规, SlowQuery)

  • MariaDB:(审计、错误、常规, SlowQuery)

  • SQQ (错误,代理)

  • Aurora (审计、错误、常规, SlowQuery)

  • Aurora-MySQL:(审计、错误、常规, SlowQuery)

  • Aurora-PostgreSQL:(Postgresql,升级)。

RDS 数据库应启用相关日志。数据库日志记录提供向 RDS 发出的请求的详细记录。数据库日志可以帮助进行安全和访问审计,也可以帮助诊断可用性问题。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 亚太地区(大阪)

  • 中国(宁夏)

  • 欧洲(米兰)

修复

日志选项包含在与 RDS 数据库集群或实例关联的数据库参数组中。要在使用数据库引擎的默认参数组时启用日志记录,必须创建一个具有所需参数值的新数据库参数组。然后,您必须关联客户数据库参数组与数据库集群或实例。

要从启用 MariaDB、MySQL 或 PostgreSQL CloudWatch 日志并将其发布到日志Amazon Web Services Management Console,请在自定义数据库参数组中设置以下参数:

数据库引擎

参数

MariaDB

general_log=1

slow_query_log=1

log_output = FILE

MariaDB 还需要一个自定义选项组,如下所述。

MySQL

general_log=1

slow_query_log=1

log_output = FILE

PostgreSQL

log_statement=all

log_min_duration_statement=minimum query duration (ms) to log

创建自定义数据库参数组
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择参数组

  3. 选择创建参数组。将显示创建参数组窗口。

  4. 参数组系列列表中,选择一个数据库参数组系列。

  5. 类型列表中,选择数据库参数组

  6. 组名中,输入新数据库参数组的名称。

  7. 在 D es cription (描述) 中,输入新数据库参数组的描述。

  8. 选择 Create(创建)

使用控制台为 MariaDB 日志记录创建新选项组
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择选项组

  3. 选择创建组

  4. 创建选项组窗口中,执行以下操作:

    1. 对于 Name (名称),输入选项组的名称,在 Amazon 账户内该名称需具有唯一性。此名称只能包含字母、数字和连字符。

    2. 对于说明,输入选项组的简要说明。此说明用于显示说明。

    3. 对于引擎,选择需要的数据库引擎。

    4. 对于主引擎版本,请选择所需的数据库引擎主版本。

  5. 要继续,请选择创建

  6. 选择您刚创建的选项组的名称。

  7. 选择添加选项

  8. MARIADB_AUDIT_PLUGIN从 “选项名称” 列表中选择。

  9. SERVER_AUDIT_EVENTS 设置为 CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML, QUERY_DCL

  10. 选择添加选项

要将 SQL Server 数据库、Oracle 数据库或 PostgreSQL 日志发布到 CloudWatch 日志,请从Amazon Web Services Management Console
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases(数据库)。

  3. 选择要修改的数据库实例。

  4. 选择修改

  5. 在 “日志导出” 下,选择所有日志文件以开始发布到 CloudWatch 日志。

    Log exports(日志导出)仅适用于支持发布到 CloudWatch 日志的数据库引擎版本。

  6. 选择 Continue(继续)。然后在摘要页面上,选择修改数据库实例

将新的数据库参数组或数据库选项组应用于 RDS 数据库实例
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases(数据库)。

  3. 选择要修改的数据库实例。

  4. 选择修改。将显示 Modify DB Instance (修改数据库实例) 页面。

  5. 数据库选项下,根据需要更改数据库参数组和数据库选项组。

  6. 完成更改后,选择 “继续”。查看修改摘要。

  7. (可选)选择立即应用以立即应用更改。选择此选项在某些情况下可能导致中断。有关更多信息,请参阅 Amazon RDS 用户指南中的使用 “立即应用” 设置

  8. 选择修改数据库实例以保存更改。

[RDS.10] 应为 RDS 实例配置 IAM 身份验证

类别:保护 > 安全访问管理 > 无密码身份验证

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-instance-iam-authentication-enabled

时间表类型:触发器

参数:None(无)

此控件检查 RDS 数据库实例是否启用了 IAM 数据库身份验证。

IAM 数据库身份验证允许使用身份验证令牌而不是密码对数据库实例进行身份验证。数据库的出站和进站网络流量使用 SSL 加密。有关更多信息,请参阅 A mazon Aurora 用户指南中的 IAM 数据库身份验证

注意

以下区域不支持此控件:

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

修复

要修复此问题,请更新数据库实例以启用 IAM 身份验证。

为现有数据库实例启用 IAM 身份验证
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库实例。

  4. 选择 Modify(修改)。

  5. 数据库身份验证下,选择密码和 IAM 数据库身份验证

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改。选项为 A pply during during the next sched ule d wind ow

  8. 对于集群,选择修改数据库实例

[RDS.11] Amazon RDS 实例应启用自动备份

类别:恢复 > 弹性 > 启用备份

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:db-instance-backup-enabled

时间表类型:触发器

参数:

  • backupRetentionMinimum: 7

此控制检查Amazon Relational Database Service 实例是否启用了自动备份以及备份保留期是否大于或等于七天。如果未启用备份且保留期少于 7 天,则控制将失败。

备份可帮助您更快地从安全事件中恢复,并增强系统的弹性。Amazon RDS 提供了一种配置每日完整实例卷快照的简便方法。有关 Amazon RDS 自动备份的更多详细信息,请参阅 Amazon RDS 用户指南中的使用备份。

注意

此控件在亚太地区(大阪)不支持此控件。

修复

立即启用自动备份
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库),然后选择要修改的数据库实例。

  3. 选择 M od ify 打开 “修改数据库实例” 页面。

  4. Backup 保留期下,选择正非零值(例如 30 天),然后选择继续

  5. 选择 “计划修改” 部分,然后选择何时应用修改:您可以选择在下一个预定维护时段内应用或立即应用

  6. 然后,在确认页面上,选择 Modify DB Instance (修改数据库实例),可保存更改并启用自动备份。

[RDS.12] 应为 RDS 集群配置 IAM 身份验证

类别:保护 > 安全访问管理 > 无密码身份验证

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:rds-cluster-iam-authentication-enabled

时间表类型:触发器

参数:

此控件检查 Amazon RDS 数据库集群是否启用了 IAM 数据库身份验证。

IAM 数据库身份验证允许对数据库实例进行免密码身份验证。身份验证使用身份验证令牌。数据库的出站和进站网络流量使用 SSL 加密。有关更多信息,请参阅 A mazon Aurora 用户指南中的 IAM 数据库身份验证

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 中东(巴林)

  • 南美洲(圣保罗)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以通过 Amazon RDS 控制台为数据库集群启用 IAM 身份验证。

为现有数据库集群启用 IAM 身份验证
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库集群。

  4. 选择 Modify(修改)。

  5. 在 “数据库选项” 下,选择 “启用 IAM 数据库身份验证”。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改:在下一个计划的维护时段应用或立即应用

  8. 选择修改集群

[RDS.13] 应启用 RDS 自动次要版本升级

类别:检测 > 漏洞和补丁管理

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-automatic-minor-version-upgrade-enabled

时间表类型:触发器

参数:None(无)

此控件检查是否为 RDS 数据库实例启用了自动次要版本升级。

启用自动次要版本升级可确保安装关系数据库管理系统 (RDBMS) 的最新次要版本更新。这些升级可能包括安全补丁和错误修复。及时安装补丁是保护系统的重要一步。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以从 Amazon RDS 控制台为数据库实例启用次要版本升级。

为现有数据库实例启用自动次要版本升级
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库实例。

  4. 选择 Modify(修改)。

  5. 在 “维护” 下,为 “自动次要版本升级” 选择 “”。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改:在下一个计划的维护时段应用或立即应用

  8. 选择修改数据库实例

[RDS.14] Amazon Aurora 集群应启用回溯功能

类别:恢复 > 弹性 > 启用备份

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:aurora-mysql-backtracking-enabled

时间表类型:触发器

参数:None(无)

此控件检查 Amazon Aurora 集群是否启用了回溯功能。

备份可帮助您更快地从安全事件中恢复。它们还增强了系统的弹性。Aurora 回溯可将数据库恢复到某个时间点的时间。它不需要数据库恢复即可执行此操作。

有关在 Aurora 中回溯的更多信息,请参阅 A mazon Aurora 用户指南中的回踪 Aurora 数据库集群

注意

以下区域不支持此控件:

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Europe (Stockholm)

  • Middle East (Bahrain)

  • 南美洲(圣保罗)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何启用 Aurora 回溯的详细说明,请参阅 A mazon Aurora 用户指南中的配置反向跟踪

请注意,您无法在现有集群上启用回溯功能。相反,您可创建启用了反向跟踪功能的克隆。有关 Aurora 回溯限制的更多信息,请参阅回溯概述中的限制列表。

有关回溯定价的信息,请参阅 Aurora 定价页面

[RDS.15] 应为多个可用区配置 RDS 数据库集群

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:rds-cluster-multi-az-enabled

时间表类型:触发器

参数:None(无)

此控件检查您的 RDS 数据库集群是否启用了高可用性。

应为多个可用区配置 RDS 数据库集群,以确保存储的数据的可用性。部署到多个可用区允许在出现可用区可用性问题和定期 RDS 维护事件期间自动进行故障转移。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • 中东(巴林)

  • 南美洲(圣保罗)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要修复此控制,请为多个可用区配置数据库集群。

为数据库集群启用多可用区
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库),然后选择要修改的数据库实例。

  3. 选择修改。将显示 Modify DB Instance (修改数据库实例) 页面。

  4. 在 “实例规范” 下,将多可用区部署设置为 “是”

  5. 选择继续,查看修改摘要。

  6. (可选)选择立即应用以立即应用更改。选择此选项在某些情况下可能导致中断。有关更多信息,请参阅 Amazon RDS 用户指南中的使用 “立即应用” 设置

    在确认页面上,检查您的更改。如果更改正确无误,请选择修改数据库实例

注意

Aurora 全局数据库的修复步骤有所不同。要为 Aurora 全球数据库配置多个可用区,请选择您的数据库集群。然后,选择 “操作” 和 “添加读者”。有关更多信息,请参阅 A mazon Aurora 用户指南中的将 Aurora 副本添加到数据库集群

[RDS.16] 应将 RDS 数据库集群配置为将标签复制到快照

类别:识别 > 清单

严重性:

资源类型:AWS::RDS::DBCluster

Amazon Config 规则:rds-cluster-copy-tags-to-snapshots-enabled(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否将 RDS 数据库集群配置为在创建快照时将所有标签复制到快照。

确定和清点 IT 资产是监管和安全性的一个至关重要的方面。您需要了解您所有的 RDS 数据库集群,以便评估它们的安全态势并对潜在的薄弱领域采取措施。快照的标记方式应与其父 RDS 数据库集群相同。启用此设置可确保快照继承其父数据库集群的标签。

注意

以下区域不支持此控件:

  • 中国(北京)

  • 中东(巴林)

  • 南美洲(圣保罗)

修复

为数据库集群启用自动标签复制到快照的功能
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库集群。

  4. 选择 Modify(修改)。

  5. 在 “Backup” 下,选择 “将标签复制到快照”。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改。可以选择 A pply during during the next schedu led w indow(在

[RDS.17] 应将 RDS 数据库实例配置为将标签复制到快照

类别:识别 > 清单

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-instance-copy-tags-to-snapshots-enabled(由 Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否将 RDS 数据库实例配置为在创建快照时将所有标签复制到快照。

确定和清点 IT 资产是监管和安全性的一个至关重要的方面。您需要了解您所有的 RDS 数据库实例,以便评估它们的安全态势并对潜在的薄弱领域采取措施。快照的标记方式应与其父 RDS 数据库实例相同。启用此设置可确保快照继承其父数据库实例的标签。

修复

为数据库实例启用自动标签复制到快照的功能
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库实例。

  4. 选择 Modify(修改)。

  5. 在 “Backup” 下,选择 “将标签复制到快照”。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改。可以选择 A pply during during the next schedu led w indow(在

[RDS.18] 应在 VPC 中部署 RDS 实例

类别:保护 > 安全网络配置 > VPC 中的资源

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-deployed-in-vpc(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否在 EC2-VPC 上部署了 Amazon RDS 实例。

VPC 提供多种网络控制来保护对 RDS 资源的访问。这些控制包括 VPC 终端节点、网络 ACL 和安全组。要利用这些控件,我们建议您在 EC2-VPC 上创建 RDS 实例。

修复

有关如何将 RDS 实例移至 VPC 的详细说明,请参阅 Amazon RDS 用户指南中的更新数据库实例的 V PC。

[RDS.19] 应为关键集群事件配置 RDS 事件通知订阅

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::RDS::EventSubscription

Amazon Config 规则:rds-cluster-event-notifications-configured(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否存在为以下源类型、事件类别键值对启用通知的 Amazon RDS 事件订阅。

DBCluster: ["maintenance","failure"]

RDS 事件通知使用 Amazon SNS 让您知道 RDS 资源的可用性或配置的变化。这些通知允许快速响应。有关 RDS 事件通知的更多信息,请参阅 Amazon RDS 用户指南中的使用 Amazon RDS 事件通知

修复

订阅 RDS 集群事件通知
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择事件订阅

  3. 在 “活动订阅” 下,选择 “创建活动订阅”。

  4. 创建事件订阅对话框中,请执行以下操作:

    1. 对于名称,输入事件通知订阅的名称。

    2. 在将通知发送到,为 SNS 主题选择现有的 Amazon SNS ARN。要使用新主题,请选择 Create topic(创建主题)来输入主题的名称和收件人列表。

    3. 对于源类型,选择集群

    4. 在 “要包含的实例” 下,选择 “所有集群”。

    5. 在 “要包括的事件类别” 下,选择 “特定事件类别”。如果您选择 “所有事件类别”,则控件也会通过。

    6. 选择维护故障

    7. 选择 Create(创建)

[RDS.20] 应为关键数据库实例事件配置 RDS 事件通知订阅

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::RDS::EventSubscription

Amazon Config 规则:rds-instance-event-notifications-configured(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否存在为以下源类型、事件类别键值对启用通知的 Amazon RDS 事件订阅。

DBInstance: ["maintenance","configuration change","failure"]

RDS 事件通知使用 Amazon SNS 让您知道 RDS 资源的可用性或配置的变化。这些通知允许快速响应。有关 RDS 事件通知的更多信息,请参阅 Amazon RDS 用户指南中的使用 Amazon RDS 事件通知

修复

订阅 RDS 实例事件通知
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择事件订阅

  3. 在 “活动订阅” 下,选择 “创建活动订阅”。

  4. 创建事件订阅对话框中,请执行以下操作:

    1. 对于名称,输入事件通知订阅的名称。

    2. 在将通知发送到,为 SNS 主题选择现有的 Amazon SNS ARN。要使用新主题,请选择 Create topic(创建主题)来输入主题的名称和收件人列表。

    3. 对于源类型,选择实例

    4. 在 “要包括的实例” 下,选择 “所有实例”。

    5. 在 “要包括的事件类别” 下,选择 “特定事件类别”。如果您选择 “所有事件类别”,则控件也会通过。

    6. 选择维护配置更改故障

    7. 选择 Create(创建)

[RDS.21] 应为关键数据库参数组事件配置 RDS 事件通知订阅

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::RDS::EventSubscription

Amazon Config 规则:rds-pg-event-notifications-configured(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否存在为以下源类型、事件类别键值对启用通知的 Amazon RDS 事件订阅。

DBParameterGroup: ["configuration change"]

RDS 事件通知使用 Amazon SNS 让您知道 RDS 资源的可用性或配置的变化。这些通知允许快速响应。有关 RDS 事件通知的更多信息,请参阅 Amazon RDS 用户指南中的使用 Amazon RDS 事件通知

修复

订阅 RDS 数据库参数组事件通知
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择事件订阅

  3. 在 “活动订阅” 下,选择 “创建活动订阅”。

  4. 创建事件订阅对话框中,请执行以下操作:

    1. 对于名称,输入事件通知订阅的名称。

    2. 在将通知发送到,为 SNS 主题选择现有的 Amazon SNS ARN。要使用新主题,请选择 Create topic(创建主题)来输入主题的名称和收件人列表。

    3. 对于源类型,选择参数组

    4. 在 “要包含的实例” 下,选择 “所有参数组”。

    5. 在 “要包括的事件类别” 下,选择 “特定事件类别”。如果您选择 “所有事件类别”,则控件也会通过。

    6. 选择配置更改

    7. 选择 Create(创建)

[RDS.22] 应为关键数据库安全组事件配置 RDS 事件通知订阅

类别:检测 > 检测服务 > 应用程序监控

严重性:

资源类型:AWS::RDS::EventSubscription

Amazon Config 规则:rds-sg-event-notifications-configured(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查是否存在为以下源类型、事件类别键值对启用通知的 Amazon RDS 事件订阅。

DBSecurityGroup: ["configuration change","failure"]

RDS 事件通知使用 Amazon SNS 让您知道 RDS 资源的可用性或配置的变化。这些通知允许快速响应。有关 RDS 事件通知的更多信息,请参阅 Amazon RDS 用户指南中的使用 Amazon RDS 事件通知

修复

订阅 RDS 数据库安全组事件通知
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择事件订阅

  3. 在 “活动订阅” 下,选择 “创建活动订阅”。

  4. 在 “创建事件订阅” 对话框中,执行以下操作:

    1. 对于名称,输入事件通知订阅的名称。

    2. 在将通知发送到,为 SNS 主题选择现有的 Amazon SNS ARN。要使用新主题,请选择 Create topic(创建主题)来输入主题的名称和收件人列表。

    3. 对于源类型,选择安全组

    4. 在 “要包含的实例” 下,选择所有安全组

    5. 在 “要包括的事件类别” 下,选择 “特定事件类别”。如果您选择 “所有事件类别”,则控件也会通过。

    6. 选择配置更改失败

    7. 选择 Create(创建)

[RDS.23] RDS 数据库和集群不应使用数据库引擎的默认端口

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-no-default-ports(由Security Hub 开发的自定义规则)

时间表类型:触发器

参数:None(无)

此控件检查 RDS 集群或实例是否使用数据库引擎默认端口以外的端口。

如果您使用已知端口部署 RDS 集群或实例,则攻击者可以猜测有关该集群或实例的信息。攻击者可以将此信息与其他信息结合使用来连接到 RDS 集群或实例或获取有关您的应用程序的其他信息。

更改端口时,还必须更新用于连接旧端口的现有连接字符串。您还应检查数据库实例的安全组,确保它包含允许在新端口上连接的入口规则。

修复

修改现有数据库实例的默认端口
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Databases(数据库)。

  3. 选择要修改的数据库实例

  4. 选择 Modify(修改)。

  5. 在 “数据库选项” 下,将数据库端口更改为非默认值。

  6. 选择 Continue(继续)。

  7. 在 “调度修改” 下,选择何时应用修改。可以选择 A pply during during the next schedu led w indow(在

  8. 对于集群,选择修改集群。对于实例,选择修改数据库实例

[RDS.24] RDS 数据库集群应使用自定义管理员用户名

类别:识别 > 资源配置

严重性:

资源类型:AWS::RDS:DBCluster

Amazon Config 规则:rds-cluster-default-admin-check

时间表类型:触发器

参数:None(无)

此控件检查 Amazon RDS 数据库集群是否已将管理员用户名从其默认值更改为其他值。如果管理员用户名设置为默认值,则此规则将失效。

创建 Amazon RDS 数据库时,应将默认管理员用户名更改为唯一值。默认用户名是众所周知的,应在创建 RDS 数据库期间进行更改。更改默认用户名可降低意外访问的风险。

修复

要更改与 Amazon RDS 数据库集群关联的管理员用户名,请创建新的 RDS 数据库集群并在创建数据库时更改默认管理员用户名。

[RDS.25] RDS 数据库实例应使用自定义管理员用户名

类别:识别 > 资源配置

严重性:

资源类型:AWS::RDS::DBInstance

Amazon Config 规则:rds-instance-default-admin-check

时间表类型:触发器

参数:None(无)

此控件检查您是否已将 Amazon Relational Database Service (Amazon RDS) 数据库实例的管理用户名从默认值更改。如果将管理用户名设置为默认值,则控制将失败。

Amazon RDS 数据库上的默认管理用户名是众所周知的。创建 Amazon RDS 数据库时,应将默认管理用户名更改为唯一值,以降低意外访问的风险。

修复

要更改与 RDS 数据库实例关联的管理用户名,请先创建一个新的 RDS 数据库实例。在创建数据库时更改默认管理用户名。

[Redshift.1] Amazon Redshift 集群应禁止公共访问

类别:保护 > 安全网络配置 > 资源不可公开访问

严重性:重大

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-cluster-public-access-check

时间表类型:触发器

参数:None(无)

此控件可检查 Amazon Redshift 集群是否可公开访问。它评估集群配置项目中的PubliclyAccessible字段。

Amazon Redshift 集群配置的PubliclyAccessible属性表明该集群是否可以公开访问。将 set 配置PubliclyAccessibletrue,则集群是面向 Internet 的实例,具有可解析为公有 IP 地址的可公开解析 DNS 名称。

当集群不可公开访问时,它是一个具有 DNS 名称的内部实例,可解析为私有 IP 地址。除非您打算让集群公开访问,否则不应将集群配置为PubliclyAccessible设置true

修复

要修复此问题,请更新您的 Amazon Redshift 集群以禁用公共访问权限。

禁用 Amazon Redshift 集群的公开访问权限
  1. 打开位于 https://console.aws.amazon.com/redshift/ 的 Amazon Redshift 控制台。

  2. 在导航菜单中,选择 Clusters(集),然后选择带有要修改的安全组的集群的名称。

  3. 选择 “操作”,然后选择 “修改可公开访问的设置”。

  4. 在 “允许 VPC 外部的实例和设备通过集群终端节点连接到您的数据库” 下,选择 “”。

  5. 选择 Confirm(确认)。

[Redshift.2] 与 Amazon Redshift 集群的连接应在传输过程中进行加密

类别:保护 > 数据保护 > 加密传输中的数据

严重性:

资源类型:AWS::Redshift::Cluster,AWS::Redshift::ClusterParameterGroup

Amazon Config 规则:redshift-require-tls-ssl

时间表类型:触发器函数

参数:None(无)

此控制检查是否需要连接到 Amazon Redshift 集群才能在传输中使用加密。如果 Amazon Redshift 集群参数require_SSL未设置为 1,则检查将失败。

TLS 可用于帮助防止潜在的攻击者使用 person-in-the-middle 或类似的攻击来窃听或操纵网络流量。只允许通过 TLS 进行加密连接。对传输中的数据进行加密可能会影响性能。您应该使用此功能测试您的应用程序,以了解性能概况和 TLS 的影响。

注意

欧洲(米兰)不支持此控件。

修复

要修复此问题,请更新参数组以要求加密。

修改参数组
  1. 打开位于 https://console.aws.amazon.com/redshift/ 的 Amazon Redshift 控制台。

  2. 在导航菜单中,选择 Config,然后选择工作负载管理以显示工作负载管理页面。

  3. 选择要修改的参数组。

  4. 选择 “参数”。

  5. 选择编辑参数,然后设置require_ssl为 1。

  6. 输入您的更改,然后选择 “保存”。

[Redshift.3] Amazon Redshift 集群应启用自动快照

类别:恢复 > 弹性 > 启用备份

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-backup-enabled

时间表类型:触发器函数

参数:

  • MinRetentionPeriod = 7

此控件检查 Amazon Redshift 集群是否启用了自动快照。它还会检查快照保留期是否大于或等于七。

备份可帮助您更快地从安全事件中恢复。它们增强了系统的弹性。默认情况下,Amazon Redshift 会定期拍摄快照。该控件检查自动快照是否已启用并保留至少七天。有关 Amazon Redshift 自动快照的更多详细信息,请参阅 Amazon Redshift 管理指南中的自动快照

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • 亚太地区(大阪)

  • 亚太地区(悉尼)

  • 中国(宁夏)

  • 欧洲(米兰)

修复

要修复此问题,请将快照保留期至少更新为 7。

修改快照保留期
  1. 打开位于 https://console.aws.amazon.com/redshift/ 的 Amazon Redshift 控制台。

  2. 在导航菜单中,选择 Clusters(集群),然后选择集群,然后选择要修改的集群的名称。

  3. 选择 Edit(编辑)。

  4. 在 “Backup” 下,将 “快照保留期” 的值设置为 7 或更大。

  5. 选择 Modify Cluster

[Redshift.4] Amazon Redshift 集群应启用审计日志

类别:识别 > 记录

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-cluster-audit-logging-enabled(由Security Hub 开发的自定义规则)

时间表类型:触发器函数

参数:

  • loggingEnabled = true

此控件检查 Amazon Redshift 集群是否启用了审计日志。

Amazon Redshift 审核日志记录提供了有关集群中的连接和用户活动的更多信息。这些数据可以在 Amazon S3 中存储和保护,有助于安全审计和调查。有关更多信息,请参阅 Amazon Redshift 管理指南中的数据库审计日志

修复

启用集群审计日志
  1. 打开位于 https://console.aws.amazon.com/redshift/ 的 Amazon Redshift 控制台。

  2. 在导航菜单中,选择 Clusters(集群),然后选择集群,然后选择要修改的集群的名称。

  3. 选择维护和监控

  4. 在 “审核日志” 下,选择 “编辑”

  5. 将 “启用审核日志” 设置为 “是”,然后输入日志目标存储桶的详细信息。

  6. 选择 Confirm(确认)。

[Redshift.6] Amazon Redshift 应该启用到主要版本的自动升级

类别:检测 > 漏洞和补丁管理

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-cluster-maintenancesettings-check

时间表类型:触发器函数

参数:

  • allowVersionUpgrade = true

此控件检查是否为 Amazon Redshift 集群启用了自动主要版本升级。

启用自动主要版本升级可确保在维护时段内安装 Amazon Redshift 集群的最新主要版本更新。这些更新可能包括安全补丁和错误修复。及时安装补丁是保护系统的重要一步。

注意

中东(巴林)不支持此控件。

修复

要从中修复此问题Amazon CLI,请使用 Amazon Redshiftmodify-cluster 命令来设置该--allow-version-upgrade属性。

aws redshift modify-cluster --cluster-identifier clustername --allow-version-upgrade

clustername的 Amazon Redshift 集群的名称在哪里。

[Redshift.7] Amazon Redshift 集群应使用增强型 VPC 路由

类别:保护 > 安全网络配置 > API 私有访问

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-enhanced-vpc-routing-enabled

时间表类型:触发器函数

参数:None(无)

此控件检查是否已EnhancedVpcRouting启用 Amazon Redshift 集群。

增强型 VPC 路由强制集群COPY和数据存储库之间的所有和UNLOAD流量通过您的 VPC。然后,您可以使用安全组和网络访问控制列表等 VPC 功能来保护网络流量。您还可以使用 VPC 流日志监控网络流量。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关详细的修复说明,请参阅 Amazon Redshift 管理指南中的启用增强型 VPC 路由

[Redshift.8] Amazon Redshift 集群不应使用默认的管理员用户名

类别:识别 > 资源配置

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-default-admin-check

时间表类型:触发器函数

参数:None(无)

此控件检查 Amazon Redshift 集群是否已将管理员用户名从其默认值更改为其他值。如果 Redshift 集群的管理员用户名设置为,则此控制将失败awsuser

创建 Redshift 集群时,应将默认管理员用户名更改为唯一值。默认用户名是众所周知的,应在配置时进行更改。更改默认用户名可降低意外访问的风险。

修复

创建了 Amazon Redshift 集群后,则不能再更改其管理员用户名。要创建新集群,请按照此处的说明操作。

[Redshift.9] Redshift 集群不应使用默认的数据库名称

类别:识别 > 资源配置

严重性:

资源类型:AWS::Redshift::Cluster

Amazon Config 规则:redshift-default-db-name-check

时间表类型:触发器函数

参数:None(无)

此控件检查 Amazon Redshift 集群是否已将数据库名称从其默认值更改为其他值。如果 Redshift 集群的数据库名称设置为,则控制将失败dev

创建 Redshift 集群时,应将默认数据库名称更改为唯一值。默认名称是众所周知的,应在配置时更改。例如,如果在 IAM 策略条件中使用知名名称,则该名称可能会导致无意访问。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

创建了 Amazon Redshift 集群后,则不能再更改该集群的数据库名称。有关创建新集群的说明,请参阅 Amazon Redshift 入门指南中的 Amazon Redshift 入门

[S3.1] 应启用 S3 阻止公有访问设置

类别:保护 > 安全网络配置

严重性:

资源类型:Amazon账户

Amazon Config 规则:s3-account-level-public-access-blocks-periodic

时间表类型:定期

参数:

  • ignorePublicAcls: true

  • blockPublicPolicy: true

  • blockPublicAcls: true

  • restrictPublicBuckets: true

此控件检查以下 Amazon S3 公有访问块设置是否在账户级别配置:

  • ignorePublicAcls: true

  • blockPublicPolicy: true

  • blockPublicAcls: true

  • restrictPublicBuckets: true

如果所有公共访问屏蔽设置都设置为,则控制通过true

如果将任何设置设置为false,或者任何设置均未配置,则控制将失败。

Amazon S3 公共访问块旨在提供对整个Amazon账户或单个 S3 存储桶级别的控制,以确保对象永远不会获得公共访问权限。通过访问控制列表 (ACL) 和/或存储桶策略向存储桶和对象授予公有访问权限。

除非您打算公开访问您的 S3 存储桶,否则您应该配置账户级别的 Amazon S3 阻止公有访问功能。

要了解更多信息,请参阅 Amazon S imple Storage Service 用户指南中的使用 Amazon S3 阻止公有访问

注意

以下区域不支持此控件:

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要修复此问题,请启用 Amazon S3 阻止公有访问。

启用 Amazon S3 阻止公有访问
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 选择 Block public access (account settings) (阻止公有访问(账户设置))

  3. 选择 Edit(编辑)。

  4. 选择 “阻止所有公共访问”。

  5. 选择 Save changes(保存更改)。

有关更多信息,请参阅《Amazon S imple Storage Service 用户指南》中的使用 Amazon S3 阻止公有访问

[S3.2] S3 存储桶应禁止公开读取访问

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-public-read-prohibited

时间表类型:定期触发,变更触发

参数:None(无)

该控制检查 S3 存储桶是否允许公共读取访问。它评估阻止公有访问设置、存储桶策略和存储桶访问控制列表 (ACL)。

有些使用案例要求互联网上的每个人都能够从您的 S3 存储桶中读取数据。然而,这种情况很少见。为确保数据的完整性和安全性,您的 S3 存储桶不应可公开读取。

修复

要修复此问题,请更新您的 S3 存储桶以删除公有访问权限。

从 S3 存储桶中删除公有访问权限
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 选择要更新的 S3 桶的名称。

  4. 选择 “权限”,然后选择 “阻止公共访问”。

  5. 选择 Edit(编辑)。

  6. 选择 “阻止所有公共访问”。然后选择 Save(保存)。

  7. 如果出现提示,输入 confirm,然后选择 Confirm (确认)

[S3.3] S3 存储桶应禁止公开写入访问

类别:保护 > 安全网络配置

严重性:重大

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-public-write-prohibited

时间表类型:定期触发,变更触发

参数:None(无)

该控制检查 S3 存储桶是否允许公共写入访问。它会对阻止公有访问设置、存储桶策略和存储桶访问控制列表 (ACL) 进行评估。

有些使用案例要求互联网上的每个人都能写入您的 S3 存储桶。然而,这种情况很少见。为确保数据的完整性和安全性,您的 S3 存储桶不应可公开写入。

修复

要修复此问题,请更新您的 S3 存储桶以删除公有访问权限。

删除 S3 存储桶的公开访问权限
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 选择要更新的 S3 桶的名称。

  4. 选择 “权限”,然后选择 “阻止公共访问”。

  5. 选择 Edit(编辑)。

  6. 选择 “阻止所有公共访问”。然后选择 Save(保存)。

  7. 如果出现提示,输入 confirm,然后选择 Confirm (确认)

[S3.4] S3 存储桶应启用服务器端加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-server-side-encryption-enabled

时间表类型:触发器函数

参数:None(无)

此控制检查您的 S3 存储桶是否已启用 Amazon S3 默认加密,或者 S3 存储桶策略是否明确拒绝未经服务器端加密的放置对象请求。

要为 S3 存储桶中的敏感数据增加一层安全保护,您应该为存储桶配置服务器端加密,以保护静态数据。Amazon S3 使用唯一的密钥来加密每个数据元。作为额外的保护,Amazon S3 会使用定期轮换的根密钥加密密钥本身。Amazon S3 服务器端加密使用可用的最强数据块密码之一、256 位高级加密标准 (AES-256) 来加密您的数据。

要了解更多信息,请参阅 Amazon S imple Storage Service 用户指南中的使用采用 Amaz on S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据

修复

要修复此问题,请更新您的 S3 存储桶以启用默认加密。

对 S3 存储桶启用默认加密
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 从列表中选择 S3 存储桶。

  4. 请选择属性

  5. 选择 Default encryption

  6. 要进行加密,请选择 AES-256Amazon-KMS

    • 选择 AES-256 以使用由 Amazon S3 托管的密钥进行默认加密。有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息,请参阅 Amazon Simple Storage Service 用户指南

    • 选择 Amazon-KMS 使用由管理的密钥Amazon KMS进行默认加密。然后从您创建的根密钥列表中选择一个Amazon KMS根密钥。

      键入要使用的 Amazon KMS 密钥的 Amazon 资源名称 (ARN)。您可以在 IAM 控制台中的加密Amazon KMS密钥下方找到您的密钥的 ARN。或者,您可以从下拉列表中选择一个键名。

      重要

      如果您将 Amazon KMS 选项用于默认加密配置,则您需要遵循 Amazon KMS 的 RPS(每秒请求数)配额。有关Amazon KMS配额以及如何请求增加配额的更多信息,请参阅Amazon Key Management Service开发人员指南

      有关创建Amazon KMS密钥的更多信息,请参阅Amazon Key Management Service开发者指南

      有关使用 Amazon S3Amazon KMS 的更多信息,请参阅 Amazon S imple Storage Service 用户指南

    在启用默认加密时,您可能需要更新存储桶策略。有关从存储桶策略转换为默认加密的更多信息,请参阅 Amazon Simple Storage Service 用户指南

  7. 选择 Save(保存)。

有关默认 S3 存储桶加密的更多信息,请参阅 A mazon Simple Storage Service 用户指南

[S3.5] S3 存储桶应要求请求才能使用安全套接字层

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-ssl-requests-only

时间表类型:触发器函数

参数:None(无)

此控制检查 S3 存储桶是否有要求请求使用安全套接字层 (SSL) 的策略。

在 S3 资源策略中,S3 存储桶应具有要求所有请求 (Action: S3:*) 仅接受通过 HTTPS 传输数据的策略,由条件密钥指示aws:SecureTransport

修复

要修复此问题,请更新 S3 存储桶的权限策略。

将 S3 存储桶配置为拒绝非安全传输
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 导航到不合规存储桶,然后选择存储桶名称。

  3. 选择 Permissions,然后选择 Bucket Policy

  4. 在以下政策中添加与之相似的政策声明。awsexamplebucket替换为要修改的存储桶的名称。

    { "Id": "ExamplePolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSSLRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::awsexamplebucket", "arn:aws:s3:::awsexamplebucket/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }
  5. 选择 Save(保存)。

有关更多信息,请参阅知识中心文章要符合Amazon Config规则 s3,我要使用什么 S3 存储桶策略bucket-ssl-requests-only?

[S3.6] 应限制在存储桶策略中授予其他Amazon账户的 Amazon S3 权限

类别:保护 > 安全访问管理 > 敏感的 API 操作操作受限

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-blacklisted-actions-prohibited

时间表类型:触发器函数

参数:

  • blacklistedactionpatterns: s3:DeleteBucketPolicy, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutEncryptionConfiguration, s3:PutObjectAcl

此控制检查 S3 存储桶策略是否阻止其他Amazon账户的委托人对 S3 存储桶中的资源执行被拒绝的操作。如果 S3 存储桶策略允许另一个Amazon账户中的委托人执行以下任何操作,则控制失败:

  • s3:DeleteBucketPolicy

  • s3:PutBucketAcl

  • s3:PutBucketPolicy

  • s3:PutEncryptionConfiguration

  • s3:PutObjectAcl

实施最低权限访问对于减小安全风险和错误意意意意意意意意意意意意意意意意意意意意意意意意意意意 如果 S3 存储桶策略允许来自外部账户的访问,则可能导致内部威胁或攻击者泄露数据。

blacklistedactionpatterns参数允许成功评估 S3 存储桶的规则。参数向外部账户授予对未包含在blacklistedactionpatterns列表中的操作模式的访问权限。

修复

要修复此问题,请编辑 S3 存储桶策略以删除权限。

编辑 S3 存储桶策略
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. Buckets nam e(存储桶名称)列表中,选择要为其编辑策略的 S3 存储桶的名称。

  3. 选择 Permissions,然后选择 Bucket Policy

  4. 存储桶策略编辑器文本框中,执行以下操作之一:

    • 删除向其他Amazon账户授予被拒绝操作访问权限的声明

    • 从语句中删除允许的被拒绝的操作

  5. 选择 Save(保存)。

[S3.8] 应在存储区级别启用 S3 阻止公有访问设置

类别:保护 > 安全访问管理 > 访问控制

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-level-public-access-prohibited

时间表类型:触发器函数

参数:

  • excludedPublicBuckets(可选)-以逗号分隔的已知允许公有 S3 存储桶名称列表。

此控件检查 S3 存储桶是否应用了存储分区级别的公共访问阻止。如果将以下任一设置设置为,则此控制会失败false

  • ignorePublicAcls

  • blockPublicPolicy

  • blockPublicAcls

  • restrictPublicBuckets

在 S3 存储桶级别阻止公有访问可提供控制,以确保对象永远不会获得公共访问权限。通过访问控制列表 (ACL) 和/或存储桶策略向存储桶和对象授予公有访问权限。

除非您打算公开访问您的 S3 存储桶,否则应配置存储桶级别 Amazon S3 阻止公有访问功能。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关如何在存储桶级别删除公有访问权限的信息,请参阅 Amazon S3 用户指南中的阻止公有访问您的 Amazon S3 存储

[S3.9] 应启用 S3 存储桶服务器访问日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-logging-enabled

时间表类型:触发器函数

参数:None(无)

此控件检查是否为 S3 存储桶启用了服务器访问日志。启用日志记录后,Amazon S3 会将源存储桶的访问日志传输到选定的目标存储桶。目标存储桶必须位于源存储桶所在的相同 Amazon 区域中且不得具有默认保留周期配置。如果启用了服务器访问日志,则此控制通过。目标日志存储桶不需要启用服务器访问日志记录,您应该取消对此存储桶的发现。

服务器访问日志记录详细地记录对存储桶提出的各种请求。服务器访问日志可以帮助安全和访问审计。有关更多信息,请参阅 Amazon S3 安全性最佳实践:启用 Amazon S3 服务器访问日志记录

修复

启用 S​​3 存储桶访问日志记录
  1. 登录到Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 从列表中选择存储桶。

  3. 请选择属性

  4. Server access logging(服务器访问日志记录)下,请选择 Edit(编辑)。

  5. 在 “服务器访问日志” 下,选择 “启用”。然后,选择 “保存更改”。

[S3.10] 启用版本控制的 S3 存储桶应配置生命周期策略

类别:识别 > 记录

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-version-lifecycle-policy-check

时间表类型:触发器函数

参数:None(无)

此控制检查启用了 Amazon Simple Storage Service (Amazon S3) 版本的存储桶是否配置了生命周期策略 如果未启用 Amazon S3 生命周期策略,则此规则将失败。

建议在 Amazon S3 存储桶上配置生命周期规则,因为这些规则可以帮助您定义您希望 Amazon S3 在对象的生命周期内执行的操作。

修复

有关在 Amazon S3 存储桶上配置生命周期的更多信息,请参阅设置存储桶的生命周期配置和管理存储生命周期

[S3.11] S3 存储桶应启用事件通知

类别:识别 > 记录

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-event-notifications-enabled

时间表类型:触发器函数

参数:None(无)

此控件检查是否在 Amazon S3 存储桶上启用了 S3 事件通知。如果未在存储桶上启用 S3 事件通知,则此控制将失败。

通过启用事件通知,当发生特定事件时,您将在 Amazon S3 存储桶上收到警报。例如,您可以收到对象创建、对象移除和对象恢复的通知。这些通知可以提醒相关团队注意可能导致未经授权的数据访问的意外或故意修改。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关检测 S3 存储桶和对象更改的信息,请参阅 Amazon S3 用户指南中的 Amazon S3 事件通知

[S3.12] 不应使用 S3 访问控制列表 (ACL) 来管理用户对存储区的访问

类别:保护 > 安全访问管理 > 访问控制

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-bucket-acl-prohibited

时间表类型:触发器函数

参数:None(无)

此控制检查 Amazon S3 存储桶是否通过 ACL 提供用户权限。如果将 ACL 配置为管理 S3 存储区上的用户访问权限,则控制会失败。

ACL 是早于 IAM 的传统访问控制机制。我们建议使用 IAM 策略或 S3 存储桶策略而不是 ACL,以便更轻松地管理对 S3 存储桶的访问。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关管理 S3 存储桶访问权限的更多信息,请参阅 A mazon S3 用户指南中的存储桶策略和用户策略。有关如何查看当前 ACL 权限的详细信息,请参阅 Amazon S3 用户指南中的访问控制列表 (ACL) 概述

[S3.13] S3 存储桶应配置生命周期策略

类别:保护 > 数据保护

严重性:

资源类型:AWS::S3::Bucket

Amazon Config 规则:s3-lifecycle-policy-check

时间表类型:触发器函数

参数:None(无)

此控件检查是否为 Amazon S3 存储桶配置了生命周期策略。如果没有为 S3 存储桶配置生命周期策略,则此控制将失败。

在 S3 存储桶上配置生命周期规则定义您希望 S3 在对象的生命周期内执行的操作。例如,您可以将对象转换为另一个存储类别,存档对象,或在指定时间段后删除它们。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关在 Amazon S3 存储桶上配置生命周期策略的信息,请参阅 A mazon S3 用户指南中的设置存储桶生命周期配置和管理存储生命周期。

[SageMaker.1] SageMaker 笔记本电脑实例不应直接访问互联网

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::SageMaker::NotebookInstance

Amazon Config 规则:sagemaker-notebook-no-direct-internet-access

时间表类型:定期

参数:None(无)

此控件检查 SageMaker 笔记本实例是否禁用了直接互联网访问。为此,它会检查 notebook 实例是否禁用了该DirectInternetAccess字段。

如果您配置的 SageMaker 实例没有 VPC,则默认情况下,您的实例上会启用直接互联网访问。您应该使用 VPC 配置您的实例,并将默认设置更改为 “禁用-通过 VPC 访问互联网”。

要使用笔记本电脑训练或托管模型,您需要访问互联网。要启用互联网访问,请确保您的 VPC 有 NAT 网关,并且您的安全组允许出站连接。要了解有关如何将笔记本实例Connect 到 VPC 中的资源的更多信息,请参阅 Amazon SageMaker 开发者指南中的将笔记本实例连接到 VPC 中的资源

您还应确保仅限授权用户访问您的 SageMaker 配置。限制用户修改 SageMaker 设置和资源的 IAM 权限。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(米兰)

  • Amazon GovCloud (美国东部)

修复

请注意,在创建笔记本实例后,您无法更改互联网访问设置。必须停止、删除和重新创建它。

将 SageMaker 笔记本电脑实例配置为拒绝直接互联网访问
  1. 通过 https://console.aws.amazon.com/sagemaker/ 打开 SageMaker 控制台

  2. 导航到笔记本实例

  3. 删除启用了直接互联网接入的实例。选择实例,选择操作,然后选择停止。

    实例停止后,选择操作,然后选择删除

  4. 选择创建笔记本实例。提供配置详情。

  5. 展开网络部分,然后选择 VPC、子网和安全组。在 “直接互联网访问” 下,选择 “禁用 — 通过 VPC 访问互联网”。

  6. 选择创建笔记本实例

有关更多信息,请参阅 Amazon SageMaker 开发者指南中的将笔记本实例Connect 到 VPC 中的资源

[SecretsManager.1] Secrets Manager 密钥应启用自动轮换

类别:保护 > 安全开发

严重性:

资源类型:AWS::SecretsManager::Secret

Amazon Config 规则:secretsmanager-rotation-enabled-check

时间表类型:触发器函数

参数:None(无)

此控件检查存储在中的密钥Amazon Secrets Manager是否配置了自动轮换。

Secrets Manager 帮助您改善组织的安全状况。密钥包括数据库凭证、密码和第三方 API 密钥。您可以使用 Secrets Manager 集中存储密钥、自动加密密钥、控制对密钥的访问以及安全、自动地轮换密钥。

Secrets Manager 可以轮换密钥。您可以使用轮换将长期机密替换为短期机密。轮换您的密钥限制了未经授权的用户可以使用已泄露的密钥的时间。因此,您应该经常轮换机密。要了解有关轮换的更多信息,请参阅《Amazon Secrets Manager用户指南》中的轮换Amazon Secrets Manager密钥

注意

亚太地区(雅加达)或亚太地区(大阪)区域不支持此控件。

修复

要修复此问题,您可以启用密钥的自动轮换。

启用密钥自动轮换
  1. https://console.aws.amazon.com/secretsmanager/ 打开 Secrets Manager 控制台

  2. 要查找需要轮换的密钥,请在搜索字段中输入密钥名称。

  3. 选择要轮换的密钥,这将显示密钥详细信息页面。

  4. 在 “旋转配置” 下,选择 “编辑旋转”

  5. 编辑旋转配置中,选择启用自动旋转

  6. 在 “选择旋转间隔” 中,选择旋转间隔。

  7. 选择一个 Lambda 函数进行轮换。有关自定义 Lambda 轮换函数的信息,请参阅Amazon Secrets Manager用户指南中的了解和自定义 Lambda 轮换函数

  8. 要配置轮换的密钥,请选择 Next

要了解有关 Secrets Manager 轮换的更多信息,请参阅Amazon Secrets Manager用户指南中的轮换Amazon Secrets Manager密钥

[SecretsManager.2] 配置为自动轮换的 Secrets Manager 密钥应成功轮换

类别:保护 > 安全开发

严重性:

资源类型:AWS::SecretsManager::Secret

Amazon Config 规则:secretsmanager-scheduled-rotation-success-check

时间表类型:触发器函数

参数:None(无)

此控件根据轮换时间表检查Amazon Secrets Manager密钥是否成功轮换。如果RotationOccurringAsScheduled是,则控制失败false。该控件不评估未配置轮换的密钥。

Secrets Manager 帮助您改善组织的安全状况。密钥包括数据库凭证、密码和第三方 API 密钥。您可以使用 Secrets Manager 集中存储密钥、自动加密密钥、控制对密钥的访问以及安全、自动地轮换密钥。

Secrets Manager 可以轮换密钥。您可以使用轮换将长期机密替换为短期机密。轮换您的密钥限制了未经授权的用户可以使用已泄露的密钥的时间。因此,您应该经常轮换机密。

除了将密钥配置为自动轮换外,您还应确保根据轮换时间表成功轮换这些密钥。

要了解有关轮换的更多信息,请参阅《Amazon Secrets Manager用户指南》中的轮换Amazon Secrets Manager密钥

修复

如果自动轮换失败,则 Secrets Manager 可能在配置中遇到了错误。

要在 Secrets Manager 中轮换密钥,您可以使用 Lambda 函数定义如何与拥有密钥的数据库或服务交互。

有关如何诊断和修复与密钥轮换相关的常见错误的帮助,请参阅Amazon Secrets Manager用户指南中的解决密钥Amazon Secrets Manager轮换问题。

[SecretsManager.3] 移除未使用的Secrets Manager 密钥

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::SecretsManager::Secret

Amazon Config 规则:secretsmanager-secret-unused

时间表类型:定期

参数:None(无)

此控件检查您的密钥是否在指定的天数内被访问。默认值为 90 天。如果在规定的天数内未访问密钥,则此控制将失败。

删除未使用的密钥与轮换密钥同样重要。未使用的密钥可能会被其以前的用户滥用,他们不再需要访问这些密钥。此外,随着越来越多的用户获得访问密钥的权限,可能有人对其进行了错误的处理并将其泄露给未经授权的实体,这增加了滥用的风险。删除未使用的密钥有助于撤消不再需要的用户的秘密访问权限。它还有助于降低使用Secrets Manager 的成本。因此,定期删除未使用的密钥至关重要。

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以从 Secrets Manager 控制台中删除非活动密钥。

删除不活跃的秘密
  1. https://console.aws.amazon.com/secretsmanager/ 打开 Secrets Manager 控制台

  2. 要找到密钥,请在搜索框中输入密钥名称。

  3. 选择要删除的秘密。

  4. 在 “密钥详细信息” 下,从 “操作” 中选择 “删除密钥”。

  5. 在 “计划密钥删除” 下,输入删除密钥之前要等待的天数。

  6. 选择计划删除

[SecretsManager.4] Secrets Manager 密钥应在指定的天数内轮换

类别:保护 > 安全访问管理

严重性:

资源类型:AWS::SecretsManager::Secret

Amazon Config 规则:secretsmanager-secret-periodic-rotation

时间表类型:定期

参数:

  • 轮换周期:默认为 90 天

此控件检查您的密钥是否在 90 天内至少轮换过一次。

轮换密钥可以帮助您降低在Amazon账户中未经授权使用您的密钥的风险。示例包括数据库凭证、密码、第三方 API 密钥,甚至是任意文本。如果您很长一段时间未更改密钥,密钥泄露的可能性就会增大。

随着越来越多的用户获得访问密钥的权限,更有可能有人不当处理该密钥并将其泄露给未经授权的实体。密钥可能会通过日志和缓存数据泄露出去。密钥可能会共享用于调试目的,但在调试完成后未更改或撤销。出于所有这些原因,密钥应该频繁地轮换。

您可以将您的密钥配置为自动轮换Amazon Secrets Manager。通过自动轮换,您可以将长期机密替换为短期机密,从而显著降低泄露的风险。

Security Hub 建议你启用Secrets Manager 的轮换。要了解有关轮换的更多信息,请参阅《Amazon Secrets Manager用户指南》中的轮换Amazon Secrets Manager密钥

注意

以下区域不支持此控件:

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以在 Secrets Manager 控制台中启用自动密钥轮换。

启用密钥轮换
  1. https://console.aws.amazon.com/secretsmanager/ 打开 Secrets Manager 控制台

  2. 要找到密钥,请在搜索框中输入密钥名称。

  3. 选择要显示的秘密。

  4. 在 “旋转配置” 下,选择 “编辑旋转”

  5. 编辑旋转配置中,选择启用自动旋转

  6. 选择旋转间隔中,选择旋转间隔。

  7. 选择用于轮换的 Lambda 函数。

  8. 选择 Next(下一步)

  9. 将密钥配置为自动轮换后,在 “轮换配置” 下,选择 “立即轮换密钥”。

[SNS.1] SNS 主题应使用以下方法进行静态加密Amazon KMS

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::SNS::Topic

Amazon Config 规则:sns-encrypted-kms

时间表类型:触发器函数

参数:None(无)

此控件检查 SNS 主题是否使用静态加密Amazon KMS。

对静态数据进行加密可降低存储在磁盘上的数据被未经身份验证的用户访问的风险Amazon。它还添加了另一组访问控制,以限制未经授权的用户访问数据的能力。例如,需要有 API 权限才能解密数据,然后才能读取数据。SNS 主题应进行静态加密,以增加安全层。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的静态加密

修复

要修复此问题,请更新您的 SNS 主题以启用加密。

对未加密的 SNS 主题进行加密
  1. 通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home

  2. 在导航窗格中,选择 Topics(主题)

  3. 选择要加密主题的名称。

  4. 选择 Edit(编辑)。

  5. 在 “加密” 下,选择 “启用加密”。

  6. 选择用于加密主题的 KMS 密钥。

  7. 选择 Save changes(保存更改)。

[SNS.2] 应为发送到主题的通知消息启用传送状态日志功能

类别:识别 > 记录

严重性:

资源类型:AWS::SNS::Topic

Amazon Config 规则:sns-topic-message-delivery-notification-enabled

时间表类型:触发器函数

参数:None(无)

此控件检查是否启用了发送到 Amazon SNS 主题的通知消息的传输状态的日志记录功能。如果未启用邮件的传送状态通知,则此控制将失败。

日志记录是保持服务的可靠性、可用性和性能的重要方面。记录消息传送状态有助于提供操作见解,例如:

  • 了解消息是否已传输到 Amazon SNS 终端节点。

  • 识别从 Amazon SNS 终端节点发送到 Amazon SNS 的响应。

  • 确定消息停留时间(发布时间戳与将消息转交给 Amazon SNS 终端节点之间的时间差)。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要为主题配置传输状态日志,请参阅亚马逊简单通知服务开发者指南中的 Amazon SNS 消息传输状态

[SQS.1] 应对 Amazon SQS 队列进行静态加密

类别:保护 > 数据保护 > 静态数据加密

严重性:

资源类型:AWS::SQS::Queue

Amazon Config 规则:sqs-queue-encrypted(由Security Hub 开发的自定义规则)

时间表类型:触发器函数

参数:None(无)

此控件检查 Amazon SQS 队列是否已静态加密。如果您使用 Amazon SQS 托管密钥 (SSE-SQS) 或 () 密钥Amazon Key Management Service (SSE-KMSAmazon KMS),则控制权将通过。

服务器端加密 (SSE) 允许您在加密队列中传输敏感数据。为了保护队列中的消息内容,SSE 使用 KMS 密钥。有关更多信息,请参阅 Amazon Simple Queue Service 开发人员指南中的静态加密

修复

有关使用管理 SSE 的信息Amazon Web Services Management Console,请参阅 Amazon Simple Queue Service 开发人员指南中的为队列(控制台)配置服务器端加密 (SSE)。

[SSM.1] EC2 实例应由以下人员管理Amazon Systems Manager

类别:识别 > 清单

严重性:

资源类型:AWS::EC2::Instance

Amazon Config 规则:ec2-instance-managed-by-systems-manager

时间表类型:触发器函数

参数:None(无)

此控件会检查您账户中已停止和正在运行的 EC2 实例是否由托管Amazon Systems Manager。Systems Manager 是一项Amazon服务,可以用来查看和控制您的Amazon基础设施。

为了帮助您维护安全性和合规性,Systems Manager 会扫描已停止和正在运行的托管实例。托管实例是一个已配置为与 Systems Manager 一起使用的机器。然后,Systems Manager 会报告其发现的任何违反政策的行为或采取纠正措施。Systems Manager 还帮助您配置和维护托管实例。

要了解更多信息,请参阅Amazon Systems Manager用户指南

修复

您可以使用 Systems Manager 控制台修复此问题。

为确保 EC2 实例由Systems Manager 管理
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航菜单中,选择快速设置

  3. 选择 Create(创建)

  4. 在 “配置类型” 下,选择 “主机管理”,然后选择 “下一步”。

  5. 在配置屏幕上,您可以保留默认选项。

    您可以选择进行以下更改:

    1. 如果您使用 CloudWatch 监控 EC2 实例,请选择安装并配置 CloudWatch 代理,然后每 30 天更新一次 CloudWatch 代理

    2. 在 “目标” 下,选择管理范围以确定应用此配置的账户和区域。

    3. 实例配置文件选项下,选择将所需的 IAM 策略添加到附加到您的实例的现有实例配置文件中

  6. 选择 Create(创建)

要确定您的实例是否支持 Systems Manager 关联,请参阅Amazon Systems Manager用户指南中的 Systems Manager 先决条件

[SSM.2] 由 Systems Manager 管理的所有 EC2 实例都应符合补丁要求

类别:检测 > 检测服务

严重性:

资源类型:AWS::SSM::PatchCompliance

Amazon Config 规则:ec2-managedinstance-patch-compliance-status-check

时间表类型:触发器函数

参数:None(无)

此控件检查 Amazon EC2 Systems Manager 补丁合规性的合规性状态是在实例上安装补丁NON_COMPLIANT之后COMPLIANT还是处于合规状态。它仅检查由系统管理器补丁管理器管理的实例。

根据您的组织要求对 EC2 实例进行完全修补,可减少 Amazon 账户面临的攻击面。

注意

以下区域不支持此控件:

  • 非洲(开普敦)

  • Europe (Milan)

  • Middle East (Bahrain)

修复

要修复此问题,请在不合规的实例上安装所需的补丁。

修复不合规的补丁
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在 “节点管理” 下,选择 “运行命令”,然后选择 “运行命令”。

  3. 选择 Amazon- 旁边的按钮RunPatchBaseline。

  4. Operation (操作) 改为 Install (安装)

  5. 选择 Choose instances manually (手动选择实例),然后选择不合规的实例。

  6. 在页面底部选择 Run (运行)

  7. 在该命令完成后,要监控修补的实例的新合规性状态,请在导航窗格中选择 Compliance (合规性)

有关使用 Systems Manager 文档为托管实例打补丁的更多信息,请参阅Amazon Systems Manager用户指南中的关于修补实例的 SSM 文档使用 Systems Manager 运行命令运行命令

[SSM.3] 由 Systems Manager 管理的实例的关联合规状态应为COMPLIANT

类别:检测 > 检测服务

严重性:

资源类型:AWS::SSM::AssociationCompliance

Amazon Config 规则:ec2-managedinstance-association-compliance-status-check

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon Systems Manager关联合规性的状态是处于COMPLIANT还是关联在实例上运行NON_COMPLIANT之后。如果关联合规状态为,则控制通过COMPLIANT

状态管理器关联是分配给您的托管实例的配置。该配置定义要在实例上保持的状态。例如,关联可以指定必须在实例上安装并运行防病毒软件,或者必须关闭特定端口。

创建一个或多个 State Manager 关联后,您可以立即获得合规性状态信息。您可以在控制台中查看合规性状态,也可以在响应Amazon CLI命令或相应的 Systems Manager API 操作时查看合规性状态。对于关联,“配置合规性” 显示合规性状态(CompliantNon-compliant)。它还显示分配给关联的严重性级别,例如CriticalMedium

要了解有关州经理关联合规性的更多信息,请参阅Amazon Systems Manager用户指南中的关于州经理关联合规性

注意

非洲(开普敦)或欧洲(开普敦)或欧洲(米兰)不支持此控件。

修复

关联失败可能与不同的事物有关,包括目标和 SSM 文档名称。要修复此问题,必须首先确定并调查这种关联。然后,您可以更新关联以更正特定问题。

您可以编辑关联以指定新名称、计划、严重级别或目标。编辑关联后,Amazon Systems Manager 将创建新版本。

调查和更新失败的关联
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格的 “节点管理” 下,选择 “队列管理器”。

  3. 选择关联状态为 “失败” 的实例 ID。

  4. 请选择 View details (查看详细信息)

  5. 选择 “关联”。

  6. 记下关联状态为 “失败” 的关联的名称。这是你需要调查的关联。在下一步骤中,您需要使用关联名称。

  7. 在导航窗格的 “节点管理” 下,选择 “状态管理器”。搜索协会名称,然后选择该协会。

  8. 确定问题后,编辑失败的关联以更正问题。有关如何编辑关联的信息,请参阅编辑关联

有关创建和编辑状态管理器关联的更多信息,请参阅《Amazon Systems Manager用户指南》中的 Systems Manager 中使用关联

[SSM.4] SSM 文档不应公开

类别:保护 > 安全网络配置 > 资源不可公开访问

严重性:重大

资源类型:AWS::SSM::Document

Amazon Config 规则:ssm-document-not-public

时间表类型:定期

参数:None(无)

此控件检查账户拥有的Amazon Systems Manager文件是否公开。如果所有者的 SSM 文档Self是公开的,则此控制将失效。

公开的 SSM 文档可能允许意外访问您的文档。公开 SSM 文档可以公开有关您的账户、资源和内部流程的宝贵信息。

除非您的使用案例需要启用公开共享,否则 Secury Hub 建议您为拥有的 SSystems Manager 文档启用阻止公开共享设置Self

注意

以下区域不支持此控件:

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

有关禁用 SSM 文档的公共访问权限的更多信息,请参阅Amazon Systems Manager用户指南中的修改共享 SSM 文档的权限和共享 SSM 文档的最佳实践

[WAF.1] 应启用Amazon WAF经典的全球 Web ACL 日志记录

类别:识别 > 记录

严重性:

资源类型:AWS::WAF::WebACL

Amazon Config 规则:waf-classic-logging-enabled

时间表类型:定期

参数:None(无)

此控件检查是否为Amazon WAF全局 Web ACL 启用了日志记录。如果未启用 Web ACL 的日志记录,则此控制将失败。

日志记录是保持Amazon WAF全球的可靠性、可用性和性能的重要方面。这是许多组织的业务和合规性要求,允许您对应用程序行为进行故障排除。它还提供有关流量的详细信息,这些信息由所连接的 Web ACL 进行分析Amazon WAF。

注意

以下区域不支持此控件:

  • 美国东部(俄亥俄州)

  • 美国西部(加利福尼亚北部)

  • 美国西部(俄勒冈)

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • Asia Pacific (Mumbai)

  • Asia Pacific (Osaka)

  • Asia Pacific (Seoul)

  • 亚太地区(新加坡)

  • 亚太地区(悉尼)

  • 亚太区域(东京)

  • 加拿大(中部)

  • China (Beijing)

  • China (Ningxia)

  • 欧洲(法兰克福)

  • 欧洲(爱尔兰)

  • 欧洲(伦敦)

  • 欧洲(米兰)

  • Europe (Paris)

  • Europe (Stockholm)

  • Middle East (Bahrain)

  • 南美洲(圣保罗)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

您可以从 Kinesis Data Firehose 控制台启用 Web ACL 的日志记录。

为 Web ACL 启用日志记录
  1. 打开 Kinesis Data Firehose 控制台,网址为 https://console.aws.amazon.com/firehose/

  2. 创建 Kinesis Data Firehose 传输流。

    名称必须以前缀aws-waf-logs-开头。例如,aws-waf-logs-us-east-2-analytics

    在您运营的区域内创建 Kinesis DPUT ata Firehose 传输流。如果您为 Amazon 捕获日志 CloudFront,请在美国东部(弗吉尼亚北部)创建传输流。有关更多信息,请参阅 Amazon Kinesis Data Firehose 开发人员指南中的创建 Amazon Kinesis Data Firehose 传输流

  3. 从 “服务” 中选择 WAF & Shield。然后选择 “切换到Amazon WAF经典”。

  4. 筛选器中,选择全局 (CloudFront)

  5. 选择要为其启用日志记录的 Web ACL。

  6. 在 “记录” 下,选择 “启用日志记录”。

  7. 选择您之前创建的 Kinesis Data Firehose 传输流。您必须选择名称以aws-waf-logs-开头的传输流。

  8. 选择启用日志记录

[WAF.2] WAF 区域规则应至少具有一个条件

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAFRegional::Rule

Amazon Config 规则:waf-regional-rule-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF区域规则是否至少具有一个条件。如果规则中不存在任何条件,则控制失败。

WAF 区域规则可以包含多个条件。规则的条件允许流量检查并采取定义的操作(允许、阻止或计数)。没有任何条件,交通未经检查即通过。WAF Regional 规则没有条件,但其名称或标签提示允许、封禁或计数,可能会导致错误地假设其中一项操作正在发生。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要向空规则添加条件,请参阅Amazon WAF开发者指南中的在规则中添加和删除条件

[WAF.3] WAF 区域规则组应至少有一条规则

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAFRegional::RuleGroup

Amazon Config 规则:waf-regional-rulegroup-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF区域规则组是否至少有一条规则。如果规则组中不存在任何规则,则控制失败。

一个 WAF 区域规则组可以包含多个规则。规则的条件允许流量检查并采取定义的操作(允许、阻止或计数)。没有任何规则,交通未经检查即通过。WAF Regional 规则组没有规则,但其名称或标签提示允许、封禁或计数,可能会导致错误地假设其中一项操作正在发生。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • 亚太地区(大阪)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

要向空规则组添加规则和规则条件,请参阅Amazon WAF开发者指南中的在Amazon WAF经典规则组中添加和删除规则和在规则中添加和删除条件

[WAF.4] WAF Classic Regional Web ACL 应至少包含一个规则或规则组

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAFRegional::WebACL

Amazon Config 规则:waf-regional-webacl-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF Classic Regional Web ACL 是否包含任何 WAF 规则或 WAF 规则组。如果 Web ACL 不包含任何 WAF 规则或规则组,则此控制将失败。

WAF 区域 Web ACL 可以包含一组用于检查和控制 Web 请求的规则和规则组的集合。如果 Web ACL 为空,则网络流量可以在不被 WAF 检测或处理的情况下通过,具体取决于默认操作。

注意

以下区域不支持此控件:

  • 亚太地区(雅加达)

  • China (Beijing)

  • China (Ningxia)

  • Amazon GovCloud (美国东部)

  • Amazon GovCloud (美国西部)

修复

向空的 Web ACL 添加规则或规则组
  1. 通过 https://console.aws.amazon.com/wafv2/ 打开Amazon WAF控制台。

  2. 在导航窗格中,选择 ScheduledAmazon WAF s cheduled,然后选择 Web ACL

  3. 筛选器中,选择空 Web ACL 所在的区域。

  4. 选择空 Web ACL 的名称。

  5. 选择规则,然后选择编辑 Web ACL

  6. 在 “规则” 中,选择规则或规则组,然后选择 “将规则添加到 Web ACL”。

  7. 此时,如果您要向 Web ACL 添加多个规则或规则组,则可以修改 Web ACL 中的规则顺序。

  8. 选择 Update(更新)。

[WAF.6] WAF 全局规则应至少具有一个条件

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAF::Rule

Amazon Config 规则:waf-global-rule-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF全局规则是否包含任何条件。如果规则中不存在任何条件,则控制失败。

WAF 全局规则可以包含多个条件。规则的条件允许流量检查并采取定义的操作(允许、阻止或计数)。没有任何条件,交通未经检查即通过。WAF 全局规则没有条件,但其名称或标签提示允许、封禁或计数,可能会导致错误地假设其中一项操作正在发生。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关创建规则和添加条件的说明,请参阅Amazon WAF开发者指南中的创建规则和添加条件

[WAF.7] WAF 全局规则组应至少有一条规则

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAF::RuleGroup

Amazon Config 规则:waf-global-rulegroup-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF全局规则组是否至少有一条规则。如果规则组中不存在任何规则,则控制失败。

一个 WAF 全局规则组可以包含多个规则。规则的条件允许流量检查并采取定义的操作(允许、阻止或计数)。没有任何规则,交通未经检查即通过。WAF 全局规则组没有规则,但其名称或标签提示允许、封禁或计数,可能会导致错误地假设其中一项操作正在发生。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

有关向规则组添加规则的说明,请参阅Amazon WAF开发者指南中的创建Amazon WAF经典规则组

[WAF.8] WAF 全球 Web ACL 应至少包含一个规则或规则组

类别:保护 > 安全网络配置

严重性:

资源类型:AWS::WAF::WebACL

Amazon Config 规则:waf-global-webacl-not-empty

时间表类型:触发器函数

参数:None(无)

此控件检查Amazon WAF全局 Web ACL 是否包含至少一个 WAF 规则或 WAF 规则组。如果 Web ACL 不包含任何 WAF 规则或规则组,则控制失败。

WAF 全球 Web ACL 可以包含一组用于检查和控制 Web 请求的规则和规则组的集合。如果 Web ACL 为空,则网络流量可以在不被 WAF 检测或处理的情况下通过,具体取决于默认操作。

注意

此控件仅适用于美国东部(弗吉尼亚北部)。

修复

向空的 Web ACL 添加规则或规则组
  1. 通过 https://console.aws.amazon.com/wafv2/ 打开Amazon WAF控制台。

  2. 在导航窗格中,选择 ScheduledAmazon WAF s cheduled,然后选择 Web ACL

  3. 在 “筛选器” 中,选择 “全局” (CloudFront)

  4. 选择空 Web ACL 的名称。

  5. 选择规则,然后选择编辑 Web ACL

  6. 在 “规则” 中,选择规则或规则组,然后选择 “将规则添加到 Web ACL”。

  7. 此时,如果您要向 Web ACL 添加多个规则或规则组,则可以修改 Web ACL 中的规则顺序。

  8. 选择 Update(更新)。