AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

确定客户主密钥的过去使用情况

在删除客户主密钥 (CMK) 之前,您可能想要了解使用该密钥加密了多少密文。AWS KMS 不会存储此信息,也不会存储任何密文。要获取此信息,您必须自行确定 CMK 的过去使用情况。了解 CMK 的过去使用情况可帮助您决定将来是否需要此 CMK。以下指南有助于您确定 CMK 的过去使用情况。

检查 CMK 权限以确定潜在使用范围

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

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

AWS KMS 已与 AWS CloudTrail 集成,因此所有 AWS KMS API 活动都会记录在 CloudTrail 日志文件中。如果您在客户主密钥 (CMK) 所在的区域中启用了 CloudTrail,则可以检查 CloudTrail 日志文件,以查看特定 CMK 的所有 AWS KMS API 活动的历史记录,从而了解其使用情况历史记录。您或许能够使用 CMK 的使用情况历史记录来帮助确定是否依然需要此 CMK。

以下示例显示了使用 KMS CMK 保护存储在 Amazon Simple Storage Service (Amazon S3) 中的对象时生成的 CloudTrail 日志条目。在此示例中,对象通过使用 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 上传到 Amazon S3。当使用 SSE-KMS 将对象上传到 Amazon S3 时,请指定要用于保护对象的 KMS CMK。Amazon S3 使用 AWS KMS GenerateDataKey API 来请求对象的唯一数据密钥,此 API 事件将记录在 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 会向 AWS KMS 发送 Decrypt API 请求,以使用指定 CMK 解密对象的数据密钥。执行该操作时,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 将记录所有 AWS KMS API 活动。通过评估这些日志条目,您可以确定特定 CMK 的过去使用情况,这将有助于您确定是否需要将其删除。

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