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

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

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

  • CloudTrail コンソール

  • IAM コンソール

  • The AWS CLI

注記

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

IAM コンソールまたは 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 キーポリシーセクション

IAM コンソールまたは AWS CLI を使用して KMS キーを作成した場合は、CloudTrail と連携するために、少なくとも 3 つのステートメントを KMS キーポリシーに追加する必要があります。CloudTrail コンソールを使用して作成された KMS キーのステートメントを手動で追加する必要はありません。

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

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

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

注記

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

警告

KMS キーが無効になっているか KMS キーポリシーが CloudTrail 用に正しく設定されていない場合、CloudTrail は KMS キーの問題が修正されるまでログを配信しません。

暗号化権限の付与

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

CloudTrail には、KMS キーを使用して特定のアカウントに代わってログを暗号化する明示的な権限が必要です。アカウントを指定するには、KMS キーポリシーに次の必要なステートメントを追加し、必要に応じて aws-account-id を変更します。EncryptionContext セクションにアカウント ID を追加して、これらのアカウントで CloudTrail により KMS キーを使用してログファイルを暗号化できます。

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

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

Scenario

  • KMS キーはアカウント 111111111111 にあります。

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

このポリシーでは、キーで暗号化する 1 つ以上のアカウントを CloudTrail EncryptionContext に追加します。これにより、CloudTrail は自分のキーを使用して、自分が指定したアカウントのログのみを暗号化するように制限されます。アカウント 222222222222 のルートにログを暗号化する権限を付与すると、そのアカウントの管理者は、IAM ユーザーポリシーを変更して、必要に応じてアカウント 222222222222 の他のユーザーに暗号化権限を割り当てることができます。

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

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::aws-account-id:user/username" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

KMS キーで復号するために権限をアカウントのユーザーに与える

Example

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

例 Scenario

  • 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": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

トピック

    他のアカウントのユーザーが KMS キーで復号する権限を与える

    他のアカウントのユーザーが KMS キーを使用してログを復号する権限を与えることができます。キーポリシーに必要な変更は、S3 バケットが自分のアカウントにあるか、または別のアカウントにあるかによって異なります。

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

    Example

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

    Scenario

    • 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": "*", "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 バケットから暗号化されたログを読み取るために、別のアカウントがキー使用する方法を示しています。

    例 Scenario

    • 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": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

    CloudTrailReadRole 信頼エンティティポリシーステートメント:

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

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

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

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

    { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*" }

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