{CloudWatch Logs}を使用して CloudWatch Logs のログデータを暗号化するAWS Key Management Service

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html

ロググループのデータは常に CloudWatch Logs で暗号化されます。
この暗号化には、オプションで AWS Key Management Service を使用できます。
その場合、暗号化は AWS KMS カスタマーマネージドキーを使用して行われます。

AWS KMS を使用した暗号化は、ロググループの作成時または作成後に、キーとロググループを関連付けることにより、ロググループレベルで有効になります。

 

前提: CloudWatch エージェントのロググループを対象とする

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version


-- 2. AWS KMS カスタマーマネージドキーを作成する


aws kms create-key
aws kms list-keys | grep KeyId | wc -l


-- 3. カスタマーマネージドキーのアクセス許可を設定する

aws kms get-key-policy \
--key-id 11111111-2222-3333-4444-555555555555 \
--policy-name default \
--output text > ./policy01.json


vim policy01.json

{
 "Version": "2012-10-17",
    "Id": "key-default-1",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::999999999999:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.ap-northeast-1.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt*",
                "kms:Decrypt*",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:Describe*"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:ap-northeast-1:999999999999:log-group:amazon-cloudwatch-agent.log"
                }
            }
        }    
    ]
}

aws kms put-key-policy \
--key-id 11111111-2222-3333-4444-555555555555 \
--policy-name default \
--policy file://policy01.json


-- 4. ロググループをカスタマーマネージドキーに関連付ける

aws logs describe-log-groups \
--log-group-name-prefix "amazon-cloudwatch-agent.log"

aws logs associate-kms-key \
--log-group-name amazon-cloudwatch-agent.log \
--kms-key-id "arn:aws:kms:ap-northeast-1:999999999999:key/11111111-2222-3333-4444-555555555555"


-- 5. ロググループを CMK の関連付けから解除する

aws logs describe-log-groups \
--log-group-name-prefix "amazon-cloudwatch-agent.log"


aws logs disassociate-kms-key \
--log-group-name amazon-cloudwatch-agent.log

 

-- 6. クリーンアップ

-- ロググループの削除

aws logs describe-log-groups --log-group-name-prefix amazon-cloudwatch-agent.log


aws logs delete-log-group --log-group-name amazon-cloudwatch-agent.log

 

-- KMSキーの削除
aws kms list-keys

aws kms schedule-key-deletion \
--key-id arn:aws:kms:ap-northeast-1:999999999999:key/11111111-2222-3333-4444-555555555555 \
--pending-window-in-days 7