기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 CloudWatch Logs의 조회 테이블 암호화 AWS Key Management Service
조회 테이블 데이터는 항상 CloudWatch Logs에서 암호화됩니다. 기본적으로 CloudWatch Logs는 256비트 Advanced Encryption Standard Galois/Counter Mode(AES-GCM)를 사용한 서버 측 암호화를 사용하여 유휴 시 조회 테이블 데이터를 암호화합니다. 대신 이 암호화를 위해 AWS Key Management Service 을 사용할 수 있습니다. 이렇게 하면 AWS KMS 키를 사용하여 암호화가 완료됩니다. 를 사용한 암호화 AWS KMS 는 조회 테이블을 생성하거나 업데이트할 때 KMS 키를 조회 테이블과 연결하여 조회 테이블 수준에서 활성화됩니다.
중요
CloudWatch Logs는 대칭 KMS 키만 지원합니다. 비대칭 키를 사용하여 조회 테이블의 데이터를 암호화하지 마십시오. 자세한 내용은 대칭 및 비대칭 키 사용을 참조하세요.
KMS 키를 조회 테이블에 연결하면 조회 테이블에 저장된 모든 데이터가이 키를 사용하여 암호화됩니다. CloudWatch Logs는 요청이 있을 때마다 이 데이터를 암호화 해제합니다. CloudWatch Logs에는 암호화된 데이터 요청이 발생할 때마다 KMS 키에 대한 권한이 있어야 합니다.
나중에 조회 테이블에서 KMS 키의 연결을 해제하면 CloudWatch Logs는 CloudWatch Logs 기본 암호화 방법을 사용하여 데이터를 암호화합니다. 그러나 연결 해제하기 전에 키가 비활성화되거나 삭제된 경우 CloudWatch Logs는 해당 키로 암호화된 데이터를 읽을 수 없습니다.
CloudWatch Logs가 AWS KMS 를 사용하여 로그 데이터를 암호화하는 방법에 대한 일반적인 내용은 섹션을 참조하세요를 사용하여 CloudWatch Logs의 로그 데이터 암호화 AWS Key Management Service.
CloudWatch Logs가 조회 테이블에 AWS KMS 를 사용하는 방법
CloudWatch Logs는 AWS KMS 봉투 암호화를 사용하여 조회 테이블 데이터를 보호합니다. KMS 키를 조회 테이블에 연결하면 CloudWatch Logs는 GenerateDataKey 요청을에 전송합니다 AWS KMS.는 고유한 데이터 암호화 키(DEK)를 AWS KMS 생성하고 일반 텍스트 사본과 DEK의 암호화된 사본을 모두 반환합니다. CloudWatch Logs는 일반 텍스트 DEK를 사용하여 조회 테이블 데이터를 암호화한 다음 암호화된 DEK를 암호화된 데이터와 함께 저장합니다. 일반 텍스트 DEK는 저장되지 않으며 사용 후 메모리에서 삭제됩니다.
CloudWatch Logs가 조회 테이블 데이터를 읽어야 하는 경우 암호화된 DEK AWS KMS 를 사용하여에 Decrypt 요청을 보냅니다.는 DEK를 AWS KMS 복호화하고 일반 텍스트 DEK를 CloudWatch Logs에 반환하며,이 로그는 이를 사용하여 조회 테이블 데이터를 복호화합니다.
CloudWatch Logs는 AWS KMS에 요청할 때 다음 암호화 컨텍스트를 사용합니다.
{
"aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name"
}
IAM 정책 및 AWS KMS 키 정책에서이 암호화 컨텍스트를 사용하여 KMS 키에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 AWS KMS 키 및 암호화 컨텍스트 단원을 참조하십시오.
필요한 권한
조회 테이블에서 AWS KMS 암호화를 사용하려면 IAM 보안 주체에 KMS 키에 대한 다음 AWS KMS 권한이 있어야 합니다.
kms:Decryptkms:GenerateDataKey
CloudWatch Logs가 사용자를 대신하여 데이터를 복호화할 수 있도록 KMS 키로 암호화된 조회 테이블GetLookupTable에서를 호출할 때 kms:Decrypt 권한이 필요합니다. 암호화된 조회 테이블에서 lookup 명령을 사용하는 쿼리StartQuery를 사용하여를 호출할 때 키( 조회 테이블을 암호화하는 데 사용되는 KMS 키)에 대한 kms:Decrypt 권한도 필요합니다. CloudWatch Logs가 조회 테이블 데이터를 암호화하는 데이터 암호화 키를 생성할 수 있도록 KMS 키를 UpdateLookupTable 사용하여 CreateLookupTable 또는를 호출할 때 kms:GenerateDataKey 권한이 필요합니다.
또한 CloudWatch Logs 서비스에는 KMS 키를 사용할 수 있는 권한이 있어야 합니다. 다음 섹션에 설명된 대로 KMS 키 정책에 정책 설명을 추가하여 이러한 권한을 부여합니다.
1단계: AWS KMS 키 생성
대칭 KMS 키를 생성하려면 다음 create-key 명령을 사용합니다.
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"
]
}
}
키 ARN을 기록합니다. 다음 단계에서 필요합니다.
2단계: KMS 키에 대한 권한 설정
기본적으로 모든 AWS KMS 키는 프라이빗입니다. 리소스 소유자만 이를 사용하여 데이터를 암호화 및 해독할 수 있습니다. CloudWatch Logs 서비스 보안 주체에게 키를 사용할 수 있는 권한을 부여하고 호출 역할에 키를 사용할 수 있는 권한도 부여해야 합니다.
먼저 다음 get-key-policy 명령을 사용하는 policy.json로 KMS 키에 대한 기본 정책을 저장합니다.
aws kms get-key-policy --key-idkey-id--policy-name default --output text > ./policy.json
텍스트 편집기에서 policy.json 파일을 열고 다음 문을 추가하여 CloudWatch Logs 서비스 보안 주체에게 키를 사용할 수 있는 권한을 부여합니다. 이 예제에서는 암호화 컨텍스트와 일치하는 Condition 섹션을 사용하여 키를 특정 조회 테이블로 제한합니다.
{ "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name", "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" } } }
그런 다음 CloudWatch Logs CreateLookupTable 또는 UpdateLookupTable APIs를 호출할 역할에 권한을 추가합니다. CloudWatch Logs는 kms:ViaService를 사용하여 고객을 대신하여에 전화를 AWS KMS 겁니다. 자세한 내용은 kms:ViaService를 참조하세요.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }
마지막으로 아래 put-key-policy 명령을 사용하여 업데이트된 정책을 추가합니다.
aws kms put-key-policy --key-idkey-id--policy-name default --policy file://policy.json
3단계: KMS 키를 조회 테이블에 연결
CreateLookupTable API를 사용하여 KMS 키를 생성할 때 조회 테이블과 연결하거나 UpdateLookupTable API를 사용하여 기존 조회 테이블을 업데이트할 수 있습니다. 두 APIs 모두 AWSLogsConfigService의 일부입니다.
조회 테이블을 생성할 때 KMS 키를 조회 테이블과 연결하려면
CreateLookupTable API를 사용하고 KMS 키의 ARN으로 kmsKeyArn 파라미터를 지정합니다.
aws logs create-lookup-table \ --lookup-table-namemy-lookup-table\ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
KMS 키를 기존 조회 테이블과 연결하려면
UpdateLookupTable API를 사용하고 KMS 키의 ARN으로 kmsKeyArn 파라미터를 지정합니다.
aws logs update-lookup-table \ --lookup-table-namemy-lookup-table\ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
고려 사항
-
조회 테이블에서 KMS 키를 연결하거나 연결 해제한 후 작업이 적용되려면 최대 5분이 걸릴 수 있습니다.
-
연결된 키에 대한 CloudWatch Logs 액세스를 취소하거나 연결된 KMS 키를 삭제하면 CloudWatch Logs에서 암호화된 조회 테이블 데이터를 더 이상 검색할 수 없습니다.
-
이 주제의 단계를 수행하려면 ,
kms:CreateKey,kms:PutKeyPolicy및CreateLookupTable또는kms:GetKeyPolicy를 호출할 적절한 CloudWatch Logs 권한이 있어야 합니다UpdateLookupTable.