Amazon Web Services (AWS) 客户使用各种服务在 AWS 云中迁移、构建和创新。为了满足合规要求,客户需要监控、评估并检测对 AWS 资源所做的更改。AWS Config 持续审计、评估和评测您的 AWS 资源配置。
AWS Config 规则 持续评估您的 AWS 资源配置以确保其符合预期设置。根据规则的不同,AWS Config 将根据配置更改或定期评估您的资源。AWS Config 提供预定义的、可定制的 AWS 托管规则,用于评估您的 AWS 资源是否符合常见的最佳实践。例如,您可以使用托管规则来评估您的 Amazon Elastic Block Store (EBS) 卷是否启用了加密,或者特定标签是否应用于资源。AWS Config 规则可以单独启用,或通过 AWS Config 合规包 强制执行,这些规则和修复措施组成的组合。您还有其他选项来部署 AWS Config 规则:AWS Security Hub 将检查组合成 标准,而 AWS Control Tower 通过 控制库 提供控制。
许多 AWS 客户使用这些工具的组合,这可能导致在单一 AWS 账户中出现重复的 AWS Config 规则控制。为了解决这一问题,本文提出了我们开发的 重复规则检测工具,旨在帮助客户识别重复的 AWS Config 规则和源。您可以评估结果并审查优化合规性的机会,减少重复评估和整合规则部署。
该无服务器解决方案收集当前有效的 AWS Config 规则,并基于相同的源、范围、输入参数和状态识别重复项。
下图展示了解决方案架构。
架构包括以下步骤:
一个 Amazon EventBridge Scheduler 触发一个 AWS Lambda 函数。Lambda 函数执行以下任务:发送 describeconfigrules 请求到 AWS Config API,返回当前 AWS 账户和区域中启用的 AWS Config 规则的详细信息。遍历返回的 AWS Config 规则,以确定是否存在重复规则。如有发现,按照 JSON 格式将重复规则分组。将输出写入带有时间戳的 JSON 文件,并将其保存到一个 Amazon S3 桶中以进行进一步分析。您需要一个已启用 AWS Config 规则、Security Hub 标准或 AWS Control Tower 控制的 AWS 账户。在开始之前,确保您对以下内容有基本了解:
Amazon EventBridge SchedulerAWS Lambda 函数Python 和 Boto3为了演示该工具,请使用一个已经部署了两个 AWS Config 合规包 的 AWS 账户: 适用于 HIPAA 安全的操作最佳实践 和 适用于 NIST CSF 的操作最佳实践,以及 Security Hub 中的 AWS 基础安全最佳实践 (FSBP) 标准。
本文包含的 AWS CloudFormation 模板部署多个组件:
DuplicateRuleDetectionLambda 一个 Lambda 函数:向 AWS Config API 发送 describeconfigrules 请求,以返回启用的 Config 规则。查询返回的规则,以识别具有相同参数的重复规则。将带有数据时间戳的输出 JSON 文件写入 DetectionLambdaResultsBucket 桶。DetectionLambdaPolicy 附加至 DetectionLambdaRole 角色的 AWS 身份与访问管理 (IAM) 策略,允许访问:基本 Lambda 执行权限。configDescribeConfigRules。仅限于 DetectionLambdaResultsBucket 的 s3PutObject。DetectionLambdaRole 具有信任策略,仅允许 AWS Lambda 服务承担该角色的 IAM 角色。DetectionLambdaResultsBucket 存储 DuplicateRuleDetectionLambda 函数写入的输出 JSON 文件的 Amazon S3 桶。SchedulerForDuplicateRuleDetectionLambda 一个 EventBridge 调度器,用于触发 DuplicateRuleDetectionLambda 函数。ScheduleExpression 属性定义调度运行时间。IAMRoleforDuplicateRuleDetectionLambdaScheduler SchedulerForDuplicateRuleDetectionLambda 的 IAM 角色,具有内联 IAM 策略以允许 Lambda 调用。要部署解决方案,请按照以下步骤操作:
下载 CloudFormation 模板,或在 CloudFormation 中 打开模板。注意 : EventBridge 调度器的默认运行频率为每月的第一天。在创建堆栈之前,根据需要更新模板中的 CRON 表达式。
登录到 AWS 管理控制台,使用页面顶部的搜索功能导航到 AWS CloudFormation。在导航窗格中选择 Stacks。在 Stacks 页面顶部选择 Create Stack,然后从下拉菜单选择 With new resources。在 Create stack 页面:对于 Prerequisite Prepare template,保留默认设置:Template is ready。在 Specify template 下,选择 Upload a template file,然后选择下载的 duplicateruledetectionyaml 文件并选择 Open。在页面底部选择 Next。在 Specify stack details 页面:对于 Stack name,输入堆栈名称,例如 duplicatedetectionrulestack。在页面底部选择 Next。在 Configure stack options 页面:可选对于 Tags,根据需要添加标签。对于 Permissions,不选择角色,CloudFormation 根据您的用户凭证使用权限。对于 Stack failure options,保留默认选项 Roll back all stack resources。在页面底部选择 Next。在 Review 页面,审查堆栈的详细信息。审查堆栈创建设置后,选择 Create stack 启动您的堆栈。从 CloudFormation Stack 页面监控堆栈状态,直到其状态从 CREATEINPROGRESS 更新为 CREATECOMPLETE。在 Resources 选项卡中,您将看到由模板创建的资源。使用以下步骤调用 Lambda 函数以创建一次性输出进行测试。
登录到 AWS CloudFormation 控制台,使用前提条件中的 AWS 账户。从导航窗格中选择 Stacks,然后选择您在部署此解决方案时使用的 Stack name。选择 duplicatedetectionrulestack 的 Resources 选项卡,注意为该解决方案创建的 Lambda 函数的名称。导航到 Lambda 控制台,从导航窗格中选择 Functions。选择步骤 3 中注意的函数名称。在 Code 选项卡中,选择 Test,这将打开测试窗口,然后选择 Invoke。导航到 Amazon S3 控制台,选择作为此解决方案一部分创建的桶名,以查看由 Lambda 函数创建的 JSON 输出。选择所创建的对象,选择 Download,以本地查看输出文件。要查看 JSON 输出文件并理解结构,请使用支持 JSON 的文本编辑器打开下载的输出文件。每个重复规则表示为一个在左大括号{和右大括号}之间的 JSON 对象。匹配的重复规则按左方括号[和右方括号]分组在一起,并用逗号分隔。
在下面的示例输出中,您可以看到该账户中有三次相同的 AWS Config 托管规则的实例:
加速器ios免费使用前两个规则分别由两个不同的合规包部署,第三个规则由 Security Hub 创建。SourceIdentifier 键值将托管规则标识为 ACCESSKEYSROTATED。CreatedBy 键值标识启用该规则的服务。每条规则具有相同的 InputParameters,这是定义重复规则的判断标准。
如上所述,您已经识别出重复规则,现在需要进一步调查以确定规则所包含的特定合规包和 Security Hub 标准。ConfigRuleName 值对于每个重复规则是不同的,并包括前缀和后缀,取决于规则的部署方式:
由合规包部署的规则的名称将包含一个后缀例如, accesskeysrotatedconformancepacka1b2c3d4e。使用 Security Hub 标准部署的规则的名称将包含前缀和后缀例如, securityhubaccesskeysrotateda1b2c3。由 AWS Control Tower 部署的规则的名称将包含前缀例如, AWSControlTowerAWSGREBSOPTIMIZEDINSTANCE。ConfigRuleName 值与特定的合规包或 Security Hub 标准映射。
要确定规则启用的 Security Hub 标准,请按以下步骤操作。
从 AWS Config 控制台,在导航窗格中选择 Conformance pack。选择一个合规包并通过输出文件中的 SourceIdentifier 值过滤搜索规则。使用 AWS Config 开发者指南,使用 SourceIdentifier 搜索 托管规则列表 并记录该托管规则的资源类型例如,AWSIAMUser。使用 Security Hub 控制参考 搜索先前步骤中包含的 AWS 服务的资源类型即 IAM 控制。根据 SourceIdentifier 搜索相应的控制,并记录控制 ID即 IAM3。登录到 Security Hub 控制台,并在导航窗格中选择 Controls。通过在 ID 上过滤搜索控制 ID,选择控制标题。选择 Investigate 选项卡,然后选择 Config rule 以查看相应的 AWS Config 规则。在 Control 页面上选择 Standards and requirements 选项卡,以查看 AWS Config 规则所属的标准。评估完成后如识别出重复规则,您可以进行规则整合和重复项解决。
若所评估的 AWS 账户位于 AWS Organizations 中,则组织中的委派管理员账户可能被注册为 管理特定 AWS 服务,如 AWS Config 和 Security Hub。解决方案可能需要从委派管理员账户完成。
解决重复 AWS Config 规则的选项包括:
如果合规包是从 AWS System Manager 快速设置 部署的,则只能使用示例模板,无法修改。客户可以尝试 创建自定义合规包模板,并直接从 AWS Config 部署它们。如果合规包是从 AWS Config 控制面板部署的且使用了示例模板,客户可以创建自定义合规包的模板并从 AWS Config 直接部署它们。如果在 Security Hub 中启用了标准,用户可以 禁用单独的控制 以帮助防止冗余。如果控制是从 AWS Control Tower 控制库中部署的,可以 根据需要在 AWS Control Tower 控制面板 或通过 支持的 API 程序性启用或禁用控制。在决定整合规则和解决重复项的有效方法时,考虑额外的功能如可视化和自动修复是有帮助的:
AWS Config 提供 仪表板 用于查看资源、规则、合规包及其合规状态。您还可以在自定义模板中 配置修复 操作,针对定义的 AWS Systems Manager 自动化计划。Security Hub 提供 摘要仪表板,以识别值得关注的领域,包括跨组织汇总发现。您可以自定义仪表板布局,添加或删除小部件,并过滤数据以关注特定兴趣领域。要配置 自动响应和修复,Security Hub 会将新发现和对现有发现的更新自动发送到 EventBridge 作为事件。用户可以编写简单的规则以指示哪些事件和在事件匹配规则时应采取何种自动化操作。AWS Control Tower 提供一个控制面板用于查看控制类别、单项控制和状态,以及启用的组织或账户。目前 AWS Control Tower 不支持通过 AWS Control Tower 修复不合格的资源。有效整合规则和解决重复项的方法是首先评估上述因素,并为大规模治理制定策略。Security Hub 通过收集跨 AWS 账户、AWS 服务和受支持的第三方产品的安全数据,为组织提供全面的合规性视图。启用一个或多个 Security Hub 标准提供了一种在不重复的风险下部署控制的方法。您可以通过 AWS Config 或 AWS Control Tower