View a markdown version of this page

OpenTelemetry 지표에 대한 저장 데이터 암호화 - Amazon CloudWatch

OpenTelemetry 지표에 대한 저장 데이터 암호화

CloudWatch 데이터세트란?

Amazon CloudWatch로 전송하는 OpenTelemetry(OTel) 지표는 데이터세트라는 리소스에 저장됩니다. 모든 AWS 계정에는 모든 OTel 지표가 있는 각 리전에 default 데이터세트가 있습니다. default 데이터세트는 유일하게 지원되는 데이터세트이므로 추가 데이터세트를 생성할 수 없습니다.

데이터세트는 다른 AWS 리소스와 마찬가지로 암호화하고 태그를 지정할 수 있습니다. 데이터세트 ARN의 형식은 다음과 같습니다.

arn:{partition}:cloudwatch:{region}:{account-id}:dataset/default

데이터세트의 현재 암호화 구성을 보려면 GetDataset API를 사용합니다.

aws cloudwatch get-dataset \ --dataset-identifier default

고객 관리형 키가 데이터세트와 연결된 경우 응답에는 키 ARN이 포함됩니다. 고객 관리형 키가 연결되지 않은 경우 데이터세트는 AWS 소유 키로 암호화됩니다.

미사용 중 암호화 옵션

CloudWatch는 항상 데이터세트 저장 데이터를 암호화합니다. 기본적으로 CloudWatch는 AWS 소유 키를 사용하여 모든 저장 데이터를 암호화합니다. AWS 소유 키를 사용하여 데이터를 보호하기 위해 어떤 조치도 취할 필요가 없습니다. 자세한 내용은 AWS Key Management Service 개발자 가이드에서 AWS 소유 키를 참조하세요.

데이터세트 데이터를 암호화하는 데 사용되는 키를 관리하려면 AWS Key Management Service(AWS KMS)에서 고객 관리형 키를 사용하면 됩니다. 자세한 내용은 AWS Key Management Service Developer Guide의 Customer managed keys를 참조하십시오.

고객 관리형 키를 사용하는 경우 AWS KMS 요금이 부과됩니다. 요금에 대한 자세한 내용은 AWS Key Management Service 요금을 참조하세요.

CloudWatch가 데이터세트 암호화에 고객 관리형 키를 사용하는 방법

중요

고객 관리형 키 암호화는 default 데이터세트에 적용됩니다. default 데이터세트는 유일하게 지원되는 데이터세트이므로 추가 데이터세트를 생성할 수 없습니다.

고객 관리형 키를 default 데이터세트와 연결하면 CloudWatch는 키를 사용하여 해당 데이터세트에 저장된 모든 OTel 지표 데이터를 암호화합니다.

CloudWatch는 키 정책 권한과 함께 서비스 보안 주체(cloudwatch.amazonaws.com)를 직접 사용합니다. CloudWatch는 권한 부여 또는 IAM 역할을 사용하여 AWS KMS 키에 액세스하지 않습니다.

CloudWatch는 데이터 키를 캐싱하지 않습니다. 그러나 CloudWatch는 최대 15분 동안 kms:Decrypt 응답을 캐싱합니다. 키 정책에 대한 변경 사항이 적용되는 데 최대 15분이 걸릴 수 있습니다.

CloudWatch는 모든 AWS KMS 암호화 작업에 다음 암호화 컨텍스트를 사용합니다.

  • 키: aws:cloudwatch:arn

  • 값: arn:{partition}:cloudwatch:{region}:{account-id}:dataset/default

데이터세트에 대한 고객 관리형 키 구성

CloudWatch 데이터세트와 함께 사용하는 AWS KMS 키는 다음 요구 사항을 충족해야 합니다.

  • 키는 키 사용법이 ENCRYPT_DECRYPT인 대칭 암호화(SYMMETRIC_DEFAULT) 키여야 합니다. 비대칭 키는 지원되지 않습니다.

  • 다중 리전 키는 지원되지 않습니다.

  • 키는 데이터세트와 동일한 AWS 리전에 있어야 합니다.

  • 키를 정규화된 키 ARN으로 지정해야 합니다. 키 별칭 및 키 ID는 지원되지 않습니다.

키 정책 권한 구성

CloudWatch 데이터세트에서 고객 관리형 키를 사용하려면 키 정책에서 CloudWatch에 키를 사용할 수 있는 권한을 부여해야 합니다. 다음 예제 키 정책에서는 CloudWatch에 필요한 권한을 부여하며 혼동된 대리자 보호가 포함되어 있습니다.

