AWS CloudTrail
ユーザーガイド (Version 1.0)

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

カスタマーマスターキー (CMK) を作成するには次の 3 つの方法があります。

  • CloudTrail コンソール

  • IAM コンソール

  • AWS CLI

注記

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

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

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

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

  • CloudTrail の CMK ポリシーを編集するには、AWS Key Management Service Developer Guide の「キーポリシーの編集」を参照してください。

  • CloudTrail が AWS KMS を使用する方法の技術的な詳細については、AWS Key Management Service Developer Guide の「AWS CloudTrail で AWS KMS を使用する方法」を参照してください。

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

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

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

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

  3. CloudTrail で CMK プロパティを記述できるようにします。「CloudTrail での CMK プロパティの記述の有効化」を参照してください。

注記

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

警告

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

暗号化権限の付与

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

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

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

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

シナリオ

  • 自分の CMK はアカウント 111111111111 にあります。

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

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

CMK ポリシーステートメント:

{ "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 で使用する CMK ポリシーを編集する手順については、AWS Key Management Service Developer Guide の「キーポリシーの編集」を参照してください。

復号の権限を付与する

CloudTrail 設定に CMK を追加する前に、必要なすべてのユーザーに復号する権限を与えることが重要です暗号化の権限はあっても、復号の権限がないユーザーは、暗号化されたログを読み取ることはできません。

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

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

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

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

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

例 シナリオ

  • CMK、S3 バケット、および IAM ユーザーの Bob はアカウント 111111111111 の中です。

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

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

CMK ポリシーステートメント:

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

トピック

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

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

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

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

    シナリオ

    • 自分の CMK はアカウント 111111111111 にあります。

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

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

    CMK ポリシーステートメント:

    { "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-east-1:111111111111:key/keyA" } ] }

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

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

    例 シナリオ

    • CMK と S3 バケットはアカウント 111111111111 にあります。

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

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

    CMK ポリシーステートメント:

    { "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 で使用する CMK ポリシーを編集する手順については、AWS Key Management Service Developer Guide の「キーポリシーの編集」を参照してください。

    CloudTrail での CMK プロパティの記述の有効化

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

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

    CMK ポリシーの編集の詳細については、AWS Key Management Service Developer Guide の「キーポリシーの編集」を参照してください。