亚马逊AWS官方博客
九项 AWS Security Hub 最佳实践
Original URL: https://aws.amazon.com/cn/blogs/security/nine-aws-security-hub-best-practices/
2020年7月21日: 更新了在您授权的各区域内启用Security Hub的相关建议。
AWS Security Hub 是一项安全与合规性服务,于2019年6月25日正式推出通用版本。Security Hub在各个区域的统一仪表板中为用户提供涵盖多个AWS账户的安全性与合规性状态的直观支持。通过此项服务,您可以监控各关键设置,保证AWS账户始终安全可靠,同时确保能够时刻关注环境中出现的各类变化、并有针对性地做出快速反应。
AWS Security Hub汇总,组织并按优先级排列受支持的AWS服务(在发布本文时为Amazon GuardDuty,Amazon Inspector和Amazon Macie)以及来自各种AWS合作伙伴安全解决方案的安全性结果。AWS Security Hub还使用服务链接的AWS Config规则以及其他分析技术,基于自动化,资源级和账户级配置以及合规性检查,生成自己的发现。这些检查有助于您使AWS账户符合行业标准和最佳实践,例如Internet安全中心(CIS)AWS Foundations标准。
在本文中,我们将分享九项最佳实践,帮助您更高效地使用AWS Security Hub。
1. 使用AWS Labs脚本在各区域内的所有AWS账户中启用Security Hub,并为现有Amazon GuardDuty建立主/成员层次结构
最佳做法是,即使是在不经常使用的区域中,您也应持续监控所有AWS账户的所处区域是否存在未授权行为或配置错误。AWS已经建议用户使用监控服务(例如AWS Config与AWS CloudTrail)时执行此操作。我们建议您在已授权的每个区域中启用Security Hub,并使用服务控制策略(SCP)以保证无活动的其他区域中不存在任何操作,因此您无需在这些区域中启动Security Hub。
此外,您还可以邀请其他AWS账户启用Security Hub,并与您AWS账户共享发现结果。如果您发送的邀请被其他账户所有者的接受,则您的Security Hub账户将成为主账户,其他任何与之关联的Security Hub账户都将作为成员账户。接下来,来自主账户的用户将能够通过成员账户查看其Security Hub发现结果。
为了简化配置流程,您可以使用GitHub上提供的现成 AWS Labs脚本。此脚本将自动执行整个设置流程。在脚本的支持下,您可以在相关联的AWS账户列表中同时为所有账户启用及禁用AWS Security Hub,并将其批量添加为Security Hub成员。主账户负责发送邀请,其他所有成员账户都将自动接受邀请。要运行此脚本,您需要拥有各AWS账户ID,以及您希望指定为Security Hub成员的各AWS账户根邮件地址。(请注意,请仅与您信任的AWS账户共享根邮件地址与账户ID。)
在默认情况下,Security Hub主/成员关联将独立于您在Amazon GuardDuty或Amazon Macie当中建立的账户关联关系。如果GuardDuty或Macie中已经存在主/成员层次结构,您可以将其账户列表以CSV文件的格式导出,然后配合Security Hub脚本一起使用。例如,在GuardDuty当中,使用ListMembers API以导出AWS账户ID与全部成员账户的电子邮件,具体代码如下:
以上命令的输出结果,为您的GuardDuty成员账户ID及其相应的根邮件地址,每行一条并以逗号分隔,具体如下所示:
12345678910,abc@example.com
98765432101,xyz@example.com
2. 在所有AWS账户及区域中启用AWS Config,并保持启用AWS CIS Foundations安全基线标准检查功能
在任意区域内启用Security Hub时,默认情况下都会启用AWS CIS安全基线标准检查。我们建议您保持启用状态,它们是适用于所有AWS账户的重要安全措施。。
对于运行安全基线检查,Security Hub需要使用与服务链接的AWS Config规则实现。因此,请确保在部署Security Hub的所有账户及区域中都已启用AWS Config,并记录所有受支持资源,包括全局资源。这些服务链接的规则不会在AWS Config当中产生额外费用,所有使用成本皆通过Security Hub的费率标准体现。
3. 对不同类型的Security Hub用户,使用特定的托管IAM策略
您可以选择允许大规模用户访问Security Hub执行List与Read操作,这将允许他们及时获取安全发现结果。但请注意,您应该仅允许一小部分用户访问Security Hub执行Write操作,这样,将仅允许授权用户归档、处理或修复这些调查结果。
您可以使用AWS托管策略为您的员工授予他们所必需的权限。这些策略已经在您的账户中,并由AWS负责维护与更新。如果需要对Security Hub用户进行更细粒度授权,则建议您创建自己的客户托管策略。比较简单方式是导入现有AWS托管策略,在保证策略本身正确无误的前提下,针对当前环境进行自定义。
AWS根据各项操作的作用,将每种服务操作归为五个访问级别:List、Read、Write、Permissions management以及Tagging。要确定您分配给用户的IAM策略所应包含的访问级别,如果您可以通过从IAM Console中导航至Policies,而后选择任意AWS托管或客户托管策略。接下来,在Summary页面的Permissions选项卡下,选择Policy summary(详见图一)。关于访问级别分类的更多详细信息及示例,请参阅通过策略摘要了解访问级别。
图一:AWSSecurityHubReadOnlyAccess AWS托管策略摘要
4. 使用标签实现访问控制与成本分配
SecurityHub::Hub 资源代表的是AWS账户中各区域所对应的AWS Security Hub服务实现。Security Hub允许您以标签的形式将元数据分配给SecurityHub::Hub资源。每个标签都以字符串形式存在,由用户定义的键与可选的键值组成,您可以更轻松识别并管理环境中的AWS资源。
您可以在SecurityHub::Hub资源上使用标签以控制访问权限。例如,您可以允许一组开发者IAM实体管理和更新只有相关标签的SecurityHub::Hub资源。通过这种方式,您既能够限制对生产SecurityHub::Hub资源的访问,同时允许开发人员在其开发环境中继续测试。
关于与Security Hub APIs一起使用基于标签条件的更多详细信息,请参阅在AWS Security Hub中使用条件键。请注意,当您使用基于标签的条件进行访问控制时,需要首先定义谁有权修改这些标签。
为了使分类和跟踪AWS成本变得更加容易,您还可以启用成本分配标签,这样可以对SecurityHub::Hub资源成本进行管理。AWS能够以CSV文件的形式生成成本分配报告,其中根据您活动标签对您的使用情况和成本进行分组。您也可以用标签表示业务分类(例如成本中心、应用程序名称或者项目环境等),来管理您的成本构成。
关于常用标签类别以及有效执行标记策略的更多详细信息,请参阅AWS标记策略。
5. 集成并启用您的现有安全产品(目前支持34个集成,一会更多)
大量工具可以帮助您了解AWS账户的安全性和合规性,但这些工具通常会以不同格式生成自己的发现结果集。Security Hub将发现结果标准化。
借助Security Hub,可以使用标准的发现格式提取从集成提供商(第三方服务和AWS服务)生成的发现,从而无需安全团队转换数据。目前可以集成34种发现提供程序提供的结果,可通过Security Hub导入与导出结果。另外,PagerDuty、Splunk以及Slack等合作伙伴产品虽然无法生成结果,但可以从Security Hub接收发现结果。
如果需要将第三方合作伙伴产品添加至您的AWS环境,则可以通过Security Hub控制台的Integrations页面中选择Purchase链接,然后导航至AWS Marketplace。在购买完成之后,选择Configure链接以导航至分步操作说明,以安装产品并完成与Security Hub的集成配置。最后,选择Enable integration在您的账户中为该第三方提供程序创建产品订阅(详见图二)。
在启用订阅之后,资源策略将自动附加到该策略。资源策略定义了Security Hub接受和处理产品的发现所需的权限。您还可以通过API和CloudFormation启用订阅。
图二:将合作伙伴的调查结合与Security Hub相集成
6. 使用Amazon CloudWatch Events、AWS Systems Manager Automation文档以及AWS Step Functions建立自定义补救措施,以自动处理发现结果
Security Hub将自动将所有发现结果发送至Amazon CloudWatch Events。
通过允许您使用AWS Systems Manager Automation文档、OpsItems以及AWS Step Functions采取特定操作,这套集成方案将帮助您自动完成对各类威胁事件的响应。使用这些工具,您可以创建自己的事件处理计划,保证安全团队得以专注于增强AWS环境的整体安全性,而不是对当前的发现进行补救。
图三:创建一项CloudWatch Events规则,用于将符合匹配条件的Security Hub结果发送至特定目标
7. 创建自定义操作,将Security Hub的发现副本发送至AWS账户的内部或外部资源,从而为该发现启用其他可见性与修复选项
由于能够与CloudWatch Events相集成,您可以使用Security Hub创建自定义操作,以将特定发现结果发送至票证、聊天系统、电子邮件或者自动修复程序中。此外,您也可以将这些自定义操作发送至自己的AWS资源处,例如AWS Systems Manager OpsCenter、AWS Lambda或者Amazon Kinesis,使您可以进行自己不久操作或者捕捉与特定发现相关的数据。
要深入了解这套架构,以及关于特定自定义操作的示例,请参阅如何将AWS Security Hub自定义操作与PagerDuty相集成,以及如何在AWS Security hub中启用自定义操作。
此外,Security Hub还允许用户针对特定语言选择对应的AWS SDK开发工具包,以便您可以自定义操作以编程方式解决发现的问题。下面,我们将演示如何使用AWS Lambda以及适用于Python的AWS开发工具包(Boto3)实现这一目标。在本示例中,我们将修复Security Hub在CIS 检查2.4发现: “保证CloudTrail跟踪与Amazon CloudWatch Logs集成”。对于本演练,假设您具有必需的AWS IAM权限才能与Security Hub,CloudWatch Events,Lambda和AWS CloudTrail一起使用。
图四:使用自定义操作对数据流支持下的Security Hub发现结果进行修复
如图四所示:
- 在Security Hub中生成针对CIS 检查2.4的发现结果时,Security Hub会根据我预先设计的自定义操作将结果发送至CloudWatch Events。
- CloudWatch Events会将发现结果发送至目标的Lambda函数。
- Lambda函数使用Python脚本检查是否存在于CIS check 2.4生成的发现结果。如果有,则Lambda函数将识别受影响的CloudTrail路径,并通过CloudWatch Logs配置对该监视日志进行监控。
先决条件
- 您必须为AWS CloudTrail配置一个IAM角色,以确保其拥有必要权限将事件传递至CloudWatch Logs日志组。关于执行这项操作的更多详细信息,请参阅AWS CloudTrail说明文档。在本示例中,我们将角色命名为CloudTrail role。
- 要部署Lambda函数,您必须配置IAM角色以承担Lambda函数。我将此角色称为Lambda执行角色。下面的示例策略包括您将为此示例分配的权限。请用在上一步中创建的CloudTrail角色替换<CloudTrail_CloudWatchLogs_Role>。根据您的用例,您可以进一步限制此IAM策略以授予最小特权,这是建议的IAM最佳实践。
解决方案部署
- 在AWS Security Hub中创建一项自定义操作,并将其与您为Security Hub发现结果配置的CloudWatch Events规则关联起来。请根据Security Hub用户指南中的相应说明,完成具体操作。
- 创建一项Lambda函数,由其自动根据CIS 2.4结果自动修复:
图五:更新基本信息以创建Lambda函数
图六:更新基本信息与权限以创建Lambda函数
-
- 删除默认函数代码并粘贴以下代码:
图七:编辑Lambda代码,将对应部分替换为正确的ClouTrail role
- 前往 CloudWatch console,并在左侧的导航栏中选择 Rules。
图八:添加我们创建完成的Lambda函数,作为CloudWatch规则的目标
- 现在配置正式完成,可以进行规则测试了。前往AWS Security Hub console,并在导航栏中选择 Compliance standards。
图九:Security Hub控制台中的合规性标准页面
图十:在Security Hub控制台中找到CIS check 2.4
-
- 如果您保留了默认的AWS Security Hub CIS checks(且与AWS Config服务位于同一区域当中),且该区域中还没有配置CloudTrail跟踪以将事件传递至CloudWatch Logs,则系统会提示低严重性发现且合规性状态显示为“Failed”。
- 通过选择复选框并选择“Actions”按钮来选择失败的发现。
- 最后,在下拉菜单中,选择您在步骤1中创建的自定义操作,将相关发现结果发送至CloudWatch Events。CloudWatch Events将发现结果发送至Lambda函数,您在步骤3中将其配置为该规则的目标。Lambda函数将自动识别受影响的CloudTrail跟踪并为您配置CloudWatch Logs日志组。出于识别目的,日志组将与您的跟踪具有相同的名称。您可以修改代码以进一步满足您的需求。
注意:补救的资源的合规性状态可能会有所延迟。在启用CIS AWS Foundations Standard之后,Security Hub将在2小时之内运行检查。之后,检查每12个小时自动运行一次。
图十一:在Security Hub控制台中针对CIS check 2.4生成的结果
8. 使用默认“managed insights”作为模板自定义洞见,并使用它们对资源和发现进行优先排序以采取行动
安全中心“洞察力”是相关发现的集合,一个或多个安全中心过滤器已应用到这些相关结果。洞察力可以帮助您整理调查结果,并确定需要立即关注的安全风险。
安全中心提供了几种托管(默认)的见解。您可以将它们用作获得新见解的模板,并根据您的用例进行修改。您可以将这些修改后的查询另存为新的自定义见解,以确保您的AWS账户具有更大的可见性。请参阅文档,以获取有关如何创建自定义见解的分步说明。
图十二:创建Security Hub自定义洞见
9. 使用免费试用评估您的实际成本
Security Hub为所有AWS账户及区域提供为期30天的免费试用选项。您可以借此评估Security Hub的平均成本,评估能否适合利用此项服务监控环境中的威胁与合规性水平。您可以通过Security Hub控制台导航至Settings(设置),染后选择Usage(详见图十三)。
图十三:估算Security Hub使用成本
总结
借助AWS Security Hub,您可以更深入地了解AWS环境的安全性与合规性状态。使用此处各项Security Hub最佳实践,安全团队能够将更多精力投入到事件的修补与恢复当中,而不是化时间在事件检测与组织上。Security Hub已经通过HIPAA、ISO、PCI以及SOC认证。要了解关于Security Hub的更多详细信息,请参阅AWS Security Hub说明文档。
如果大家对本文有任何建议或反馈,请在下方评论区中与我们交流。如果您对本文有任何疑问,请在AWS Security Hub论坛上启动新线程,或与AWS支持团队联系。
希望获得关于AWS Security的更多新闻?请在 Twitter上关注我们。