本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在多账户环境中关闭所有 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 管理员账户组成
AWS命令行界面 (AWSCLI) 版本 2,已安装
限制
此模式仅适用于多账户环境(即单个 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 标准控件。
图表包括以下工作流程:
EventBridge 规则按每日计划启动并调用状态机。您可以通过更新AWS CloudFormation 模板中的 Schedule 参数来修改规则的时间。
每当在 Security Hub 管理员帐户中打开或关闭控件时,就会启动 EventBridge 规则。
Step Functions 状态机将安全标准控件(即开启或关闭的控件)的状态从 Security Hub 管理员账户发布到成员账户。
跨账户 AWS Identity and Access Management (IAM) 角色部署在每个成员账户中,并由状态机担任。状态机在每个成员账户中打开或关闭控件。
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 管理员账户管理的所有成员账户中部署
该 | AWS DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
Package 将包含状态机的 CloudFormation 模板打包AWSSAM。 | 要在 Security Hub 管理员账户中打包
注意您的亚马逊简单存储服务 (Amazon S3) Simple Storage Service 存储桶必须位于部署 CloudFormation 模板的AWS同一区域。 | AWS DevOps |
在 Security Hub 管理员帐户中部署打包的 CloudFormation 模板。 | 要在 Security Hub 管理员帐户中部署 CloudFormation 模板,请运行以下命令:
在 注意由于 Security Hub 是一项区域服务,因此您必须在每个AWS区域单独部署模板。请务必先将解决方案打包到每个区域的 S3 存储桶中。 | AWS DevOps |
相关资源
指定 Security Hub 管理员帐户(S AWS ecurity Hub 文档)
处理错误、重试以及向 Step Function 状态机执行添加警报
(AWS博客文章)