CloudTrail の AWS KMS キーポリシーの設定 - AWS CloudTrail

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

CloudTrail の AWS KMS キーポリシーの設定

AWS KMS key を作成するには 3 つの方法があります。

  • CloudTrail コンソール

  • AWS マネジメントコンソール

  • AWS CLI

注記

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

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

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

  • AWS CLI で KMS キーを作成するには、「create-key」を参照してください。

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

  • CloudTrail の AWS KMS の使用方法に関する技術的な詳細については、AWS Key Management Service デベロッパーガイドの「AWS CloudTrail の AWS KMS 使用方法」を参照してください。

CloudTrail での使用に必要な KMS キーポリシーセクション

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

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

  1. CloudTrail のログ暗号化のアクセス許可を有効にします。「暗号化権限の付与」を参照してください。

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

  3. CloudTrail を有効にして KMS キープロパティを記述します。「CloudTrail を有効にして KMS キープロパティを記述する」を参照してください。

セキュリティのベストプラクティスとして、KMS キーポリシーに aws:SourceArn 条件キーを追加します。IAM グローバル条件キー aws:SourceArn は、CloudTrail が特定の 1 つまたは複数の証跡に対してのみ KMS キーを使用できるようにするのに役立ちます。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. CloudTrail を有効にして KMS キープロパティを記述します。「CloudTrail を有効にして KMS キープロパティを記述する」を参照してください。

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

重要

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

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

暗号化権限の付与

例 CloudTrail に特定のアカウントに代わってログを暗号化する権限を与える

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

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

{ "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 は、CloudTrail が指定された証跡に対してのみ KMS キーを使用することを保証するのに役立ちます。この条件は、イベントデータストアの 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" } } }

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

復号の権限を付与する

CloudTrail 設定に KMS キーを追加する前に、必要なすべてのユーザーに復号する権限を与えることが重要です 暗号化の許可はあっても、復号の許可がないユーザーは、暗号化されたログを読み取ることはできません。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 にあります。

  • S3 バケットの CloudTrail ログを復号するアクセス許可を IAM ユーザーの Bob に与えます。

キーポリシーでは、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 ユーザーポリシーに、アカウント 111111111111 にある自分のキー KeyA を使用する権限を付与します。

    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" } ] }

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

    CloudTrail を有効にして KMS キープロパティを記述する

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

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

    { "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 デベロッパーガイドの「キーポリシーの編集」を参照してください。