亚马逊AWS官方博客

新功能 — AWS Config 规则现在支持主动合规



在经营企业时,您必须在云运维的速度和控制之间找到适当的平衡。一方面,您希望能够快速配置应用程序所需的云资源。同时,根据您所在行业的不同,您需要保持监管、安全和运营最佳实践的合规性。

AWS Config 提供规则,您可以在侦测模式下运行这些规则,以评估您的 AWS 资源的配置设置是否符合所需的配置设置。今天,我们正在扩展 AWS Config 规则以支持主动模式,这样它们就可以在预置之前随时运行,并节省实施自定义部署前验证所花费的时间。

在创建标准资源模板时,平台团队可以在主动模式下运行 AWS Config 规则,以便在组织间共享之前测试其合规性。在实施新服务或新功能时,开发团队可以在持续集成和持续交付 (CI/CD) 管道中以主动模式运行规则,以识别不合规的资源。

您还可以在部署管道中使用 AWS CloudFormation Guard 来主动检查合规性,并确保在配置资源之前和之后都应用一组一致的策略。

我们来看看这些步骤的实际操作。

使用 AWS Config 主动合规
AWS Config 控制台中,我在导航窗格中选择规则。在规则表中,我看到新的已启用评估模式列,该列指定了规则是主动还是侦测。下面来设置我的第一条规则。

控制台屏幕截图。

我选择添加规则,然后在 AWS 托管规则搜索框中输入 rds-storage 以查找 rds-storage-encrypted 规则。此规则检查您的 Amazon Relational Database Service (RDS) 数据库实例是否启用了存储加密,是否可以在主动或侦测评估模式下添加。我选择下一步

控制台屏幕截图。

评估模式部分,我开启了主动评估。现在,主动评估开关和侦测评估开关均已启用。

控制台屏幕截图。

我将所有其他设置保留为默认值,然后选择下一步。在下一步中,我查看配置并添加规则。

控制台屏幕截图。

现在,我可以通过 AWS Config API(包括 AWS Command Line Interface (CLI)AWS 开发工具包)或 CloudFormation Guard 使用主动合规性。在我的 CI/CD 管道中,我可以在创建资源之前使用 AWS Config API 检查资源的合规性。使用 AWS CloudFormation 进行部署时,我可以设置 CloudFormation 挂钩,以便在实际部署之前主动检查我的配置。

下面我们来看一个 AWS CLI 示例。首先,我调用 StartProactiveEvaluationResponse API,输入资源 ID(仅供参考)、资源类型及其使用 CloudFormation 架构的配置。为简单起见,在数据库配置中,我只使用 StorageEncrypted 选项并将其设置为 true 来通过评估。我使用了 60 秒的评估超时,这对于这条规则来说已经足够了。

aws configservice start-resource-evaluation --evaluation-mode PROACTIVE \
    --resource-details '{"ResourceId":"myDB",
                         "ResourceType":"AWS::RDS::DBInstance",
                         "ResourceConfiguration":"{\"StorageEncrypted\":true}",
                         "ResourceConfigurationSchemaType":"CFN_RESOURCE_SCHEMA"}' \
    --evaluation-timeout 60
{
    "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d"
}

我在输出中回到了我用来使用 GetResourceEvaluationSummary API 检查评估状态的 ResourceEvaluationId 。开始时,评估为 IN_PROGRESS。通常需要几秒钟才能得到 COMPLIANTNON_COMPLIANT 结果。

aws configservice get-resource-evaluation-summary \
    --resource-evaluation-id be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d
{
    "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d",
    "EvaluationMode": "PROACTIVE",
    "EvaluationStatus": {
        "Status": "SUCCEEDED"
    },
    "EvaluationStartTimestamp": "2022-11-15T19:13:46.029000+00:00",
    "Compliance": "COMPLIANT",
    "ResourceDetails": {
        "ResourceId": "myDB",
        "ResourceType": "AWS::RDS::DBInstance",
        "ResourceConfiguration": "{\"StorageEncrypted\":true}"
    }
}

正如预期的那样,Amazon RDS 配置符合 rds-storage-encrypted 规则。如果我在 StorageEncrypted 设置为 false 的情况下重复前面的步骤,我会得到不合规的结果。

如果为一种资源类型启用了多个规则,则所有适用的规则都将在主动模式下运行以进行资源评估。要了解资源的各个规则级别的合规性,我可以调用 GetComplianceDetailsByResource API:

aws configservice get-compliance-details-by-resource \
    --resource-evaluation-id be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d
{
    "EvaluationResults": [
        {
            "EvaluationResultIdentifier": {
                "EvaluationResultQualifier": {
                    "ConfigRuleName": "rds-storage-encrypted",
                    "ResourceType": "AWS::RDS::DBInstance",
                    "ResourceId": "myDB",
                    "EvaluationMode": "PROACTIVE"
                },
                "OrderingTimestamp": "2022-11-15T19:14:42.588000+00:00",
                "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d"
            },
            "ComplianceType": "COMPLIANT",
            "ResultRecordedTime": "2022-11-15T19:14:55.588000+00:00",
            "ConfigRuleInvokedTime": "2022-11-15T19:14:42.588000+00:00"
        }
    ]
}

如果在查看这些详细信息时未调用所需的规则,请务必检查主动模式是否已开启。

可用性和定价
所有提供 AWS Config 的商用 AWS 区域都将提供主动合规性,但在所有这些区域部署这项新功能可能需要几天时间。部署完成后,我将更新这篇文章。要了解哪些 AWS Config 规则可以转换为主动模式,请参阅开发人员指南

根据记录的 AWS Config 规则评估次数向您收费。每次评估资源是否符合 AWS Config 规则时,都会记录规则评估。规则评估可以在侦测模式和/或主动模式(如果有)下运行。如果您同时在侦测模式和主动模式下运行规则,则只需要为侦测模式下的评估付费。有关更多信息,请参阅 AWS Config 定价

借助这项新功能,您可以在配置之前使用 AWS Config 检查规则,避免实施自己的自定义验证。

Danilo