我更新了 AWS 私有憑證認證機構 (AWS 私有 CA),以設定憑證撤銷清單 (CRL)。但是,我收到了「ACM 私有 CA 服務主體 “acm-pca.amazonaws.com” 需要 “s3:GetBucketAcl” 權限」錯誤。
簡短說明
AWS 私有 CA 會將 CRL 放入您指定使用的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。您的 Amazon S3 儲存貯體必須透過附加的權限政策以進行保護。授權使用者和服務主體需要 Put 權限,才能允許 AWS 私有 CA 將物件放入儲存貯體,而且需要 Get 權限才能擷取物件。如需詳細資訊,請參閱 Amazon S3 中的 CRL 存取政策。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要以限制性較高的政策取代預設 Amazon S3 政策,請完成下列步驟:
-
開啟 Amazon S3 主控台。
-
從儲存貯體清單中,開啟您要將 CRL 放入其中的儲存貯體。
-
選擇 Permissions (權限) 標籤。
-
在 Bucket policy (儲存貯體政策) 下,選擇 Edit (編輯)。
-
在 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"
}
}
}
]
}
**注意:**請使用 Amazon S3 儲存貯體名稱取代 Resource 的值。請使用您的帳戶 ID 取代 aws:SourceAccount 的值。請使用 ARN 取代 aws:SourceArn 的值。
-
選擇 Save changes (儲存變更)。
-
加密您的 CRL。
-
執行 update-certificate-authority 命令以更新 AWS 私有 CA 撤銷組態:
aws acm-pca update-certificate-authority --certificate-authority-arn Certification_Auhtority_ARN --revocation-configuration file://revoke_config.txt
**注意:**請用您的 ARN 取代 Certification_Auhtority_ARN。
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 撤銷組態。
相關資訊
使用 CloudFront 啟用 S3 封鎖公開存取 (BPA)
Amazon S3 的安全最佳實務
GetBucketAcl