데이터세트를 연결하거나 사용하는 호출자는 아래 AllowCallerDecrypt 문과 같이 CloudWatch ViaService 및 암호화 컨텍스트로 범위가 지정된 kms:Decrypt 권한이 있어야 합니다. YourApplicationRole을 CloudWatch 데이터세트 API를 호출하는 데 사용되는 IAM 역할로 바꿉니다.

예 CloudWatch 데이터세트 암호화에 대한 키 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudWatchDatasetDescribeKey", "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } }, { "Sid": "AllowCloudWatchDatasetEncryption", "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } }, { "Sid": "AllowCallerDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/YourApplicationRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudwatch.region.amazonaws.com", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } } ] }

account-id리전을 자체 값으로 바꿉니다.

키 정책에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS에서의 키 정책을 참조하세요.

고객 관리형 키를 데이터세트와 연결

AssociateDatasetKmsKey API를 사용하여 고객 관리형 키를 데이터세트와 연결합니다. default를 데이터세트 식별자로 지정해야 합니다.

AWS CLI를 사용하여 고객 관리형 키를 연결하려면 다음 명령을 실행합니다.

aws cloudwatch associate-dataset-kms-key \ --dataset-name default \ --kms-key-arn arn:aws:kms:region:account-id:key/key-id

암호화 구성 변경 또는 제거

데이터세트 데이터를 암호화하는 고객 관리형 키를 변경하거나 제거할 수 있습니다.

고객 관리형 키 변경

고객 관리형 키를 바꾸려면 AssociateDatasetKmsKey를 새 키 ARN으로 다시 호출합니다. 호출자는 현재 키와 새 키 모두에 대한 kms:Decrypt 권한이 있어야 합니다. CloudWatch는 후속 암호화 작업에 새 키를 사용하기 시작합니다.

고객 관리형 키 제거

고객 관리형 키를 제거하고 AWS 소유 키 암호화로 되돌리려면 DisassociateDatasetKmsKey를 호출합니다. 호출자는 현재 연결된 키에 대한 kms:Decrypt 권한이 있어야 합니다.

aws cloudwatch disassociate-dataset-kms-key \ --dataset-name default
중요

고객 관리형 키의 연결을 해제한 후에도 CloudWatch에 이전에 연결된 키에 대한 kms:Decrypt 권한이 여전히 필요한 3시간의 적용 기간이 있습니다. 이 기간 동안에는 키를 비활성화하거나 삭제하지 마세요.

키가 비활성화된 상태인 경우 키를 다시 활성화해야 데이터세트에서 연결을 해제할 수 있습니다.

키 정책 액세스 범위 축소

키 정책에서 조건을 사용하여 AWS KMS 키에 대한 액세스를 제한할 수 있습니다.

암호화 컨텍스트 조건

kms:EncryptionContext:aws:cloudwatch:arn 조건 키를 사용하여 default 데이터세트에 대한 키 사용을 제한합니다.

"Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" } }
혼동된 대리자 보호

aws:SourceArnaws:SourceAccount 조건을 사용하여 교차 계정의 혼동된 대리자 공격을 방지합니다.

"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } }
kms:ViaService 조건

kms:ViaService 조건 키를 사용하여 키 사용을 CloudWatch에서 오는 요청으로 제한합니다.

"Condition": { "StringEquals": { "kms:ViaService": "cloudwatch.region.amazonaws.com" } }

AWS KMS와의 CloudWatch 상호 작용 모니터링

AWS CloudTrail을 사용하여 CloudWatch가 사용자 대신 AWS KMS에 전송하는 요청을 추적할 수 있습니다. AWS CloudTrail 로그 항목은 서비스 보안 주체 cloudwatch.amazonaws.comcloudwatch.{region}.amazonaws.comViaService 값을 사용합니다.

CloudWatch 데이터세트 암호화 작업의 로그 항목에는 다음 CloudTrail 이벤트 이름이 나타납니다.

  • GenerateDataKey

  • Encrypt

  • Decrypt

  • DescribeKey

  • ReEncrypt

각 로그 항목에는 작업이 적용되는 특정 데이터세트를 식별하는 데 사용할 수 있는 암호화 컨텍스트가 포함되어 있습니다.

AWS KMS 키 사용량 모니터링에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS Key Management Service 모니터링을 참조하세요.