AWS KMS の主要ポリシーの設定 CloudTrail - AWS CloudTrail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS KMS の主要ポリシーの設定 CloudTrail

は次の 3 AWS KMS key つの方法で作成できます。

  • CloudTrail コンソール

  • AWS 管理コンソール

  • は AWS CLI

注記

CloudTrail コンソールで KMS キーを作成すると、必要な KMS CloudTrail キーポリシーが自動的に追加されます。ポリシーステートメントを手動で追加する必要はありません。「コンソールで作成されたデフォルト KMS キーポリシー CloudTrail 」を参照してください。

AWS 管理またはで KMS キーを作成する場合は AWS CLI、キーにポリシーセクションを追加して使用できるようにする必要があります。 CloudTrailポリシーでは、 CloudTrail キーを使用してログファイルとイベントデータストアを暗号化し、指定したユーザが暗号化されていない形式のログファイルを読み取れるようにする必要があります。

以下のリソースを参照してください。

で使用するために必要な KMS キーポリシーセクション CloudTrail

AWS 管理コンソールまたはで KMS キーを作成した場合 AWS CLI、KMS キーポリシーを使用するには、少なくとも KMS キーポリシーに次のステートメントを追加する必要があります。 CloudTrail

証跡用の KMS キーポリシーの必須要素

  1. CloudTrail ログ暗号化権限を有効にします。暗号化権限の付与 を参照してください。

  2. CloudTrail ログ復号権限を有効にします。復号の権限を付与する を参照してください。S3 バケットキーで既存の S3 バケットを使用している場合は、SSE-KMS 暗号化を有効にした証跡を作成または更新するために、kms:Decrypt アクセス許可が必要です。

  3. KMS CloudTrail キープロパティを記述できるようにします。KMS CloudTrail キープロパティを記述できるようにする を参照してください。

セキュリティのベストプラクティスとして、KMS キーポリシーに aws:SourceArn 条件キーを追加します。IAM aws:SourceArn グローバル条件キーは、特定の 1 つまたは複数のトレイルにのみ KMS CloudTrail キーを使用するようにするのに役立ちます。aws:SourceArn の値は、常に KMS キーを使用している証跡 ARN (または証跡 ARN の配列) です。既存の証跡用の KMS キーポリシーに aws:SourceArn 条件キーを必ず追加してください。

aws:SourceAccount 条件キーもサポートされていますが、推奨されません。aws:SourceAccount の値は、証跡の所有者のアカウント ID、または組織の証跡の場合は管理アカウント ID です。

重要

新しいセクションを KMS キーポリシーに追加するときは、ポリシー内の既存のセクションを変更しないでください。

トレイルで暗号化が有効になっていて、KMS キーが無効になっているか、KMS キーポリシーが正しく設定されていないと、ログを配信できません。 CloudTrail CloudTrail

イベントデータストア用の KMS キーポリシーの必須要素

  1. CloudTrail ログ暗号化権限を有効にします。暗号化権限の付与 を参照してください。

  2. CloudTrail ログ復号権限を有効にします。復号の権限を付与する を参照してください。

  3. KMS キーを使用してイベントデータストアデータを暗号化および復号するための許可をユーザーおよびロールに付与します。

    イベントデータストアを作成して KMS キーで暗号化する場合、または KMS キーで暗号化するイベントデータストアに対してクエリを実行する場合は、KMS キーに対する書き込みアクセス権が必要です。KMS キーポリシーには CloudTrail、イベントデータストアで操作 (クエリなど) を実行するユーザーがアクセスでき、KMS キーを管理できる必要があります。

  4. KMS CloudTrail キープロパティを記述できるようにする。KMS CloudTrail キープロパティを記述できるようにする を参照してください。

aws:SourceArn および aws:SourceAccount 条件キーは、イベントデータストアの KMS キーポリシーではサポートされていません。

重要

新しいセクションを KMS キーポリシーに追加するときは、ポリシー内の既存のセクションを変更しないでください。

