Prerequisites - AWS Config
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Prerequisites

在部署一致性包之前,请打开 AWS Config 记录,创建服务相关角色,并为 Amazon S3 存储桶提供资源级权限。

步骤 1. 开始 AWS Config 记录

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Config 控制台:https://console.amazonaws.cn/config/

  2. 在导航窗格中,选择 Settings

  3. 要开始记录,请选择 Recording is off (记录已关闭) 下的 Turn on (开启)。系统提示时,选择 继续

步骤 2. CreateaService-LinkedRole

使用以下命令创建服务相关角色。

aws iam create-service-linked-role --aws-service-name config-conforms.amazonaws.com --description "my service linked role for config-conforms"

您的账户中现在有一个新角色 AWSServiceRoleForConfigConforms

步骤 3 提供资源级别权限

请按照以下步骤,提供对 Amazon S3 存储桶的资源级权限,以允许 AWS Config 访问该 S3 存储桶。

  1. 使用该 S3 存储桶所属的账户登录 AWS 管理控制台。

  2. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  3. 选择存储桶,然后选择 Properties (属性)

  4. 选择 Permissions

  5. 选择 Edit Bucket Policy

  6. 将相应的存储桶策略复制到 Bucket Policy Editor (存储桶策略编辑器) 窗口中。

    同一帐户相同的桶策略: 如果模板或交付输入存储区位于创建合规性包的AWS帐户中,请使用以下桶策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSConfigConformsBucketPermissionsCheck", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::delivery-bucket-name" }, { "Sid": "AWSConfigConformsBucketDelivery", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::delivery-bucket-name/[optional] prefix/AWSLogs/AccountId/Config/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": " AWSConfigConformsBucketReadAccess", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::delivery-bucket-name/[optional] prefix/AWSLogs/AccountId/Config/*" } ] }

    Cross Account Bucket Policy (跨账户存储策略):如果传输存储桶所在账户不同于创建一致性包的 AWS 账户,则为该存储桶使用以下存储桶策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSConfigConformsBucketPermissionsCheck", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::SourceAccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms", "PutConformancePack API caller user principal like arn:aws:iam::SourceAccountId:user/userName" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::awsconfigconformssuffix in bucket name" }, { "Sid": "AWSConfigConformsBucketDelivery", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::SourceAccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsconfigconformssuffix in bucket name/[optional] prefix/AWSLogs/AccountID/Config/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": " AWSConfigConformsBucketReadAccess", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::SourceAccountId:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsconfigconformssuffix in bucket name/[optional] prefix/AWSLogs/AccountID/Config/*" } ] }

    组织桶政策: 使用组织符合性包的交付桶的以下桶策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::awsconfigconformssuffix in bucket name/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "customer_org_id" } } }, { "Sid": "AllowGetBucketAcl", "Effect": "Allow", "Principal": "*", "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::awsconfigconformssuffix in bucket name", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "customer_org_id" } } } ] }

将一致性包与修正结合使用的先决条件

在部署使用了具备修正功能的示例模板的一致性包之前,您必须根据修正目标创建合适的资源,例如 Automation 代入角色和其他 AWS 资源。

如果您已有 Automation 角色并使用该角色通过 SSM 文档进行修复,则可以直接提供该角色的 ARN。如果您有任何资源,可以在模板中提供这些资源。

AWS Config 不支持 Automation 执行角色的 AWS CloudFormation 内部函数。您必须以字符串形式提供角色的准确 ARN。

有关如何传递准确 ARN 的更多信息,请参阅一致性包示例模板。使用示例模板时,请将相应部分更新为您的账户 ID 和您组织的主账户 ID。

将一致性包与一个或多个 AWS Config 规则结合使用的先决条件

在部署具有一个或多个自定义 AWS Config 规则的一致性包之前,请创建合适的资源,例如 AWS Lambda 函数和对应的执行角色。

如果您已有自定义 AWS Config 规则,则可以直接提供 AWS Lambda 函数的 ARN,以创建该自定义规则的另一个实例作为包的一部分。

如果您没有现有的自定义 AWS Config 规则,则可以创建一个 AWS Lambda 函数并使用该 Lambda 函数的 ARN。有关更多信息,请参阅 AWS Config 自定义规则 。)

如果您的 AWS Lambda 函数位于其他 AWS 账户中,则可以创建具有相应跨账户 AWS Lambda 函数授权的 AWS Config 规则。有关更多信息,请参阅博客文章如何跨多个 AWS 账户集中管理 AWS Config 规则

Organization 一致性包的先决条件

确保传输 S3 存储桶的名称必须以前缀 awsconfigconforms 开头。

如果输入模板具有自动修正配置,则在模板中为该修正指定 Automation 执行角色 ARN。确保组织的所有账户(主账户和成员账户)中都有具有指定名称的角色。在调用之前,您必须在所有帐户中创建此角色 PutOrganizationConformancePack。您可以手动或使用 AWS CloudFormation 在每个帐户中创建此角色的堆栈集。

如果您的模板使用 AWS CloudFormation 内部函数 Fn::ImportValue 来导入特定变量,则必须在组织的所有成员账户中,将该变量定义为 Export Value

对于自定义 AWS Config 规则,请参阅博客如何跨多个 AWS 账户集中管理 AWS Config 规则 来设置合适的权限。