[신기능] Amazon CloudWatch Logs 민감 데이터 보호 기능에 대하여

Amazon CloudWatch Logs 민감 데이터 보호 기능에 대하여 작성한 글 입니다.
2022.12.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드의 수재입니다.
이번 리인벤트 기간 중 AWS CloudWatch의 Logs 에서 민감한 데이터 보호 기능이 발표되었습니다.
간단한 내용이므로 바로 알아보도록 하겠습니다.

AWS CloudWatch

AWS, 온프레미스 및 기타 클라우드에서 리소스 및 애플리케이션을 관측하고 모니터링
Amazon CloudWatch는 실시간 로그, 지표 및 이벤트 데이터를 자동화된 대시보드에 수집하고 이를 시각화하여 인프라 및 애플리케이션 유지 관리를 간소화합니다.

AWS CloudWatch는 지표, 로그 등을 수집하고 시각화 및 경보 등을 설정할 수 있는 서비스입니다.
이 중 CloudWatch Logs(로그)는 로그 그룹 별로 로그 스트림을 관리할 수 있습니다. 그리고 수집한 로그를 토대로 CloudWatch Logs Insights를 사용하여 로그 데이터를 대화식으로 검색하고 분석할 수 있습니다.

무엇이 추가되었는가

수집한 로그에서 보안에 민감한 정보를 표시할 때 마스킹 된 내용으로 표시할 수 있게 되었습니다.
마스킹 된 예시로는 다음과 같습니다.

## 표시되는 IP를 마스킹하고 싶은 상황
{
    "httpRequest": {
        "clientIp": "185.254.196.115",
        "country": "US",
        "headers": [
            {
                "name": "Host",
                "value": "54.150.189.95"
            },
        ],
        ...
    }
}

## 다음과 같이 마스킹 됨
{
    "httpRequest": {
        "clientIp": "*********",
        "country": "US",
        "headers": [
            {
                "name": "Host",
                "value": "*********"
            },
        ],
        ...
    }
}

설정 방법

CloudWatch 콘솔에서 간단하게 설정가능합니다.
우선 마스킹을 설정할 로그 그룹에 들어간 후 [Data protection] 탭에서 [create policy]를 클릭하여 정책을 생성합니다.

그리고 필요한 마스킹 유형을 선택합니다.
선택할 수 있는 유형은 공식 문서를 참고해주세요.
필요에 따라 감사 보고서를 활성화하여 감사 내용을 다른 로그 그룹이나 S3, Kinesis Data Firehose로 전송하는 것도 가능합니다.

Syntax 탭에서 현재 설정을 json 형식으로 볼 수 있으며 필요에 따라 직접 수정할 수 있습니다.
Syntax의 내용은 여기에 기재되어 있습니다.

정책을 생성하면 이후로 생성되는 데이터 스트림에 대하여 다음과 같이 마스킹이 설정됩니다.

정책 설정 전의 스트림에 대해서는 반영되어 있지 않습니다.

마스킹을 해제한 데이터를 보고 싶다면 사용자에게 logs:Unmask 권한이 있어야 합니다. 권한을 별개로 추가하거나 권한이 포함된 CloudWatchLogsFullAccess 정책을 연결하면 됩니다.
권한이 있다면 다음과 같은 방법으로 마스킹이 해제된 데이터를 볼 수 있습니다.

  • 콘솔에서의 방법
    • [Display] 에서 마스킹을 해제합니다.
  • CloudWatch Logs Insights 의 쿼리
    • unmask(@{필드이름})
      fields @timestamp, @message, unmask(@message)
      | sort @timestamp desc
      | limit 20

요금

마스킹 한 로그의 크기에 따라 요금이 부과됩니다.
서울 리전의 경우에는 다음과 같습니다.

  • Detect and Mask (Data Protection) $0.12 per GB of data scanned

자세한 요금은 요금 페이지의 Paid tier를 참고해주세요.

마무리

기존의 필터링 기능에 이어서 마스킹 기능까지 추가되어 로그 관리의 효율이 증가하였습니다.
로그 스트림을 다른 고객에게 공유해야할 일이 있을 때 좀 더 편하게 필요한 내용은 감출 수 있게 된 것 같네요.
정책을 설정한 이후의 스트림에 대해서만 마스킹이 반영된다는 점 꼭 기억해주세요!

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다. must01940 지메일로 연락 주시면 감사합니다!


본 블로그 게시글을 보시고 문의 사항이 있으신 분들은
클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !