Amazon CloudWatch Logs
ユーザーガイド

AWS KMS を使用した CloudWatch Logs でのログデータの暗号化

AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMK) を使用して CloudWatch Logs でログデータを暗号化できます。暗号化は、ロググループを作成するときか、ロググループが存在しているときに、CMK とロググループを関連付けることによりロググループレベルで有効になります。

CMK をロググループと関連付けると、ロググループの新たに取り込まれたすべてのデータが CMK を使用して暗号化されます。このデータは、保持期間を通じて暗号化形式で保存されます。CloudWatch Logs は、リクエストがあればいつでもこのデータを復号します。暗号化されたデータがリクエストされた場合は必ず、CloudWatch Logs に CMK のアクセス権限が必要です。

ロググループから CMK の関連付けを解除すると、CloudWatch Logs はロググループの新たに取り込まれたデータの暗号化を停止します。それまで取り込まれたすべてのデータは暗号化されたままです。

制限

  • CMK をロググループに関連付け、次のステップを実行するには、kms:CreateKeykms:GetKeyPolicy、および kms:PutKeyPolicy のアクセス権限を持っている必要があります。

  • CMK とロググループを関連付けまたは関連付け解除すると、オペレーションが有効になるまで最大 5 分かかることがあります。

  • 関連付けられた CMK への CloudWatch Logs のアクセスを取り消したり、関連付けられた CMK を削除した場合、CloudWatch Logs 内の暗号化されたデータを取得できなくなります。

  • CloudWatch コンソールを使用して CMK をロググループと関連付けることはできません。

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

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

aws kms create-key

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

{ "KeyMetadata": { "KeyId": "6f815f63-e628-448c-8251-e40cb0d29f59", "Description": "", "Enabled": true, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012" } }

ステップ 2: CMK でアクセス権限を設定する

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

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

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

テキストエディタで policy.json ファイルを開き、ステートメントを太字で追加します。region は、ロググループに使用するリージョンに置き換え、既存のステートメントと新しいステートメントをカンマで区切ります。

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::Your_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": "*" } ] }

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

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

ステップ 3: ログ グループと CMK を関連付ける

CMK とロググループは、ロググループの作成時または作成後に関連付けることができます。

ロググループの作成時に CMK をロググループに関連付けるには

次のように、create-log-group コマンドを使用します。

aws logs create-log-group --log-group-name my-log-group --kms-key-id "key-arn"

CMK を既存のロググループに関連付けるには

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

aws logs associate-kms-key --log-group-name my-log-group --kms-key-id "key-arn"

ステップ 4: ロググループを CMK の関連付けから解除する

ロググループに関連付けられた CMK の関連付けを解除するには、次の disassociate-kms-key コマンドを使用します。

aws logs disassociate-kms-key --log-group-name my-log-group