

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将审计报告与您的私有 CA 一起使用
<a name="PcaAuditReport"></a>

您可以创建审核报告，以列出您的私有 CA 已颁发和吊销的所有证书。该报告将保存在您通过输入指定的新的或现有 S3 存储桶中。

**注意**  
已颁发超过 1 亿份证书的证书颁发机构不支持生成审计报告。

有关向审计报告添加加密保护的信息，请参阅 [加密审计报告](#audit-report-encryption)。

审计报告文件具有以下路径和文件名。Amazon S3 桶的 ARN 是 `amzn-s3-demo-bucket` 的值。`CA_ID` 是颁发 CA 的唯一标识符。`UUID` 是审计报告的唯一标识符。

```
amzn-s3-demo-bucket/audit-report/CA_ID/UUID.[json|csv]
```

您可以每 30 分钟生成一份新报告，并从存储桶中下载该报告。下面的示例显示一个 CSV 分隔的报告。

```
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 格式的报告。

```
[
   {
      "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 存储桶
<a name="s3-access"></a>

**重要**  
AWS 私有 CA 不支持使用 A [mazon S3 对象锁](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)。如果您在存储桶上启用对象锁定，则 AWS 私有 CA 无法向存储桶写入审计报告。

要存储您的审计报告，您需要准备 Amazon S3 桶。有关更多信息，请参阅[如何创建 S3 桶？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 

您的 S3 存储桶必须受权限策略的保护，该策略 AWS 私有 CA 允许访问和写入您指定的 S3 存储桶。授权用户和服务委托人需要`Put`权限 AWS 私有 CA 才能在存储桶中放置对象，以及检索对象的`Get`权限。我们建议您应用以下政策，该政策限制对 AWS 账户和私有 CA 的 ARN 的访问权限。或者，您可以使用 a [ws: SourceOrg ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgid) 条件键来限制对中特定组织的访问权限。 AWS Organizations有关存储桶策略的更多信息，请参阅 [Amazon 简单存储服务的存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

## 创建审计报告
<a name="create-the-report"></a>

可从控制台或 AWS CLI创建审计报告。

**创建审计报告（控制台）**

1. 登录您的 AWS 帐户并在[https://console.aws.amazon.com/acm-pca/家](https://console.aws.amazon.com/acm-pca/home)中打开主 AWS 私有 CA 机。

1. 在**私有证书颁发机构**页面，从列表中选择您的私有 CA。

1. 从**操作**菜单中，选择**生成审计报告**。

1. 在**审计报告目标**下，对于**创建新的 S3 桶？**，选择**是**并键入唯一桶名称，或选择**否**并从列表中选择现有的桶。

   如果您选择 “**是**”，则 AWS 私有 CA 会创建默认策略并将其附加到您的存储桶。默认策略包括`aws:SourceAccount`条件密钥，该密钥限制对特定 AWS 账户的访问权限。如果您想进一步限制访问权限，则可以在策略中添加其他条件密钥，如[前面的示例](#s3-access)所示。

   如果您选择**否**，则必须先将策略附加到桶，然后才能生成审计报告。使用 [为审计报告准备一个 Amazon S3 存储桶](#s3-access) 中所述的策略模式。有关附加策略的信息，请参阅[使用 Amazon S3 控制台添加存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

1. 在**输出格式**下，为 JavaScript 对象表示法选择 **JSON**，为逗号分隔值选择 **CSV**。

1. 选择 **Generate audit report (生成审核报告)**。

**创建审计报告 (AWS CLI)**

1. 如果您没有 S3 桶可用，则请[创建一个](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)。

1. 将策略附加到您的桶。使用 [为审计报告准备一个 Amazon S3 存储桶](#s3-access) 中所述的策略模式。有关附加策略的信息，请参阅[使用 Amazon S3 控制台添加桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)

1. 使用 [create-certificate-authority-audit-repor](https://docs.aws.amazon.com/cli/latest/reference/acm-pca/create-certificate-authority-audit-report.html) 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-name amzn-s3-demo-bucket \
   --audit-report-response-format JSON
   ```

## 检索审计报告
<a name="audit-report-retrieving"></a>

要检索审计报告以进行检查，请使用 Amazon S3 控制台、API、CLI 或软件开发工具包。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[下载对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)。

## 加密审计报告
<a name="audit-report-encryption"></a>

您可以选择在包含审计报告的 Amazon S3 存储桶上配置加密。 AWS 私有 CA 支持 S3 中资产的两种加密模式：
+ 使用 Amazon S3 托管的 AES-256 密钥自动进行服务器端加密。
+ 客户使用管理加密 AWS Key Management Service ，并根据您的规格 AWS KMS key 进行配置。

**注意**  
AWS 私有 CA 不支持使用 S3 自动生成的默认 KMS 密钥。

以下过程介绍如何设置每个加密选项。

**配置自动加密**

完成以下步骤以启用 S3 服务器端加密。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Buckets** 表中，选择用于存放您的 AWS 私有 CA 资产的存储桶。

1. 在存储桶页面上，选择**属性**选项卡。

1. 选择**默认加密**卡。

1. 请选择**启用**。

1. 选择 **Amazon S3 密钥（SSE-S3）**。

1. 选择**保存更改**。

**配置自定义加密**

完成以下步骤以启用使用自定义密钥的加密。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Buckets** 表中，选择用于存放您的 AWS 私有 CA 资产的存储桶。

1. 在存储桶页面上，选择**属性**选项卡。

1. 选择**默认加密**卡。

1. 请选择**启用**。

1. 选择**AWS Key Management Service 密钥 (SSE-KMS**)。

1. 选择 “**从 AWS KMS 密钥中选择” 或 “****输入 AWS KMS key ARN”**。

1. 选择**保存更改**。

1. （可选）如果您还没有 KMS 密钥，请使用以下 AWS CLI [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 命令创建一个：

   ```
   $ 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"
       }
   }
   ```

1. 使用以下步骤，您可以向 AWS 私有 CA 服务主体授予使用 KMS 密钥的权限。默认情况下，所有 KMS 密钥均为私有；只有资源拥有者可以使用 KMS 密钥加密和解密数据。但是，资源拥有者可以将 KMS 密钥的访问权限授予其他用户和资源。该服务主体必须位于存储 KMS 密钥的相同区域内。

   1. 首先，`policy.json`使用以下[get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)命令保存 KMS 密钥的默认策略：

      ```
      $ aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
      ```

   1. 在文本编辑器中打开 `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/*"
               ]
            }
         }
      }
      ```

   1. 最后，使用以下[put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)命令应用更新的策略：

      ```
      $ aws kms put-key-policy --key-id key_id --policy-name default --policy file://policy.json
      ```