如何通过自动修正 AWS Config 规则 s3-bucket-logging-enabled 来解决权限错误?

上次更新日期:2020 年 11 月 20 日

我配置了 AWS Config 规则 s3-bucket-logging-enabled 来自动修正不合规的 Amazon Simple Storage Service (Amazon S3) 存储桶。但修正执行失败,并且 AWS Config 控制台显示操作状态错误“Action execution failed (details)”(操作执行失败(详细信息))。 我打开了 Details(详细信息)页面,但该页面没有足够的信息来排查问题。

简短描述

AWS Config 规则 s3-bucket-logging-enabled 使用 AWS Systems Manager Automation 文档 AWS-ConfigureS3BucketLogging 修正不合规的资源。必须使用 AWS Identity and Access Management (IAM) 在自动化角色信任策略中允许 Systems Manager 服务,该策略将作为 AutomationAssumeRole 参数传递。此外,自动化角色必须具有 PutBucketLogging 权限,并且必须将目标 Amazon S3 存储桶配置为存储日志。

解决方法

有关更详细的错误消息,请运行 AWS 命令行界面 (AWS CLI) 命令 describe-remediation-execution-status。然后,请按照以下操作说明排查错误消息。有关更多信息,请参阅如何排查 AWS Config 中的修正执行失败问题?

重要提示:开始之前,请确保您已安装配置 AWS CLI。如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

“Step fails when it is Execute/Cancelling action.An error occurred (MalformedXML) when calling the PutBucketLogging operation: The XML you provided was not well-formed or did not validate against our published schema.Please refer to Automation Service Troubleshooting Guide for more diagnosis details.”(当执行/取消操作时,步骤失败。调用 PutBucketLogging 操作时,发生错误 (MalformedXML):您提供的 XML 格式不够好,或者没有针对我们发布的模式进行验证。请参阅自动化服务故障排除指南了解更多诊断详细信息。)

“Step fails when it is Execute/Cancelling action.An error occurred (AccessDenied) when calling the PutBucketLogging operation: Access Denied.Please refer to Automation Service Troubleshooting Guide for more diagnosis details.”(当执行/取消操作时,步骤失败。调用 PutBucketLogging 操作时出现错误 (AccessDenied):访问被拒绝。请参阅自动化服务故障排除指南了解更多诊断详细信息。)

出现此错误的原因是 AutomationAssumeRole 角色没有权限在不合规的 S3 存储桶上调用 PutBucketLogging API。您可以使用以下示例策略允许角色调用 PutBucketLogging API:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutBucketLogging",
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME_1>",
                "arn:aws:s3:::<BUCKET_NAME_2>",
                "arn:aws:s3:::<BUCKET_NAME_3>"
            ]
        }
    ]
}

注意:如果您要求在 AWS 区域中的所有存储桶上进行修正,请使用条件键 aws:RequestedRegion 限制角色对特定区域的权限。

“Invalid execution parameters sent to Systems Automation.The defined assume role is unable to be assumed.”(发送给系统自动化的执行参数无效。定义的代入角色无法代入。)

出现此错误是因为 IAM AutomationAssumeRole 角色无法由 Systems Manager 自动化服务代入。使用以下示例策略允许 Systems Manager 代入 IAM 角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ssm.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}