AWS Key Management Service
開発者ガイド

AWS CloudTrail で AWS KMS を使用する方法

AWS CloudTrail を使用すると、AWS API 呼び出しや AWS アカウントの他のアクティビティを記録し、記録された情報を、選択した Amazon Simple Storage Service (Amazon S3) バケット内のログファイルに保存できます。デフォルトでは、CloudTrail によって S3 バケットに配信されるログファイルは、Amazon S3– で管理された暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。ただし、AWS KMS– 管理キーによるサーバー側の暗号化 (SSE-KMS) の使用を選択することもできます。AWS KMS を使用して CloudTrail ログファイルを暗号化する方法については、『AWS CloudTrail User Guide』の「 AWS KMS– 管理キー (SSE-KMS) による CloudTrail ログファイルの暗号化」を参照してください。

CMK をいつ使用するかについて

AWS KMS– 管理キー (SSE-KMS) によるサーバー側の暗号化と呼ばれる、Amazon S3 機能における AWS KMS ビルドによる CloudTrail ログファイルの暗号化SSE-KMS の詳細については、このガイドの「Amazon Simple Storage Service (Amazon S3) で AWS KMS を使用する方法」か、『Amazon Simple Storage Service 開発者ガイド』の「AWS KMS– 管理キーによるサーバー側の暗号化 (SSE-KMS) を使用したデータの保護」を参照してください。

SSE-KMS を使用してログファイルを暗号化するように AWS CloudTrail を設定すると、CloudTrail と Amazon S3 はそれらのサービスで特定のアクションを実行するときに KMS カスタマーマスターキー (CMK) を使用します。以下のセクションでは、これらのサービスが CMK をいつ、どのように使用するかについて説明し、この説明を確認するために使用できる追加情報を示します。

カスタマーマスターキー (CMK) によってログファイルを暗号化するように CloudTrail を設定する

CMK を使用するように CloudTrail 設定を更新すると、CloudTrail は GenerateDataKey リクエストを AWS KMS に送信し、CMK が存在することと、暗号化に CMK を使用する権限が CloudTrail にあることを確認します。CloudTrail は結果データキーを使用しません。

GenerateDataKey リクエストには、暗号化コンテキストの次の情報が含まれています。

GenerateDataKey リクエストの結果、次の例のようなエントリが CloudTrail ログに生成されます。このようなログエントリが表示された場合、AWS KMS ( ) GenerateDataKey API ( ) と呼ばれる CloudTrail ( ) を、特定の証跡 ( ) に定めることができます。特定の CMK ( ) において AWS KMS はデータキーを作成します。

注記

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "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/ExampleAliasForCloudTrailCMK", "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 の代わりに AWS KMS に送信します。このリクエストに応答して、AWS KMS は一意のデータキーを生成し、データキーのコピーを 2 つ Amazon S3 に送信します。1 つはプレーンテキストで、もう 1 つは指定した CMK によって暗号化されています。Amazon S3 はプレーンテキストデータキーを使用して CloudTrail ログファイルを暗号化し、使用後できるだけ早くプレーンテキストデータキーをメモリから削除します。Amazon S3 は、暗号化されたデータキーを、暗号化された CloudTrail ログファイルを使用したメタデータとして保存します。

GenerateDataKey リクエストには、暗号化コンテキストの次の情報が含まれています。

GenerateDataKey リクエストの結果、次の例のようなエントリが CloudTrail ログに生成されます。このようなログエントリが表示された場合、AWS KMS ( ) GenerateDataKey API ( ) と呼ばれる CloudTrail ( ) を、ログファイル ( ) を保存する特定の証跡 ( ) として定めることができます。特定の CMK ( ) において AWS KMS はデータキーを作成し、同じログエントリの中で 2 回表示します。

注記

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "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 リクエストを AWS KMS に送信し、ログファイルの暗号化されたデータキーを復号します。このリクエストに応答して、AWS KMS は CMK を使用してデータキーを復号し、Amazon S3 にプレーンテキストのデータキーを送信します。Amazon S3 はプレーンテキストのデータキーを使用して、CloudTrail ログファイルを復号し、使用後できるだけ早くプレーンテキストデータキーをメモリから削除します。

Decrypt リクエストには、暗号化コンテキストの次の情報が含まれています。

Decrypt リクエストの結果、次の例のようなエントリが CloudTrail ログに生成されます。このようなログエントリが表示された場合、AWS KMS ( ) Decrypt API ( ) と呼ばれる、AWS アカウント ( ) 内の IAM ユーザーを、特定の証跡 ( ) および特定のログファイル ( ) として定めることができます。特定の CMK ( ) において AWS KMS はデータキーを復号化します。

注記

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:user/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" }

CMK を使用する頻度について

コストを予測し、AWS 請求額を理解するためには、CMK を CloudTrail が使用する頻度を調べます。無料利用枠を超えたサービスへのすべての API リクエストで AWS KMS 料金が発生します。正確な料金については、「AWS Key Management Service の料金表」を参照してください。

AWS KMS– 管理キー (SSE-KMS) によって CloudTrail ログファイルを暗号化すると、CloudTrail がログファイルを S3 バケットに置くたびに、AWS KMS API リクエストが生成されます。通常、CloudTrail は 5 分おきにログファイルを S3 バケットに置くため、リージョンおよび AWS アカウントあたり 1 日に約 288 の AWS KMS API リクエストが生成されます。以下に例を示します。

  • 単一の AWS アカウントの 2 つのリージョンでこの機能を有効にした場合、1 日あたり約 576 の AWS KMS API リクエスト (2 x 288) が生成されると予想できます。

  • 3 つの各 AWS アカウントの 2 つのリージョンでこの機能を有効にした場合、1 日あたり約 1,728 の AWS KMS API リクエスト (6 x 288) が生成されると予想できます。

これらの数値は PUT リクエストから生じる AWS KMS 呼び出しのみを表します。S3 バケットから暗号化されたログファイルを取得したときに、GET リクエストから生じる AWS KMS への復号化呼び出しはカウントされません。