我更新了我的 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