在多账户环境中关闭所有 Security Hub 成员账户的安全标准控件 - AWS Prescriptive Guidance

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

在多账户环境中关闭所有 Security Hub 成员账户的安全标准控件

由迈克尔·富尔比尔 (AWS) 和艾哈迈德·巴克里 () 创作 AWS

摘要

重要

AWSSecurity Hub 现在支持跨账户对安全标准和控制进行集中配置。这项新功能解决了该APG模式下解决方案所涵盖的许多场景。在以这种模式部署解决方案之前,请参阅 Sec urity Hub 中的中央配置

在 Amazon Web Services (AWS) 云中,只能从一个AWS账户中手动关闭(禁用)S AWS ec urity Hub 标准控件,例如 AWS Foundations CIS AWS B enchmark 或 Foundational Security 最佳实践。在多账户环境中,您无法通过 “一键式”(即一次API通话)关闭多个 Security Hub 成员账户的控制。此模式演示如何一键关闭 Security Hub 管理员账户管理的所有 Security Hub 成员账户的 Security Hub 标准控件。

先决条件和限制

先决条件

限制

  • 此模式仅适用于多账户环境(即单个 Security Hub 管理员账户管理多个成员账户)。

  • 如果您在短时间内更改了大量控件,则事件启动会导致多次并行调用。这可能导致API限制并导致调用失败。例如,如果您使用 Sec urity Hub 控件以编程方式更改许多控件,则可能会发生这种情况。CLI

架构

目标技术堆栈

  • Amazon DynamoDB

  • Amazon EventBridge

  • AWS CLI

  • AWS Lambda

  • AWS SAM CLI

  • AWS Security Hub

  • AWS Step Functions

目标架构

下图显示了 Step Functions 工作流程的示例。该工作流程关闭了多个 Security Hub 成员账户(从 Security Hub 管理员账户中查看)的 Security Hub 标准控件。

AWSStep Function 工作流程

图表包括以下工作流程:

  1. EventBridge 规则按每日计划启动并调用状态机。您可以通过更新AWS CloudFormation 模板中的 Schedule 参数来修改规则的时间。

  2. 每当在 Security Hub 管理员帐户中打开或关闭控件时,就会启动 EventBridge 规则。

  3. Step Functions 状态机将安全标准控件(即开启或关闭的控件)的状态从 Security Hub 管理员账户发布到成员账户。

  4. 跨账户 AWS Identity and Access Management (IAM) 角色部署在每个成员账户中,并由状态机担任。状态机在每个成员账户中打开或关闭控件。

  5. DynamoDB 表包含异常情况以及有关在特定账户中打开或关闭哪些控件的信息。此信息将覆盖从 Security Hub 管理员账户中获取的指定成员账户的配置。

注意

计划 EventBridge 规则的目的是确保新添加的 Security Hub 成员账户与现有账户具有相同的控制状态。

工具

  • Amazon DynamoDB 是一项完全托管的SQL无数据库服务,可提供快速、可预测和可扩展的性能。

  • Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。例如,AWSLambda 函数、使用API目标的HTTP调用终端节点或其他账户中的事件总线。AWS

  • AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。

  • AWSLambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

  • AWS无服务器应用程序模型 (AWSSAM) 是一个开源框架,可帮助您在云中构建无服务器应用程序。AWS

  • AWSS@@ ecurity Hub 提供了您的安全状态的全面视图AWS。它还可以帮助您根据安全行业标准和最佳实践检查您的AWS环境。

  • AWSSt ep Functions 是一项无服务器编排服务,可帮助您组合 Lam AWS bda 函数和其他AWS服务来构建业务关键型应用程序。

代码

此模式的代码可在 Sec GitHub AWSurity Hub 跨账户控制禁用程序存储库中找到。代码存储库包含以下文件和文件夹:

  • UpdateMembers/template.yaml— 此文件包含部署在 Security Hub 管理员帐户中的组件,包括 Step Functions 状态机和 EventBridge 规则。

  • member-iam-role/template.yaml— 此文件包含在成员账户中部署跨账户IAM角色的代码。

  • stateMachine.json – 此文件定义了状态机的工作流程。

  • GetMembers/index.py— 此文件包含GetMembers状态机的代码。脚本检索所有现有 Security Hub 成员账户中安全标准控件的状态。

  • UpdateMember/index.py – 此文件包含了更新每个成员账户控件状态的脚本。

  • CheckResult/index.py – 此文件包含一个用于检查工作流程调用状态(已接受或失败)的脚本。

操作说明

任务描述所需技能

确定 Security Hub 管理员账户的 ID。

设置 Security Hub 管理员账户,然后记下该管理员账户的 ID。

云架构师

部署包含成员账户中跨账户IAM角色的 CloudFormation 模板。

要在 Security Hub 管理员账户管理的所有成员账户中部署 member-iam-role/template.yaml 模板,请运行以下命令:

aws cloudformation deploy --template-file member-iam-role/template.yaml --capabilities CAPABILITY_NAMED_IAM --stack-name <your-stack-name> --parameter-overrides SecurityHubAdminAccountId=<your-account-ID>

SecurityHubAdminAccountId参数必须与您之前记下的 Security Hub 管理员账户 ID 相匹配。

AWS DevOps
任务描述所需技能

Package 将包含状态机的 CloudFormation 模板打包AWSSAM。

要在 Security Hub 管理员账户中打包 UpdateMembers/template.yaml 模板,请运行以下命令:

sam package --template-file UpdateMembers/template.yaml --output-template-file UpdateMembers/template-out.yaml --s3-bucket <amzn-s3-demo-bucket>
注意

您的亚马逊简单存储服务 (Amazon S3) Simple Storage Service 存储桶必须位于部署 CloudFormation 模板的AWS同一区域。

AWS DevOps

在 Security Hub 管理员帐户中部署打包的 CloudFormation 模板。

要在 Security Hub 管理员帐户中部署 CloudFormation 模板,请运行以下命令:

aws cloudformation deploy --template-file UpdateMembers/template-out.yaml --capabilities CAPABILITY_IAM --stack-name <your-stack-name>

member-iam-role/template.yaml模板中,M emberIAMRole Path 参数必须与IAMRolePath参数相匹配,M emberIAMRole 名称必须匹配IAMRoleName

注意

由于 Security Hub 是一项区域服务,因此您必须在每个AWS区域单独部署模板。请务必先将解决方案打包到每个区域的 S3 存储桶中。

AWS DevOps

相关资源