でクエリ結果を暗号化する AWS Key Management Service - Amazon CloudWatch ログ

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

でクエリ結果を暗号化する AWS Key Management Service

デフォルトでは、 CloudWatch Logs は、 CloudWatch デフォルトの Logs サーバー側の暗号化方法を使用して CloudWatch Logs Insights クエリの保存結果を暗号化します。代わりに、 AWS KMS キーを使用してこれらの結果を暗号化することもできます。 AWS KMS キーを暗号化結果に関連付けると、 CloudWatch Logs はそのキーを使用してアカウント内のすべてのクエリの保存された結果を暗号化します。

後でクエリ結果からキーの関連付けを解除すると、 CloudWatch ログは後のクエリのデフォルトの暗号化方法に戻ります。ただし、キーの関連付け中に実行されたクエリは、そのキーで暗号化されます。 CloudWatch ログはKMSキーの関連付けを解除した後も、それらの結果を返すことができます。これは、 CloudWatch ログが引き続きキーを参照できるためです。ただし、キーが後で無効になっていると、 CloudWatch ログはそのキーで暗号化されたクエリ結果を読み取ることができません。

重要

CloudWatch ログは対称KMSキーのみをサポートします。クエリ結果の暗号化に非対称キーを使用しないでください。詳細については、「対称キーと非対称キーの使用」を参照してください。

制限

  • 以下の手順を実行するには、kms:CreateKeykms:GetKeyPolicy、および kms:PutKeyPolicy アクセス許可が必要です。

  • キーとクエリ結果を関連付けた後、または関連付けを解除した後、オペレーションが有効になるまで最大 5 分かかることがあります。

  • 関連付けられたキーへの CloudWatch ログアクセスを取り消すか、関連付けられたKMSキーを削除すると、 CloudWatch ログの暗号化されたデータを取得できなくなります。

  • CloudWatch コンソールを使用してキーを関連付けることはできません。 AWS CLI または CloudWatch Logs を使用する必要がありますAPI。

ステップ 1: を作成する AWS KMS key

KMS キーを作成するには、次の create-key コマンドを使用します。

aws kms create-key

出力には、キーのキー ID と Amazon リソースネーム (ARN) が含まれます。出力例を次に示します。

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

ステップ 2: KMSキーに対するアクセス許可を設定する

デフォルトでは、すべてのKMSキーはプライベートです。リソースの所有者のみがその CMK を使用してデータを暗号化および復号できます。ただし、リソース所有者は、他のユーザーとリソースにキーへのアクセス許可を付与することができます。このステップでは、 CloudWatch Logs サービスプリンシパルにキーを使用するアクセス許可を付与します。このサービスプリンシパルは、キーが保存されている同じ AWS リージョンにある必要があります。

ベストプラクティスとして、キーの使用は、指定した AWS アカウントのみに制限することをお勧めします。

まず、次のget-key-policyコマンドpolicy.jsonを使用して、KMSキーのデフォルトポリシーを として保存します。

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

テキストエディタで policy.json ファイルを開き、以下のいずれかのステートメントから太字のセクションを追加します。既存のステートメントと新しいステートメントをカンマで区切ります。これらのステートメントでは、 Conditionセクションを使用して AWS KMS キーのセキュリティを強化します。詳細については、「AWS KMS キーと暗号化コンテキスト」を参照してください。

この例の Conditionセクションでは、 AWS KMS キーの使用を、指定されたアカウントの CloudWatch Logs Insights クエリ結果に制限します。

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:logs:region:account_ID:query-result:*" }, "StringEquals": { "aws:SourceAccount": "Your_account_ID" } } } ] }

最後に、次のput-key-policyコマンドを使用して、更新されたポリシーを追加します。

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

ステップ 3: KMSキーをクエリ結果に関連付ける

KMS キーをアカウントのクエリ結果に関連付けるには

次のように disassociate-kms-key コマンドを使用します。

aws logs associate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*" --kms-key-id "key-arn"

ステップ 4: アカウントのクエリ結果からキーの関連付けを解除する

クエリ結果に関連付けられたKMSキーの関連付けを解除するには、次のdisassociate-kms-keyコマンドを使用します。

aws logs disassociate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*"