为什么我在更新 ACM Private Certificate Authority CRL 配置时收到 Amazon S3 GetBucketAcl 权限错误?

2 分钟阅读
0

我更新了我的 AWS Certificate Manager(ACM)私有证书颁发机构(CA),以配置证书撤销列表(CRL)。但是,我收到了与以下内容类似的错误消息: “The ACM Private CA Service Principal 'acm-pca.amazonaws.com' requires 's3:GetBucketAcl' permissions.(ACM Private CA 服务主体‘acm-pca.amazonaws.com’需要‘s3:GetBucketAcl’权限。)” 如何解决此问题?

简短描述

ACM Private CA 将 CRL 放入您指定使用的 Amazon Simple Storage Service(Amazon S3)存储桶中。您的 Amazon S3 存储桶必须通过附加的权限策略进行保护。授权用户和服务主体需要 Put 权限才能允许 ACM Private CA 在存储桶中放置对象,并需要 Get 权限才能检索它们。

有关更多信息,请参阅 Amazon S3 中 CRL 的访问策略

解决方法

按照以下说明将默认 Amazon S3 策略替换为以下宽松度较低的策略。

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

1.    打开 Amazon S3 控制台

2.    从存储桶列表中,打开您要放置 CRL 的存储桶。

3.    选择**Permissions (权限)**选项卡。

4.    在 Bucket policy(存储桶策略)中,选择 Edit(编辑)。

5.    在 Policy(策略)中,复制并粘贴以下策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "acm-pca.amazonaws.com"
      },
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::your-crl-storage-bucket/*",
        "arn:aws:s3:::your-crl-storage-bucket"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "account",
          "aws:SourceArn": "arn:partition:acm-pca:region:account:certificate-authority/CA_ID"
        }
      }
    }
  ]
}

**注意:**将 S3 存储桶名称、账户 ID 和 ACM PCA ARN 替换为变量。

6.    选择 Save changes(保存更改)。

7.    按照说明对您的 CRL 进行加密

8.    使用 AWS CLI 命令 update-certificate-authority 更新 CA 撤销配置,如下所示:

$ aws acm-pca update-certificate-authority --certificate-authority-arn <Certification_Auhtority_ARN> --revocation-configuration file://revoke_config.txt

revoke_config.txt 文件包含类似以下内容的撤销信息:

{
    "CrlConfiguration": {
        "Enabled": <true>,
        "ExpirationInDays": <7>,
        "CustomCname": "<example1234.cloudfront.net>",
        "S3BucketName": "<example-test-crl-bucket-us-east-1>",
        "S3ObjectAcl": "<BUCKET_OWNER_FULL_CONTROL>"
    }
}

注意:

  • 如果您在 Amazon S3 中禁用了阻止公有访问(BPA)功能,则可以指定 BUCKET_OWNER_FULL_CONTROL 或 PUBLIC_READ 作为值。
  • 如果您使用 AWS 管理控制台配置了 CRL,则可能会收到“ValidationException(验证异常)”错误。重复步骤 8,使用 AWS CLI 更新 CA 撤销配置。

相关信息

启用 S3 阻止公有访问(BPA)功能

Amazon S3 的安全最佳实践

GetBucketAcl

AWS 官方
AWS 官方已更新 2 年前