View a markdown version of this page

AWS CloudTrail 如何使用 AWS KMS - AWS CloudTrail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CloudTrail 如何使用 AWS KMS

本節說明如何 AWS KMS 使用以 SSE-KMS 金鑰加密的 CloudTrail 追蹤。

重要

AWS CloudTrail 和 Amazon S3 僅支援對稱 AWS KMS keys。您無法使用非對稱 KMS 金鑰來加密您的 CloudTrail 日誌。如需判斷 KMS 金鑰是對稱金鑰還是非對稱金鑰的說明,請參閱《AWS Key Management Service 開發人員指南》中的 Identify different key types

當 CloudTrail 讀取或寫入使用 SSE-KMS 金鑰加密的日誌檔案時,您無需支付金鑰使用費。不過,當您存取使用 SSE-KMS 金鑰加密的 CloudTrail 日誌檔案時,您要支付金鑰使用費。如需 AWS KMS 定價的資訊,請參閱 AWS Key Management Service 定價。如需 CloudTrail 定價的資訊,請參閱 AWS CloudTrail 定價

了解您的 KMS 金鑰何時用於您的線索

在稱為伺服器端加密的 Amazon S3 功能上使用 AWS KMS key (SSE-KMS) AWS KMS 建置來加密 CloudTrail 日誌檔案。若要進一步了解 SSE-KMS,請參閱《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)

當您設定 AWS CloudTrail 使用 SSE-KMS 加密日誌檔案時,CloudTrail 和 Amazon S3 會在您使用這些服務執行特定動作 AWS KMS keys 時使用 。以下章節說明這些服務使用您的 KMS 金鑰的時機和方法,並提供您可用來驗證此說明的額外資訊。

您可以將 CloudTrail 設定為使用 加密日誌檔案 AWS KMS key

當您更新 CloudTrail 組態以使用 KMS 金鑰時,CloudTrail 會向 傳送GenerateDataKey請求 AWS KMS ,以驗證 KMS 金鑰是否存在,以及 CloudTrail 是否具有使用該金鑰進行加密的許可。CloudTrail 不會使用產生的資料金鑰。

GenerateDataKey 請求包含加密內容的下列資訊:

GenerateDataKey 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時,您可以判斷 CloudTrail AWS KMS GenerateDataKey已針對特定線索呼叫 操作。 已在特定 KMS 金鑰下 AWS KMS 建立資料金鑰。

{ "eventVersion": "1.09", "userIdentity": { "type": "AWSService", "invokedBy": "cloudtrail.amazonaws.com" }, "eventTime": "2024-12-06T20:14:46Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "cloudtrail.amazonaws.com", "userAgent": "cloudtrail.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770", "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/management-events", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket-123456789012-9af1fb49/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2010Z_TO50OLMG1hIQ1png.json.gz" } }, "responseElements": null, "requestID": "a0555e85-7e8a-4765-bd8f-2222295558e1", "eventID": "e4f3557e-7dbd-4e37-a00a-d86c137d1111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "sharedEventID": "ce71d6be-0846-498e-851f-111a1af9078f", "eventCategory": "Management" }

CloudTrail 將日誌檔案放到您的 S3 儲存貯體

每次 CloudTrail 將日誌檔案放入 S3 儲存貯體時,Amazon S3 都會 AWS KMS 代表 CloudTrail 傳送GenerateDataKey請求至 。為了回應此請求, AWS KMS 會產生唯一的資料金鑰,然後傳送兩個資料金鑰複本給 Amazon S3,一個為純文字,另一個使用指定的 KMS 金鑰加密。Amazon S3 使用純文字資料金鑰來加密 CloudTrail 日誌檔案,然後在使用後盡快從記憶體移除純文字資料金鑰。Amazon S3 會將加密的資料金鑰以中繼資料形式跟加密 CloudTrail 日誌檔案一起存放。

GenerateDataKey 請求包含加密內容的下列資訊:

每個 GenerateDataKey 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時,您可以判斷 CloudTrail 已針對特定線索呼叫 AWS KMS GenerateDataKey 操作,以保護特定日誌檔案。 在指定的 KMS 金鑰下 AWS KMS 建立資料金鑰,在同一日誌項目中顯示兩次。

{ "eventVersion": "1.09", "userIdentity": { "type": "AWSService", "invokedBy": "cloudtrail.amazonaws.com" }, "eventTime": "2024-12-06T21:49:28Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "cloudtrail.amazonaws.com", "userAgent": "cloudtrail.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1::trail/insights-trail", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2150Z_hVXmrJzjZk2wAM2V.json.gz" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" }, "responseElements": null, "requestID": "11117d14-9232-414a-b3d1-01bab4dc9f99", "eventID": "999e9a50-512c-4e2a-84a3-111a5f511111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "sharedEventID": "5e663acc-b7fd-4cdd-8328-0eff862952fa", "eventCategory": "Management" }

您從 S3 儲存貯體取得加密的日誌檔

每次從 S3 儲存貯體取得加密的 CloudTrail 日誌檔案時,Amazon S3 都會 AWS KMS 代表您傳送Decrypt請求至 ,以解密日誌檔案的加密資料金鑰。為了回應此請求, AWS KMS 會使用 KMS 金鑰來解密資料金鑰,然後將純文字資料金鑰傳送至 Amazon S3。Amazon S3 使用純文字資料金鑰來解密 CloudTrail 日誌檔案,然後在使用後盡快從記憶體移除純文字資料金鑰。

Decrypt 請求包含加密內容的下列資訊:

每個 Decrypt 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時,您可以判斷 擔任的角色是否針對特定線索和特定日誌檔案呼叫 AWS KMS Decrypt 操作。 已在特定 KMS 金鑰下 AWS KMS 解密資料金鑰。

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "attributes": { "creationDate": "2024-12-06T22:04:04Z", "mfaAuthenticated": "false" } }, "invokedBy": "AWS Internal" }, "eventTime": "2024-12-06T22:26:34Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/insights-trail", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T0000Z_aAAsHbGBdye3jp2R.json.gz" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "1ab2d2d2-111a-2222-a59b-11a2b3832b53", "eventID": "af4d4074-2849-4b3d-1a11-a1aaa111a111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }