如何重新创建 AWS Config 传输通道?

4 分钟阅读
0

我删除了我的 AWS Config 传输通道,我想重新创建该通道。

简短描述

当您使用 AWS Config 控制台设置 AWS Config 时,设置过程会指导您配置 AWS 资源。资源配置为向传输通道发送通知。AWS Config 设置包括配置以下资源:

  • Amazon Simple Storage Service (Amazon S3) 存储桶
  • Amazon Simple Notification Service (Amazon SNS) 主题
  • AWS Identity and Access Management (IAM) 角色
  • 要记录的资源类型

如果您使用 AWS 命令行界面 (AWS CLI) delete-delivery-channel 命令删除 AWS Config 传输通道,则配置记录器将关闭。如果您尝试打开配置记录器,则会出现以下错误:

“Delivery channel is not available to start configuration recorder.”(传输通道不可用于启动配置记录器。)

**注意:**您无法使用 AWS Config 控制台重新创建传输通道。

解决方法

注意:如果在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

完成以下步骤,以手动重新创建 AWS Config 传输通道并打开配置记录器。

**注意:**如果您没有删除与已删除的 AWS Config 传输通道关联的 Amazon S3 存储桶、S3 主题和 IAM 角色,则可以跳过这些步骤。

创建 Amazon S3 存储桶

完成以下步骤:

  1. 在与您的 AWS Config 服务相同的 AWS 区域中打开 Amazon S3 控制台
  2. 在导航窗格中,选择 Create bucket(创建存储桶)。
  3. 对于 Bucket name(存储桶名称),输入 S3 存储桶的名称,然后选择 Create bucket(创建存储桶)。
  4. S3 buckets(S3 存储桶)中,选择您刚刚创建的 S3 存储桶。
  5. 选择 Permissions(权限),然后选择 Bucket Policy(存储桶策略)。
  6. 输入以下示例存储桶策略,然后选择 Save(保存):
    {
     "Version": "2012-10-17",
     "Statement": [
      {
       "Sid": "AWSConfigBucketPermissionsCheck",
       "Effect": "Allow",
       "Principal": {
        "Service": "config.amazonaws.com"
       },
       "Action": "s3:GetBucketAcl",
       "Resource": "arn:aws:s3:::targetBucketName",
       "Condition": {
        "StringEquals": {
         "AWS:SourceAccount": "sourceAccountID"
        }
       }
      },
      {
       "Sid": "AWSConfigBucketExistenceCheck",
       "Effect": "Allow",
       "Principal": {
        "Service": "config.amazonaws.com"
       },
       "Action": "s3:ListBucket",
       "Resource": "arn:aws:s3:::targetBucketName",
       "Condition": {
        "StringEquals": {
         "AWS:SourceAccount": "sourceAccountID"
        }
       }
      },
      {
       "Sid": "AWSConfigBucketDelivery",
       "Effect": "Allow",
       "Principal": {
        "Service": "config.amazonaws.com"
       },
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID/Config/*",
       "Condition": {
        "StringEquals": {
         "s3:x-amz-acl": "bucket-owner-full-control",
         "AWS:SourceAccount": "sourceAccountID"
        }
       }
      }
     ]
    }

创建 SNS 主题

完成以下步骤:

  1. 在与 AWS Config 服务相同的区域中打开 Amazon SNS 控制台
  2. 在导航窗格上,选择 Topics(主题),然后选择 Create topic(创建主题)。
  3. 对于 Name(名称),为您的 SNS 主题输入名称。然后选择 Create topic(创建主题)。
  4. 选择 Create subscription(创建订阅)。
  5. 对于 Protocol(协议),选择 Email(电子邮件)。
  6. 对于 Endpoint(端点),输入要与此 SNS 主题关联的电子邮件地址,然后选择 Create subscription(创建订阅)。
  7. 查看您的电子邮件以确认订阅,然后选择 Confirm subscription(确认订阅)。

确认订阅后,您会收到消息 Subscription confirmed!(订阅已确认!)。

**注意:**要使用您的 SNS 主题,请确保您拥有所需的权限

创建 IAM 角色

完成以下步骤:

  1. 打开 IAM 控制台

  2. 选择 Roles(角色),然后选择 Create role(创建角色)。

  3. Select type of trusted entity(选择可信实体类型),选择 AWS service(AWS 服务)。

  4. Use cases for other AWS services(其他 AWS 服务的用例)下,选择 Config(配置)。

  5. 对于 Select your use case(选择您的用例),选择 Config - Customizable(配置 - 可自定义),然后选择 Next: Permissions(下一步:权限)。

  6. 选择 Next(下一步),输入 Role name(角色名称),然后选择 Create role(创建角色)。

  7. 选择您创建的角色,选择 Create inline policy(创建内联策略),然后选择 JSON 选项卡。

  8. 请参阅以下示例策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
          ],
          "Resource": [
            "arn:aws:s3:::arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID-WithoutHyphens/*"
          ],
          "Condition": {
            "StringLike": {
              "s3:x-amz-acl": "bucket-owner-full-control"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetBucketAcl"
          ],
          "Resource": "arn:aws:s3:::targetBucketName"
        },
        {
          "Effect": "Allow",
          "Action": "sns:Publish",
          "Resource": "arn:aws:sns:region:account_number:targetTopicName"
        }
      ]
    }
  9. 对于 Policy name(策略名称),输入名称,然后选择 Create policy(创建策略)。

创建 KMS 密钥

最佳做法是对由 AWS Config 传输到 Amazon S3 存储桶的对象使用基于 AWS Key Management Service (AWS KMS) 的加密。在与 AWS Config 服务相同的区域创建 KMS 密钥。

完成以下步骤:

  1. 打开 AWS KMS 控制台
  2. 在导航窗格中,选择 Customer managed keys(客户自主管理型密钥),然后选择 Create key(创建密钥)。
  3. 对于 Key type(密钥类型),选择 Symmetric(对称)以创建对称加密 KMS 密钥
  4. 对于 Key usage(密钥使用),选择 Encrypt and decrypt(加密和解密)选项,然后选择 Next(下一步)。
  5. 输入 KMS 密钥的别名。然后,选择 Next(下一步)。
    注意: 您的别名不能以 aws/ 开头。
  6. 选择可以管理 KMS 密钥的 IAM 用户和角色。然后,选择 Next(下一步)。
  7. 选择可以在加密操作中使用密钥的 IAM 用户和角色。然后,选择 Next(下一步)。
  8. 选择 Finish(完成)以创建 KMS 密钥。
  9. 在导航窗格中,选择 Customer managed keys(客户自主管理型密钥)。然后,在 Customer managed keys(客户自主管理型密钥)下,选择您创建的密钥。
  10. Key Policy(密钥策略)选项卡下,选择 Switch to policy view(切换到策略视图)。然后,选择 Edit(编辑)。
  11. 如果您为 AWS Config 使用自定义 IAM 角色,请输入以下策略声明作为附加密钥策略声明。然后,选择 Save changes(保存更改)。
{
  "Statement": [
    {
      "Sid": "AWSConfigKMSPolicy",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "myKMSKeyARN",
      "Principal": {
        "AWS": [
          "arn:aws:iam:account_id:role/my-config-role-name"
        ]
      }
    }
  ]
}

或者,如果您对 AWS Config 使用服务关联角色 (SLR),请使用以下策略声明更新 KMS 密钥策略:

{
  "Statement": [
    {
      "Sid": "AWSConfigKMSPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "config.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "myKMSKeyARN",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "sourceAccountID"
        }
      }
    }
  ]
}

创建传输通道

完成以下步骤:

  1. 在文本编辑器中输入以下示例模板,然后将其另存为 JSON 文件:

    {
        "name": "default",
        "s3BucketName": "targetBucketName",
        "s3KeyPrefix": "Optionalprefix",
        "snsTopicARN": "arn:aws:sns:region:account_ID:targetTopicName",
        "s3KmsKeyArn": "arn:aws:kms:region:account_ID:KmsKey",
        "configSnapshotDeliveryProperties": {
            "deliveryFrequency": "Twelve_Hours"
        }
    }

    **注意:**如果 S3 存储桶策略将 PutObject 限制为某个前缀而不是默认前缀,则必须提供 s3KeyPrefix。更改 deliveryFrequency 值以匹配您的用例。如果您选择不激活加密,则从 JSON 文件中省略 s3KmsKeyArn 值。

  2. 运行 put-delivery-channel AWS CLI 命令:

    $ aws configservice put-delivery-channel --delivery-channel file://deliveryChannel.json
  3. 要确认传输通道已创建,请运行 describe-delivery-channels AWS CLI 命令:

    $ aws configservice describe-delivery-channels

启动配置记录器

完成以下步骤:

  1. 打开 AWS Config 控制台
  2. 在导航窗格中,选择 Settings(设置)。
  3. Recording is off(录制已关闭)中,选择 Turn on(打开),然后选择 Continue(继续)。或者,运行 start-configuration-recorder AWS CLI 命令:
    $ aws configservice start-configuration-recorder --configuration-recorder-name configRecorderName

有关详细信息,请参阅管理配置记录器使用 AWS Config 规则评估资源

相关信息

使用控制台设置 AWS Config

如何解决 AWS Config 控制台的错误消息?

AWS 官方
AWS 官方已更新 2 个月前