将审计报告与您的私有 CA 一起使用 - AWS Private Certificate Authority

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

将审计报告与您的私有 CA 一起使用

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

有关向审计报告添加加密保护的信息,请参阅 加密审计报告

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

bucket-name/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 桶

要存储您的审计报告,您需要准备 Amazon S3 桶。有关更多信息,请参阅如何创建 S3 桶?

您的 S3 桶必须通过附加的权限策略进行保护。授权用户和服务委托人需要Put权限 AWS 私有 CA 才能在存储桶中放置对象,以及检索对象的Get权限。建议您应用如下所示的策略,该策略限制对 AWS 账户和私有 CA 的 ARN 的访问权限。有关更多信息,请参阅使用 Amazon S3 控制台添加桶策略

注意

在创建审计报告的控制台过程中,您可以选择允许 AWS 私有 CA 创建新存储桶并应用默认权限策略。默认策略对 CA 不施加任何 SourceArn 限制,因此比推荐的策略更宽松。如果您选择默认值,以后可以随时修改

{ "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:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition":{ "StringEquals":{ "aws:SourceAccount":"account", "aws:SourceArn":"arn:partition:acm-pca:region:account:certificate-authority/CA_ID" } } } ] }

创建审计报告

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

创建审计报告(控制台)
  1. 登录你的 AWS 账户并打开 AWS 私有 CA 主机,网址为 https://console.aws.amazon.com/acm-pca/home

  2. 私有证书颁发机构页面,从列表中选择您的私有 CA。

  3. 操作菜单中,选择生成审计报告

  4. 审计报告目标下,对于创建新的 S3 桶?,选择并键入唯一桶名称,或选择并从列表中选择现有的桶。

    如果您选择 “”,则 AWS 私有 CA 会创建默认策略并将其附加到您的存储桶。如果您选择,则必须先将策略附加到桶,然后才能生成审计报告。使用 为审计报告准备 Amazon S3 桶 中所述的策略模式。有关附加策略的信息,请参阅使用 Amazon S3 控制台添加桶策略

  5. 输出格式下,为 JavaScript 对象表示法选择 JSON,为逗号分隔值选择 CSV

  6. 选择 Generate audit report (生成审核报告)

创建审计报告 (AWS CLI)
  1. 如果您没有 S3 桶可用,则请创建一个

  2. 将策略附加到您的桶。使用 为审计报告准备 Amazon S3 桶 中所述的策略模式。有关附加策略的信息,请参阅使用 Amazon S3 控制台添加桶策略

  3. 使用 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-name bucket_name \ --audit-report-response-format JSON

检索审计报告

要检索审计报告以进行检查,请使用 Amazon S3 控制台、API、CLI 或软件开发工具包。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的下载对象

加密审计报告

您可以选择在包含审计报告的 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/

  2. Buckets 表中,选择用于存放您的 AWS 私有 CA 资产的存储桶。

  3. 在存储桶页面上,选择属性选项卡。

  4. 选择默认加密卡。

  5. 请选择 启用

  6. 选择 Amazon S3 密钥(SSE-S3)

  7. 选择保存更改

配置自定义加密

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

  1. 打开 Amazon S3 控制台,网址为:https://console.aws.amazon.com/s3/

  2. Buckets 表中,选择用于存放您的 AWS 私有 CA 资产的存储桶。

  3. 在存储桶页面上,选择属性选项卡。

  4. 选择默认加密卡。

  5. 请选择 启用

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

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

  8. 选择保存更改

  9. (可选)如果您还没有 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" } }
  10. 使用以下步骤,您可以向 AWS 私有 CA 服务主体授予使用 KMS 密钥的权限。默认情况下,所有 KMS 密钥均为私有;只有资源拥有者可以使用 KMS 密钥加密和解密数据。但是,资源拥有者可以将 KMS 密钥的访问权限授予其他用户和资源。该服务主体必须位于存储 KMS 密钥的相同区域内。

    1. 首先,policy.json使用以下get-key-policy命令保存 KMS 密钥的默认策略:

      $ aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
    2. 在文本编辑器中打开 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/*" ] } } }
    3. 最后,使用以下put-key-policy命令应用更新的策略:

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