使用AWS Security Hub自动业务上下文验证加速安全发现审查

本文介绍如何通过自动化业务上下文验证加速AWS Security Hub安全发现审查,实现安全例外的自动化管理与补偿控制验证,支持13种验证方法并保持完整审计追踪。

如何通过AWS Security Hub中的自动化业务上下文验证加速安全发现审查

安全团队需要高效验证和记录AWS Security Hub发现的例外情况,同时保持适当的治理。企业安全团队需要确保安全最佳实践的例外得到适当验证和记录,而开发团队需要简化的流程来实施和验证补偿控制。

挑战

Security Hub提供跨AWS账户的全面安全态势视图。但在实际场景中,会遇到安全最佳实践例外的合法业务原因。例如:

  • Amazon GuardDuty未启用:由于替代监控解决方案,组织推迟了Amazon GuardDuty的实施,但需要补偿控制,如Amazon VPC流日志、Amazon CloudWatch警报和组织特定的事件响应程序。
  • Amazon S3阻止公共访问未启用:营销团队可能需要公共Amazon S3存储桶用于网站资源,但应实施以下补偿控制:
    • Amazon S3前的Amazon CloudFront分发
    • 在S3存储桶上启用带有AWS KMS密钥的服务器端加密(SSE-KMS)
    • 启用Amazon S3存储桶日志记录
    • 启用Amazon S3存储桶版本控制
    • 用于可疑访问模式和全面访问日志记录的Amazon CloudWatch警报

管理安全最佳实践的例外可能具有挑战性,通常涉及多个步骤。安全团队花费大量时间审查例外请求、定义和验证补偿控制,开发人员必须随后实施和验证这些控制。必须包含多个团队来创建和管理合规性和审计目的的文档。

解决方案概述

该解决方案提供示例代码和CloudFormation模板,组织可以部署这些模板来自动验证被抑制的Security Hub发现的补偿控制,同时保持安全团队和开发团队之间的适当职责分离。

架构

图1说明了解决方案工作流程,当开发人员将Security Hub发现的工作流状态更改为SUPPRESSED以请求业务合理的安全例外时启动。该过程以解决方案将验证结果作为注释添加到相应的Security Hub发现结束,保持例外请求和验证结果的完整审计追踪。

工作流程包括以下步骤:

  1. 开发人员将Security Hub发现状态更改为SUPPRESSED
  2. EventBridge检测到状态更改为SUPPRESSED
  3. EventBridge规则将事件发送到Amazon SQS队列
  4. Lambda函数从Amazon SQS队列检索消息
  5. Lambda函数从DynamoDB补偿控制表获取补偿控制
  6. Lambda函数使用适当的AWS服务API验证每个控制
  7. 为每个验证收集证据并存储在DynamoDB中
  8. 发现验证结果和时间戳存储在DynamoDB Findings表中
  9. 发现验证尝试的版本历史记录存储在DynamoDB History表中
  10. 如果安全团队提供的控制通过验证,发现保持SUPPRESSED,并在相应的Security Hub发现中添加带有调整严重性信息的注释。如果这些控制之一验证失败,发现状态更改为NOTIFIED,并在相应的Security Hub发现中添加失败控制的注释。

工作原理

该解决方案专门由组织安全团队部署和管理。只有安全团队应具有部署AWS CloudFormation堆栈、修改Lambda验证代码、添加/修改补偿控制或访问四个DynamoDB表(Controls、Findings、History、Evidence)的权限。

开发人员仅限于两个特定操作:抑制Security Hub发现和读取补偿控制要求。这种严格的角色分离有助于适当的治理,并有助于防止绕过安全验证逻辑。

工作方式:

  1. 安全团队定义控制:安全团队为特定Security Hub发现类型建立补偿控制,并将其存储在DynamoDB表中。这有助于确保批准的例外遵循安全批准的指南并保持合规标准。

  2. 支持的验证类型:解决方案支持13种验证方法以适应不同的安全要求:

验证类型 描述 示例用例
CONFIG_RULE 使用AWS Config规则验证 对于GuardDuty未启用发现:vpc-flow-logs-enabled Config规则有助于确保监控网络流量
API_CALL 使用直接AWS API调用验证 对于Amazon S3公共访问发现:API调用验证CloudFront分发存在于S3存储桶前
SECURITY_HUB_CONTROL 使用Security Hub控制状态验证 对于GuardDuty未启用发现:CloudTrail.1控制通过确认全面的API日志记录
CLOUDWATCH 使用CloudWatch警报验证 对于GuardDuty未启用发现:监控可疑API调用和网络流量模式的警报
CLOUDTRAIL 验证CloudTrail配置 对于GuardDuty未启用发现:具有日志验证和CloudWatch集成的多区域CloudTrail
  1. 开发人员实施控制:当Security Hub发现被抑制时,开发人员必须实施安全团队定义的所需补偿控制。

部署和配置

您可以使用提供的脚本部署解决方案:

1
2
3
4
git clone https://github.com/aws-samples/sample-automated-securityhub-validator.git
cd automated-securityhub-validator
cd scripts
./create-roles-quotas-check.sh

部署脚本创建包含必要资源的CloudFormation堆栈:

  • 用于控制、发现、历史和证据的DynamoDB表
  • 用于验证和Security Hub更新的Lambda函数
  • 用于捕获发现状态更改的EventBridge规则
  • 用于消息处理的Amazon SQS队列和死信队列(DLQ)
  • 具有最小权限的IAM角色

测试解决方案

要测试解决方案,您可以使用以下示例场景验证GuardDuty发现的补偿控制:

开发人员希望获得Security Hub发现GuardDuty.1的安全例外:应启用GuardDuty,由于成本限制,开发人员的组织未实施GuardDuty,并请求其组织安全团队的安全例外。

安全团队提供的补偿控制包括:

  • 必须启用Amazon VPC流日志以进行网络监控
  • 启用CloudWatch警报以监控可疑活动

测试步骤:

  1. 安全团队使用add-controls-role-based.sh实用程序创建补偿控制
  2. 开发人员实施所需的控制
  3. 开发人员将Security Hub发现工作流状态更改为SUPPRESSED
  4. 自动验证过程开始
  5. 查看Lambda函数日志和Security Hub发现注释中的验证结果

清理

为避免产生持续费用,使用以下命令清理为此文章创建的资源:

1
./cleanup.sh

此部署过程旨在简单直接,并保持安全最佳实践,如加密、最小权限和职责分离。

结论

在本文中,我们展示了如何实施一个解决方案,安全团队可以使用该解决方案为AWS Security Hub发现定义补偿控制并自动验证其实施。我们介绍了管理安全例外的挑战,并演示了此解决方案如何帮助弥合安全要求与实际实施之间的差距。

该解决方案提供了一个结构化的工作流程,安全团队在其中定义可接受的补偿控制,开发人员实施这些控制,自动化系统验证其有效性。支持13种不同的验证类型,从AWS Config规则到流程文档,该解决方案为各种安全场景提供全面覆盖。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计