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

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

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

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

나중에 쿼리 결과에서 키 연결을 해제하면 CloudWatch Logs는 이후 쿼리에서 기본 암호화 방법을 다시 사용합니다. 그러나 키가 연결된 동안 실행된 쿼리는 여전히 해당 키로 암호화됩니다. CloudWatch Logs는 계속해서 키를 참조할 수 있으므로 CloudWatch Logs는 KMS 키의 연결이 해제된 후에도 여전히 해당 결과를 반환할 수 있습니다. 그러나 나중에 키를 비활성화하면 CloudWatch Logs는 해당 키로 암호화된 쿼리 결과를 읽을 수 없습니다.

중요

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

제한 사항

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

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

  • 연결된 키에 대한 CloudWatch Logs 액세스 권한을 취소하거나 연결된 KMS 키를 삭제한 경우에는 CloudWatch Logs에서 암호화된 데이터를 더 이상 검색할 수 없습니다.

  • CloudWatch 콘솔을 사용하여 키를 연결할 수는 없으며, AWS CLI 또는 CloudWatch Logs API를 사용해야 합니다.

1단계: 생성 AWS KMS key

다음 create-key 명령을 사용하여 KMS 키 생성:

aws kms create-key

이 명령의 출력 화면에는 키의 키 ID와 Amazon Resource Name(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 쿼리 결과로 제한합니다.

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

마지막으로 아래 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:*"