确定 KMS 密钥的过去使用情况 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

确定 KMS 密钥的过去使用情况

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

警告

这些用于确定过去使用情况和实际使用情况的策略仅对 Amazon 用户和 Amazon KMS 操作有效。它们无法检测到 Amazon KMS 外部非对称 KMS 密钥的公有密钥的使用情况。有关删除用于公有密钥加密的非对称 KMS 密钥的特殊风险的详细信息,包括创建无法解密的密文,请参阅 删除非对称 KMS 密钥

检查 KMS 密钥权限以确定潜在使用范围

通过确定当前有权访问 KMS 密钥的对象,可帮助您确定 KMS 密钥的广泛使用程度以及是否仍然需要此 KMS 密钥。要了解如何确定当前有权访问 KMS 密钥的对象,请转到 确定对 Amazon KMS keys 的访问权限

检查 Amazon CloudTrail 日志以确定实际使用情况

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

所有 Amazon KMS API 活动都记录在 Amazon CloudTrail 日志文件中。如果您在您的 KMS 密钥所在的区域创建了 CloudTrail 跟踪,您可以检查您的 CloudTrail 日志文件,以查看特定 KMS 密钥的所有 Amazon KMS API 活动的历史记录。如果您没有跟踪,则仍可在 CloudTrail 事件历史记录中查看最近的事件。有关 Amazon KMS 如何使用 CloudTrail 的详细信息,请参阅 使用 Amazon KMS 记录 Amazon CloudTrail API 调用

以下示例显示了使用 KMS 密钥保护存储在 Amazon Simple Storage Service (Amazon S3) 中的对象时生成的 CloudTrail 日志条目。在本示例中,对象通过使用 Amazon KMS托管密钥的服务器端加密 (SSE-KMS) 上传到 Amazon S3 中。当您使用 SSE-KMS 将对象上传到 Amazon S3 时,需指定用于保护对象的 KMS 密钥。Amazon S3 使用 Amazon KMS GenerateDataKey 操作来请求用于对象的唯一数据密钥,此请求事件会记录在 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 会向 Amazon KMS 发送 Decrypt 请求,以使用指定的 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" }

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

要查看有关 Amazon KMS API 活动如何显示在 CloudTrail 日志文件中的更多示例,请转到 使用 Amazon KMS 记录 Amazon CloudTrail API 调用。有关 CloudTrail 的更多信息,请转到 Amazon CloudTrail 用户指南