本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将审计报告与您的私有 CA 一起使用
您可以创建审核报告,以列出您的私有 CA 已颁发和吊销的所有证书。该报告将保存在您通过输入指定的新的或现有 S3 存储桶中。
审计报告与 CloudTrail 日志
AWS 私有 CA 提供两种互补的审计机制:
CloudTrail 记录 -记录每次 API 调用和签名操作。 CloudTrail 用于安全监控、实时警报和调查特定事件。请参阅日志记录 AWS 私有证书颁发机构 使用 API 调用 AWS CloudTrail。
审计报告 -生成您的 CA 颁发或撤销的每份证书的时间点快照,包括有效日期和撤销状态。使用审计报告进行定期合规性审查和证书清单。
两种机制都是独立的。您可以根据审计要求使用其中一种或两者。
注意
已颁发超过 1 亿份证书的证书颁发机构不支持生成审计报告。
有关向审计报告添加加密保护的信息,请参阅 加密审计报告。
审计报告文件具有以下路径和文件名。Amazon S3 桶的 ARN 是 amzn-s3-demo-bucket 的值。CA_ID 是颁发 CA 的唯一标识符。UUID 是审计报告的唯一标识符。
amzn-s3-demo-bucket/audit-report/CA_ID/UUID.[json|csv]您可以每 30 分钟生成一份新报告,并从存储桶中下载该报告。以下示例显示了一 CSV-separated 份报告。
awsAccountId,requestedByServicePrincipal,certificateArn,serial,subject,notBefore,notAfter,issuedAt,revokedAt,revocationReason,templateArn
123456789012,,arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID,00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff,"2.5.4.5=#012345678901,2.5.4.44=#0a1b3c4d,2.5.4.65=#0a1b3c4e5f6a,2.5.4.43=#0a1b3c4d5e,2.5.4.42=#0123456789abcdef0123456789abcdef0123,2.5.4.4=#0123456789abcdef01234567,2.5.4.12=#0a1b3c4d5e,2.5.4.46=#0123456789ab,CN=www.example1.com,OU=Sales,O=Example Company,L=Seattle,ST=Washington,C=US",2020-03-02T21:43:57+0000,2020-04-07T22:43:57+0000,2020-03-02T22:43:58+0000,,UNSPECIFIED,arn:aws:acm-pca:::template/EndEntityCertificate/V1
123456789012,acm.amazonaws.com,arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID,ff:ee:dd:cc:bb:aa:99:88:77:66:55:44:33:22:11:00,"2.5.4.5=#012345678901,2.5.4.44=#0a1b3c4d,2.5.4.65=#0a1b3c4d5e6f,2.5.4.43=#0a1b3c4d5e,2.5.4.42=#0123456789abcdef0123456789abcdef0123,2.5.4.4=#0123456789abcdef01234567,2.5.4.12=#0a1b3c4d5e,2.5.4.46=#0123456789ab,CN=www.example1.com,OU=Sales,O=Example Company,L=Seattle,ST=Washington,C=US",2020-03-02T20:53:39+0000,2020-04-07T21:53:39+0000,2020-03-02T21:53:40+0000,,,arn:aws:acm-pca:::template/EndEntityCertificate/V1以下示例显示了一 JSON-formatted 份报告。
[
{
"awsAccountId":"123456789012",
"certificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID",
"serial":"00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff",
"subject":"2.5.4.5=#012345678901,2.5.4.44=#0a1b3c4d,2.5.4.65=#0a1b3c4d5e6f,2.5.4.43=#0a1b3c4d5e,2.5.4.42=#0123456789abcdef0123456789abcdef0123,2.5.4.4=#0123456789abcdef01234567,2.5.4.12=#0a1b3c4d5e,2.5.4.46=#0123456789ab,CN=www.example1.com,OU=Sales,O=Example Company,L=Seattle,ST=Washington,C=US",
"notBefore":"2020-02-26T18:39:57+0000",
"notAfter":"2021-02-26T19:39:57+0000",
"issuedAt":"2020-02-26T19:39:58+0000",
"revokedAt":"2020-02-26T20:00:36+0000",
"revocationReason":"UNSPECIFIED",
"templateArn":"arn:aws:acm-pca:::template/EndEntityCertificate/V1"
},
{
"awsAccountId":"123456789012",
"requestedByServicePrincipal":"acm.amazonaws.com",
"certificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID",
"serial":"ff:ee:dd:cc:bb:aa:99:88:77:66:55:44:33:22:11:00",
"subject":"2.5.4.5=#012345678901,2.5.4.44=#0a1b3c4d,2.5.4.65=#0a1b3c4d5e6f,2.5.4.43=#0a1b3c4d5e,2.5.4.42=#0123456789abcdef0123456789abcdef0123,2.5.4.4=#0123456789abcdef01234567,2.5.4.12=#0a1b3c4d5e,2.5.4.46=#0123456789ab,CN=www.example1.com,OU=Sales,O=Example Company,L=Seattle,ST=Washington,C=US",
"notBefore":"2020-01-22T20:10:49+0000",
"notAfter":"2021-01-17T21:10:49+0000",
"issuedAt":"2020-01-22T21:10:49+0000",
"templateArn":"arn:aws:acm-pca:::template/EndEntityCertificate/V1"
}
] 注意
AWS Certificate Manager 续订证书时,私有 CA 审计报告会在该requestedByServicePrincipal字段中填充。acm.amazonaws.com这表示该 AWS Certificate Manager 服务代表客户调 AWS 私有 CA 用了API的IssueCertificate操作来续订证书。
为审计报告准备 Amazon S3 存储桶
重要
AWS 私有 CA 不支持使用亚马逊 S3 对象锁。如果您在存储桶上启用对象锁定,则 AWS 私有 CA 无法向存储桶写入审计报告。
要存储您的审计报告,您需要准备 Amazon S3 桶。有关更多信息,请参阅如何创建 S3 桶?
您的 S3 存储桶必须受权限策略的保护,该策略 AWS 私有 CA 允许访问和写入您指定的 S3 存储桶。授权用户和服务主体需要允许将对象放 AWS 私有 CA 入存储桶的Put权限,以及检索对象的Get权限。我们建议您应用如下所示的政策,该政策限制了对 AWS 账户和私有 CA 的 ARN 的访问权限。或者,您可以使用 a ws: SourceOrg ID 条件密钥限制对中 AWS Organizations特定组织的访问权限。有关存储桶策略的更多信息,请参阅亚马逊简单存储服务的存储桶政策。
创建审计报告
可从控制台或 AWS CLI创建审计报告。
创建审计报告(控制台)
-
登录您的 AWS 账户并在以下位置打开 AWS 私有 CA 控制台https://console.aws.amazon.com/acm-pca/home
。 -
在私有证书颁发机构页面,从列表中选择您的私有 CA。
-
从操作菜单中,选择生成审计报告。
-
在审计报告目标下,对于创建新的 S3 桶?,选择是并键入唯一桶名称,或选择否并从列表中选择现有的桶。
如果您选择 “是”,则 AWS 私有 CA 创建默认策略并将其附加到您的存储桶。默认策略包括
aws:SourceAccount条件密钥,该密钥限制了对特定 AWS 账户的访问权限。如果您想进一步限制访问权限,可以在策略中添加其他条件密钥,如前面的示例所示。如果您选择否,则必须先将策略附加到桶,然后才能生成审计报告。使用 为审计报告准备 Amazon S3 存储桶 中所述的策略模式。有关附加策略的信息,请参阅使用 Amazon S3 控制台https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html添加存储桶策略。
-
在 “输出格式” 下,为 “ JavaScript 对象表示法” 选择 “JSON”,对于逗号分隔值,选择 CSV。
-
选择 Generate audit report (生成审核报告)。
要创建审计报告 (AWS CLI)
-
如果您没有 S3 桶可用,则请创建一个。
-
将策略附加到您的桶。使用 为审计报告准备 Amazon S3 存储桶 中所述的策略模式。有关附加策略的信息,请参阅使用 Amazon S3 控制台添加桶策略
-
使用 create-certificate-authority-audit-repor t 命令创建审计报告并将其放入准备好的 S3 存储桶中。
$aws acm-pca create-certificate-authority-audit-report \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566\ --s3-bucket-nameamzn-s3-demo-bucket\ --audit-report-response-format JSON
检索审计报告
要检索审计报告以进行检查,请使用 Amazon S3 控制台、API、CLI 或软件开发工具包。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的下载对象。
检索完整的证书详细信息
审计报告提供证书元数据,包括序列号、主题可分辨名称 (DN)、有效日期和撤销状态。它不包括完整的证书内容,例如主题备用名称 (SAN)、 X.509 扩展名或 TBS(待签名)证书结构。
要检索完整的证书详细信息,请使用带有审计报告中的证书 ARN 的 GetCertificate API。然后,您可以解析返回的 PEM-encoded 证书以提取任何字段。
示例:从审计报告条目中检索和检查证书
aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566\ --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID\ --output text --query Certificate | openssl x509 -text -noout
当您的审计需要的细节超出报告提供的内容时,这种模式非常有用,例如,验证发布了哪些 SAN 或 DNS 名称,或者确认所使用的密钥算法。
重要
GetCertificate要求发行 CA 仍然存在。如果 CA 已删除,则无法检索证书。对于颁发大量短期证书的 CA,可以考虑在颁发时获取完整的证书详细信息,而不是事后检索它们。
加密审计报告
您可以选择在包含审计报告的 Amazon S3 存储桶上配置加密。 AWS 私有 CA 支持 S3 中资产的两种加密模式:
-
使用亚马逊密 S3-managed AES-256钥自动服务器端加密。
-
使用 AWS Key Management Service 并根据您的规格 AWS KMS key 配置的客户管理加密。
注意
AWS 私有 CA 不支持使用 S3 自动生成的默认 KMS 密钥。
以下过程介绍如何设置每个加密选项。
配置自动加密
完成以下步骤以启用 S3 服务器端加密。
打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/
。 -
在存储桶表中,选择用于存放 AWS 私有 CA 资产的存储桶。
-
在存储桶页面上,选择属性选项卡。
-
选择默认加密卡。
-
请选择启用。
-
选择 Amazon S3 密钥 (SSE-S3) 。
-
选择保存更改。
配置自定义加密
完成以下步骤以启用使用自定义密钥的加密。
打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/
。 -
在存储桶表中,选择用于存放 AWS 私有 CA 资产的存储桶。
-
在存储桶页面上,选择属性选项卡。
-
选择默认加密卡。
-
请选择启用。
-
选择AWS Key Management Service 密钥 (SSE-KMS) 。
-
选择 “从 AWS KMS 密钥中选择” 或 “输入 AWS KMS key ARN”。
-
选择保存更改。
-
(可选)如果您还没有 KMS 密钥,请使用以下 AWS CLI create-key 命令创建一个:
$aws kms create-key输出包含 KMS 密钥的密钥 ID 和 Amazon 资源名称(ARN)。下面是一个示例输出:
{ "KeyMetadata": { "KeyId": "01234567-89ab-cdef-0123-456789abcdef", "Description": "", "Enabled": true, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef", "AWSAccountId": "123456789012" } } -
通过以下步骤,您可以向 AWS 私有 CA 服务主体授予使用 KMS 密钥的权限。默认情况下,所有 KMS 密钥均为私有;只有资源拥有者可以使用 KMS 密钥加密和解密数据。但是,资源拥有者可以将 KMS 密钥的访问权限授予其他用户和资源。该服务主体必须位于存储 KMS 密钥的相同区域内。
-
首先,使用以下
policy.jsonget-key-policy 命令将您的 KMS 密钥默认策略保存为 :$aws kms get-key-policy --key-idkey-id--policy-name default --output text > ./policy.json -
在文本编辑器中打开
policy.json文件。选择以下策略声明之一,并将其添加到现有策略中。如果您的 Amazon S3 桶密钥已启用,则请使用以下语句:
{ "Sid":"Allow ACM-PCA use of the key", "Effect":"Allow", "Principal":{ "Service":"acm-pca.amazonaws.com" }, "Action":[ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource":"*", "Condition":{ "StringLike":{ "kms:EncryptionContext:aws:s3:arn":"arn:aws:s3:::bucket-name" } } }如果您的 Amazon S3 桶密钥已禁用,则请使用以下语句:
{ "Sid":"Allow ACM-PCA use of the key", "Effect":"Allow", "Principal":{ "Service":"acm-pca.amazonaws.com" }, "Action":[ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource":"*", "Condition":{ "StringLike":{ "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::bucket-name/acm-pca-permission-test-key", "arn:aws:s3:::bucket-name/acm-pca-permission-test-key-private", "arn:aws:s3:::bucket-name/audit-report/*", "arn:aws:s3:::bucket-name/crl/*" ] } } } -
最后,使用以下 put-key-policy 命令应用更新后的策略:
$aws kms put-key-policy --key-idkey_id--policy-name default --policy file://policy.json
-