イベントデータストアで暗号化が有効になっていて、KMS キーが無効化または削除されている場合、または KMS キーポリシーが正しく設定されていないと CloudTrail、 CloudTrailイベントデータストアにイベントを配信できません。

暗号化権限の付与

例 CloudTrail 特定のアカウントに代わってログを暗号化することを許可する

CloudTrail KMS キーを使用して特定のアカウントに代わってログを暗号化するには、明示的な権限が必要です。アカウントを指定するには、KMS キーポリシーに次の必須のステートメントを追加して、account-idregion、および trailName を設定に適切な値に置き換えます。EncryptionContextセクションにアカウント ID を追加して、それらのアカウントが KMS CloudTrail キーを使用してログファイルを暗号化できるようにすることができます。

セキュリティのベストプラクティスとして、証跡用の KMS キーポリシーに aws:SourceArn 条件キーを追加します。IAM aws:SourceArn グローバル条件キーは、特定の 1 つまたは複数のトレイルにのみ KMS CloudTrail キーを使用するようにするのに役立ちます。

{ "Sid": "Allow CloudTrail to encrypt logs", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:account-id:trail/*" } } }

CloudTrail Lake イベントデータストアログの暗号化に使用される KMS キーのポリシーでは、条件キーまたはを使用することはできません。aws:SourceArn aws:SourceAccountイベントデータストアの KMS キーポリシーの例を次に示します。

{ "Sid": "Allow CloudTrail to encrypt event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }

次のポリシーステートメントの例は、別のアカウントが KMS キーを使用してログを暗号化する方法を示しています。 CloudTrail

シナリオ
  • KMS キーは、アカウント 111111111111 にあります。

  • 自分も アカウント 222222222222 も両方ともログを暗号化します。

このポリシーでは、キーで暗号化するアカウントを 1 つ以上追加します。 CloudTrail EncryptionContextこれにより、 CloudTrail キーを使用してログを暗号化できるのは、指定したアカウントのログのみに制限されます。アカウント 222222222222 のルートにログを暗号化する権限を与えると、アカウント管理者に権限を委任して、必要な権限をそのアカウント内の他のユーザーに暗号化します。アカウント管理者は、これらの IAM ユーザーに関連するポリシーを変更することでこれを行います。

セキュリティのベストプラクティスとして、KMS キーポリシーに aws:SourceArn 条件キーを追加します。IAM aws:SourceArn グローバル条件キーは、指定された証跡にのみ KMS CloudTrail キーを使用するようにするのに役立ちます。この条件は、イベントデータストアの KMS キーポリシーではサポートされていません。

KMS キーポリシーステートメント:

{ "Sid": "Enable CloudTrail encrypt permissions", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": [ "arn:aws:cloudtrail:*:111111111111:trail/*", "arn:aws:cloudtrail:*:222222222222:trail/*" ] }, "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" } } }

で使用する KMS キーポリシーの編集について詳しくは CloudTrail、『開発者ガイド』の「キーポリシーの編集」を参照してください。 AWS Key Management Service

復号の権限を付与する

KMS CloudTrail キーを設定に追加する前に、復号化権限を必要とするすべてのユーザーに復号化権限を付与することが重要です。暗号化の許可はあっても、復号の許可がないユーザーは、暗号化されたログを読み取ることはできません。S3 バケットキーで既存の S3 バケットを使用している場合は、SSE-KMS 暗号化を有効にした証跡を作成または更新するために、kms:Decrypt アクセス許可が必要です。

ログ復号権限を有効にします CloudTrail 。

キーのユーザーには、暗号化されたログファイルを読み取るための明示的な権限を付与する必要があります。 CloudTrail ユーザーが暗号化されたログを読み取れるようにするには、次の必要なステートメントを KMS キーポリシーに追加し、Principal セクションを変更して、KMS キーを使用して復号できるすべてのプリンシパル のための行を追加します。

{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/username" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

以下は、 CloudTrail サービスプリンシパルがトレイルログを復号化できるようにするために必要なポリシーの例です。

{ "Sid": "Allow CloudTrail to decrypt a trail", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

CloudTrail Lake イベントデータストアで使用される KMS キーの復号化ポリシーは次のようなものです。Principal の値として指定されたユーザーまたはロールの ARN には、イベントデータストアの作成または更新、クエリの実行、またはクエリ結果の取得を行うための復号許可が必要です。

{ "Sid": "Enable user key permissions for event data stores" "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/username" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

以下は、 CloudTrail サービスプリンシパルがイベントデータストアのログを復号化できるようにするために必要なポリシーの例です。

{ "Sid": "Allow CloudTrail to decrypt an event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

アカウントのユーザーが KMS キーで証跡ログを復号することを許可する

このポリシーステートメントは、アカウント内のユーザー、またはロールがキーを使用してアカウントの S3 バケットの暗号化されたログを読み取ることを許可する方法を示しています。

例 シナリオ
  • KMS キー、S3 バケット、および IAM ユーザーの Bob は、アカウント 111111111111 にあります。

  • IAM ユーザーの Bob に S3 CloudTrail バケット内のログを復号する権限を付与します。

キーポリシーでは、IAM ユーザー Bob CloudTrail のログ復号権限を有効にします。

KMS キーポリシーステートメント:

{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/Bob" }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
トピック

    他のアカウントのユーザーが KMS キーで証跡ログを復号することを許可する

    他のアカウントのユーザーが KMS キーを使用して証跡ログを復号することを許可しつつ、イベントデータストアログは復号できないようにすることができます。キーポリシーに必要な変更は、S3 バケットが自分のアカウントにあるか、または別のアカウントにあるかによって異なります。

    別のアカウントのバケットのユーザーがログを復号する権限を与える

    このポリシーステートメントは、別のアカウントの IAM ユーザーまたはロールに、キーを使用して、他のアカウントの S3 バケットから暗号化されたログを読み取る権限を与える方法を示しています。

    シナリオ
    • KMS キーは、アカウント 111111111111 にあります。

    • IAM ユーザーである Alice と S3 バケットは、アカウント 222222222222 にあります。

    この場合、 CloudTrail アカウントでログを復号する権限を付与し222222222222、アカウントにあるキーを使用する権限を Alice の IAM ユーザーポリシーに付与します。KeyA 111111111111

    KMS キーポリシーステートメント:

    { "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::222222222222:root" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

    Alice の IAM ユーザーポリシーステートメント:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:111111111111:key/KeyA" } ] }

    別のアカウントのユーザーがバケットから証跡ログを復号することを許可する

    このポリシーは、S3 バケットから暗号化されたログを読み取るために、別のアカウントがキー使用する方法を示しています。

    例 シナリオ
    • KMS キーと S3 バケットは、アカウント 111111111111 にあります。

    • バケットからログを読み取るユーザーは、アカウント 222222222222 にあります。

    このシナリオを有効にするには、自分のアカウントの IAM ロールの復号化権限を有効にし、CloudTrailReadRole他のアカウントにそのロールを引き受ける権限を付与します。

    KMS キーポリシーステートメント:

    { "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::11111111111:role/CloudTrailReadRole" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

    CloudTrailReadRoleトラスト・エンティティ・ポリシー・ステートメント:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "sts:AssumeRole" } ] }

    で使用する KMS キーポリシーの編集については CloudTrail、『AWS Key Management Service 開発者ガイド』の「キーポリシーの編集」を参照してください。

    KMS CloudTrail キープロパティを記述できるようにする

    CloudTrail KMS キーのプロパティを記述できる必要があります。この機能を有効にするには、以下の必要なステートメントをそのまま KMS キーポリシーに追加します。このステートメントでは、 CloudTrail 指定した他の権限以外の権限は付与されません。

    セキュリティのベストプラクティスとして、KMS キーポリシーに aws:SourceArn 条件キーを追加します。IAM aws:SourceArn グローバル条件キーは、特定の 1 つまたは複数のトレイルにのみ KMS CloudTrail キーを使用するようにするのに役立ちます。

    { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" } } }

    KMS キーポリシーの編集の詳細については、AWS Key Management Service デベロッパーガイドの「キーポリシーの編集」を参照してください。