를 사용하여 쿼리 결과 암호화 AWS Key Management Service - Amazon CloudWatch Logs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 쿼리 결과 암호화 AWS Key Management Service

기본적으로 CloudWatch Logs는 기본 CloudWatch Logs 서버 측 암호화 방법을 사용하여 CloudWatch Logs Insights 쿼리의 저장된 결과를 암호화합니다. 키를 사용하여 대신 이러한 결과를 AWS KMS 암호화하도록 선택할 수 있습니다. AWS KMS 키를 암호화 결과와 연결하면 CloudWatch Logs는 해당 키를 사용하여 계정에 저장된 모든 쿼리의 결과를 암호화합니다.

나중에 쿼리 결과에서 키의 연결을 해제하는 경우 CloudWatch 로그는 이후 쿼리를 위한 기본 암호화 방법으로 돌아갑니다. 하지만 키가 연결된 동안 실행된 쿼리는 여전히 해당 키로 암호화됩니다. CloudWatch Logs는 KMS 여전히 키를 참조할 수 있으므로 키가 연결 해제된 후에도 CloudWatch 로그는 해당 결과를 반환할 수 있습니다. 하지만 나중에 키가 비활성화되면 CloudWatch Logs는 해당 키로 암호화된 쿼리 결과를 읽을 수 없습니다.

중요

CloudWatch 로그는 대칭 KMS 키만 지원합니다. 비대칭 키를 사용하여 쿼리 결과를 암호화하지 마세요. 자세한 내용은 대칭 및 비대칭 키 사용을 참조하세요.

Limits

  • 다음 단계를 수행하려면 kms:CreateKey, kms:GetKeyPolicykms:PutKeyPolicy 권한이 있어야 합니다.

  • 쿼리 결과에서 키를 연결하거나 연결 해제하고 난 후 이러한 변경이 적용되기까지 최대 5분의 시간이 소요될 수 있습니다.

  • 연결된 키에 대한 CloudWatch 로그 액세스를 취소하거나 연결된 KMS 키를 삭제하면 CloudWatch 로그의 암호화된 데이터를 더 이상 검색할 수 없습니다.

  • CloudWatch 콘솔을 사용하여 키를 연결할 수 없으며 AWS CLI 또는 CloudWatch 로그 를 사용해야 합니다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 키는 프라이빗입니다. 리소스 소유자만 이를 사용하여 데이터를 암호화 및 해독할 수 있습니다. 그러나 리소스 소유자가 원한다면 다른 사용자 및 리소스에 키에 대한 액세스 권한을 부여할 수 있습니다. 이 단계에서는 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:*"