本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon CloudTrail 如何使用 Amazon KMS
您可以使用 Amazon CloudTrail 来记录 Amazon Web Services 账户 的 Amazon API 调用和其他活动,以及将已记录的信息保存到您选择的 Amazon Simple Storage Service (Amazon S3) 存储桶中的日志文件。默认情况下, CloudTrail 放入 S3 存储桶的日志文件使用服务器端加密和 Amazon S3 托管加密密钥进行加密 (SSE-S3)。但是,您可以选择改为使用具有 KMS 密钥的服务器端加密 (SSE-KMS)。要了解如何使用加密 CloudTrail 日志文件Amazon KMS,请参阅用户指南中的使用 Amazon KMS keys(SSE-KMS) 加密 CloudTrail 日志文件。Amazon CloudTrail
重要
Amazon CloudTrail 和 Amazon S3 仅支持对称 Amazon KMS keys。您不能使用非对称 KMS 密钥来加密您的 CloudTrail 日志。要获取确定 KMS 密钥是对称还是非对称的帮助,请参阅 识别非对称 KMS 密钥。
CloudTrail 读取或写入使用 SSE-KMS 密钥加密的日志文件时,您无需支付密钥使用费。但是,当您访问使用 SSE-KMS 密钥加密的 CloudTrail 日志文件时,您需要支付密钥使用费。有关 Amazon KMS 定价的信息,请参阅 Amazon Key Management Service 定价
了解何时使用您的 KMS 密钥
使用基于 Amazon S3 的Amazon KMS功能对 CloudTrail 日志文件进行加密,该功能称为服务器端加密 Amazon KMS key (SSE-KMS)。要了解 SSE-KMS 的详情,请参阅本指南中的 Amazon Simple Storage Service (Amazon S3) 如何使用 Amazon KMS,或 Amazon Simple Storage Service 用户指南中通过具有 KMS 密钥的服务器端加密 (SSE-KMS) 保护数据。
当您配置Amazon CloudTrail为使用 SSE-KMS 加密日志文件时, CloudTrail Amazon S3 Amazon KMS keys 会在您对这些服务执行某些操作时使用您的日志文件。以下部分说明了这些服务将何时以及如何使用您的 KMS 密钥,并提供了您可以用于验证此说明的其他信息。
导致 CloudTrail 和 Amazon S3 使用您的 KMS 密钥的操作
您配置 CloudTrail 为使用您的日志文件进行加密 Amazon KMS key
当您更新 CloudTrail配置以使用您的 KMS 密钥时, CloudTrail 会向发送GenerateDataKey
请求,Amazon KMS以验证 KMS 密钥是否存在以及是否 CloudTrail 有权使用它进行加密。 CloudTrail 不使用生成的数据密钥。
GenerateDataKey
请求包括加密上下文的以下信息:
-
跟踪的亚马逊资源名称 (ARN) CloudTrail
-
S3 存储桶的 ARN 和 CloudTrail 日志文件的传送路径
该GenerateDataKey
请求会在您的 CloudTrail 日志中生成一个类似于以下示例的条目。当你看到这样的日志条目时,你可以确定那个 CloudTrail (
) 为特定的跟踪 Amazon KMS (
) 调用了 () GenerateDataKey
操作 (
)。
Amazon KMS在特定的 KMS 密钥下创建了数据密钥 (
)。
注意
您可能需要滚动到右侧以查看以下示例日志条目中的某些标注。
{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::086441151436:user/AWSCloudTrail", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "AWSCloudTrail", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T21:15:33Z" }}, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:33Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleAliasForCloudTrailKMS key", "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "581f1f11-88b9-11e5-9c9c-595a1fb59ac0", "eventID": "3cdb2457-c035-4890-93b6-181832b9e766", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333" }
CloudTrail 将日志文件放入您的 S3 存储桶
每次 CloudTrail 将日志文件放入您的 S3 存储桶时,Amazon S3 都会代表向发送GenerateDataKey
请求 CloudTrail。Amazon KMS为了响应该请求,Amazon KMS 会生成一个唯一的数据密钥,然后将该数据密钥的两个副本发送给 Amazon S3,一个为明文,另一个则使用指定的 KMS 密钥进行了加密。Amazon S3 使用纯文本数据密钥对 CloudTrail 日志文件进行加密,然后在使用后尽快从内存中删除纯文本数据密钥。Amazon S3 将加密的数据密钥作为元数据存储在加密的 CloudTrail 日志文件中。
GenerateDataKey
请求包括加密上下文的以下信息:
-
跟踪的亚马逊资源名称 (ARN) CloudTrail
-
S3 对象( CloudTrail 日志文件)的 ARN
每个GenerateDataKey
请求都会在您的 CloudTrail 日志中生成一个条目,类似于以下示例。当你看到这样的日志条目时,你可以确定 CloudTrail (
) 为特定跟踪 Amazon KMS (
) 调用了 (
) GenerateDataKey
操作 (
),以保护特定的日志文件 (
)。 Amazon KMS在指定的 KMS 密钥 (
) 下创建了数据密钥,在同一个日志条目中显示了两次。
注意
您可能需要滚动到右侧以查看以下示例日志条目中的某些标注。
{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:i-34755b85", "arn": "arn:aws:sts::086441151436:assumed-role/AWSCloudTrail/i-34755b85", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:45:25Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::086441151436:role/AWSCloudTrail", "accountId": "086441151436", "userName": "AWSCloudTrail" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:58Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" }, "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256" }, "responseElements": null, "requestID": "66f3f74a-88b9-11e5-b7fb-63d925c72ffe", "eventID": "7738554f-92ab-4e27-83e3-03354b1aa898", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333" }
从 S3 存储桶中获得加密的日志文件
每次您从 S3 存储桶获取加密的 CloudTrail 日志文件时,Amazon S3 都会代表您向发送解密该日志文件的加密数据密钥的Decrypt
请求。Amazon KMS为了响应该请求,Amazon KMS 使用您的 KMS 密钥将数据密钥解密,然后将明文数据密钥发送到 Amazon S3。Amazon S3 使用纯文本数据密钥解密 CloudTrail 日志文件,然后在使用后尽快从内存中删除纯文本数据密钥。
Decrypt
请求包括加密上下文的以下信息:
-
跟踪的亚马逊资源名称 (ARN) CloudTrail
-
S3 对象( CloudTrail 日志文件)的 ARN
每个Decrypt
请求都会在您的 CloudTrail 日志中生成一个条目,类似于以下示例。当您看到与此类似的日志条目时,便可以确定您的 Amazon Web Services 账户中的某个 IAM 用户(
)调用了特定跟踪(
)和特定日志文件(
)的 Amazon KMS(
)Decrypt
操作(
)。Amazon KMS 使用特定 KMS 密钥(
)解密了数据密钥。
注意
您可能需要滚动到右侧以查看以下示例日志条目中的某些标注。
{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/cloudtrail-admin", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "cloudtrail-admin", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:48:04Z" }}, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2015-11-11T21:20:52Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" } }, "responseElements": null, "requestID": "16a0590a-88ba-11e5-b406-436f15c3ac01", "eventID": "9525bee7-5145-42b0-bed5-ab7196a16daa", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }