

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

# 确定 KMS 密钥的过去使用情况
<a name="deleting-keys-determining-usage"></a>

在删除 KMS 密钥之前，您可能想知道在该密钥下加密了多少密文。 AWS KMS 不存储此信息，也不存储任何密文。了解 KMS 密钥的过去使用情况可帮助您决定将来是否需要此 KMS 密钥。本主题建议多种有助于您确定 KMS 密钥的过去使用情况的策略。

**警告**  
这些确定过去和实际使用情况的策略仅对 AWS 用户和 AWS KMS 操作有效。它们无法检测到 AWS KMS外部非对称 KMS 密钥的公有密钥的使用情况。有关删除用于公有密钥加密的非对称 KMS 密钥的特殊风险的详细信息，包括创建无法解密的密文，请参阅 [Deleting asymmetric KMS keys](deleting-keys.md#deleting-asymmetric-cmks)。

**Topics**
+ [检查 KMS 密钥权限以确定潜在使用范围](#deleting-keys-usage-key-permissions)
+ [检查 AWS CloudTrail 日志以确定实际使用情况](#deleting-keys-usage-cloudtrail)

## 检查 KMS 密钥权限以确定潜在使用范围
<a name="deleting-keys-usage-key-permissions"></a>

通过确定当前有权访问 KMS 密钥的对象，可帮助您确定 KMS 密钥的广泛使用程度以及是否仍然需要此 KMS 密钥。要了解如何确定当前有权访问 KMS 密钥的对象，请转到 [确定访问权限 AWS KMS keys](determining-access.md)。

## 检查 AWS CloudTrail 日志以确定实际使用情况
<a name="deleting-keys-usage-cloudtrail"></a>

您或许能够使用 KMS 密钥使用情况历史记录来帮助确定是否使用特定 KMS 密钥加密了密文。

所有 AWS KMS API 活动都记录在 AWS CloudTrail 日志文件中。如果您在 KMS 密钥所在的区域[创建了 CloudTrail 跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)，则可以检查 CloudTrail 日志文件以查看特定 KMS 密钥的所有 AWS KMS API 活动的历史记录。如果您没有跟踪，您仍然可以在活动[历史记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)中查看最近的事件。CloudTrail 有关如何 AWS KMS 使用的详细信息 CloudTrail，请参阅[使用记录 AWS KMS API 调用 AWS CloudTrail](logging-using-cloudtrail.md)。

以下示例显示了使用 KMS 密钥保护存储在亚马逊简单存储服务 (Amazon S3) Service 中的对象时生成的 CloudTrail 日志条目。在本示例中，对象通过使用 [KMS 密钥 (SSE-KMS) 的服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)上传到 Amazon S3 中。当您使用 SSE-KMS 将对象上传到 Amazon S3 时，需指定用于保护对象的 KMS 密钥。Amazon S3 使用该 AWS KMS [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)操作请求对象的唯一数据密钥，此请求事件 CloudTrail 使用类似于以下内容的条目登录：

```
{
  "eventVersion": "1.02",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user",
    "arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user",
    "accountId": "111122223333",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2015-09-10T23:12:48Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::111122223333:role/Admins",
        "accountId": "111122223333",
        "userName": "Admins"
      }
    },
    "invokedBy": "internal.amazonaws.com"
  },
  "eventTime": "2015-09-10T23:58:18Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "GenerateDataKey",
  "awsRegion": "us-west-2",
  "sourceIPAddress": "internal.amazonaws.com",
  "userAgent": "internal.amazonaws.com",
  "requestParameters": {
    "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"},
    "keySpec": "AES_256",
    "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  },
  "responseElements": null,
  "requestID": "cea04450-5817-11e5-85aa-97ce46071236",
  "eventID": "80721262-21a5-49b9-8b63-28740e7ce9c9",
  "readOnly": true,
  "resources": [{
    "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "accountId": "111122223333"
  }],
  "eventType": "AwsApiCall",
  "recipientAccountId": "111122223333"
}
```

当您稍后从 Amazon S3 下载此对象时，Amazon S3 会向发送`Decrypt`请求，要求使用指定的 KMS 密钥解密该对象的数据密钥。 AWS KMS 执行此操作时，您的 CloudTrail 日志文件将包含类似于以下内容的条目：

```
{
  "eventVersion": "1.02",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user",
    "arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user",
    "accountId": "111122223333",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2015-09-10T23:12:48Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::111122223333:role/Admins",
        "accountId": "111122223333",
        "userName": "Admins"
      }
    },
    "invokedBy": "internal.amazonaws.com"
  },
  "eventTime": "2015-09-10T23:58:39Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "Decrypt",
  "awsRegion": "us-west-2",
  "sourceIPAddress": "internal.amazonaws.com",
  "userAgent": "internal.amazonaws.com",
  "requestParameters": {
    "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"}},
  "responseElements": null,
  "requestID": "db750745-5817-11e5-93a6-5b87e27d91a0",
  "eventID": "ae551b19-8a09-4cfc-a249-205ddba330e3",
  "readOnly": true,
  "resources": [{
    "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "accountId": "111122223333"
  }],
  "eventType": "AwsApiCall",
  "recipientAccountId": "111122223333"
}
```

所有 AWS KMS API 活动都由记录 CloudTrail。通过评估这些日志条目，您可以确定特定 KMS 密钥的过去使用情况，这将有助于您确定是否需要将其删除。

要查看 AWS KMS API 活动如何在 CloudTrail 日志文件中显示的更多示例，请访问[使用记录 AWS KMS API 调用 AWS CloudTrail](logging-using-cloudtrail.md)。有关更多信息， CloudTrail 请访问[AWS CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。