CloudFront 로그에서 민감한 데이터를 제거하려면 어떻게 해야 하나요?

3분 분량
0

기본적으로 Amazon CloudFront 표준 로그의 일부 필드에는 민감한 데이터가 캡처됩니다. 개인 정보 보호 문제로 인해 로그에서 이 부분을 제거하고 싶습니다.

간략한 설명

참고: 이 문서에서는 Client-IP(c-ip) 필드의 예를 사용합니다.

CloudFront 로그는 기본적으로 c-ip를 필드 중 하나로 캡처합니다. 세 가지 방법으로 로그에서 c-ip를 제거할 수 있습니다.

  • Amazon Simple Storage Service(S3)로 전송되는 로그에서 이 필드를 제거하는 AWS Lambda 함수를 트리거합니다.
  • 일정 간격으로 실행되어 이 필드를 제거하는 Amazon Elastic Compute Cloud(Amazon EC2) 프로세스를 사용합니다.
  • CloudFront 실시간 로그를 사용하고 Amazon S3로 로그 데이터를 전송하기 전에 민감한 필드를 제거합니다.

해결 방법

Lambda 함수 트리거

c-ip 필드를 제거하는 방법 중 하나는 Amazon S3 알림 이벤트를 사용하는 것입니다. CloudFront가 로그 파일을 Amazon S3 버킷으로 전송할 때 Lambda 함수를 트리거하도록 버킷을 구성합니다.

Lambda 함수 생성

1.    AWS Lambda 콘솔을 엽니다.

2.    Functions(함수)에서 다음과 같은 구성의 새 Lambda 함수를 생성합니다.

  • Amazon S3 이벤트의 객체 이름을 사용합니다.
  • S3 버킷에서 해당 객체를 가져옵니다.

3.    c-ip 열을 제거하거나 값을 익명화된 데이터로 바꿉니다.

참고: 다른 애플리케이션에서 로그를 추가로 처리해야 하는 경우에 대비하여, 동일한 형식의 값으로 바꾸세요.

4.    로그를 저장하고 Amazon S3에 다시 업로드합니다.

새 이벤트 생성

1.    로그 대상 버킷에서 Properties(속성)으로 이동합니다.

2.    Event notifications(이벤트 알림)에서 새 이벤트를 생성합니다.

3.    이벤트 유형으로 Put을 대상으로 Lambda function(Lambda 함수)을 선택합니다.

4.    1단계에서 생성한 Lambda 함수를 선택한 다음 Save(저장)를 선택합니다.

중요: Lambda 함수에서 재귀 호출(무한 루프)을 방지하려면 다음 작업을 수행하세요.

  • CloudFront 로그가 초기 스테이징 접두사로 전달되도록 합니다. 예를 들어 ‘original’로 전달되도록 합니다.
  • 해당 접두사에서만 Amazon S3 이벤트가 트리거되도록 합니다.
  • Lambda 함수가 로그를 다른 접두사로 전달하도록 합니다. 예를 들어 ‘processed’로 전달되도록 합니다.

로그를 동일한 접두사로 전달하면 Lambda 함수가 다시 트리거되고 재귀 호출이 생성됩니다. 자세한 내용은 Avoiding recursive invocation with Amazon S3 and AWS Lambda(Amazon S3 및 AWS Lambda에서 재귀 호출 방지)를 참조하세요.

참고: Amazon S3 비용을 낮게 유지하려면, 일정 기간이 지나면 소스 로그를 만료하도록 Amazon S3 수명 주기 정책을 설정하세요.

Amazon EC2 프로세스 사용

Amazon EventBridge를 사용하여, EC2 인스턴스를 시작하고 일정에 따라 로그 파일을 반복적으로 처리하는 예약된 규칙(cron)을 생성합니다. 예를 들어 하루에 한 번 처리하는 규칙을 생성할 수 있습니다. 프로세스가 완료되면 다음에 반복될 때까지 EC2 인스턴스를 중지하여 비용을 절약하세요.

1.    지정된 시간에 EC2 인스턴스를 시작하도록 EventBridge와 Lambda를 구성합니다. 자세한 내용은 Lambda를 사용하여 Amazon EC2 인스턴스를 정기적으로 중지하고 시작하려면 어떻게 해야 하나요?를 참조하세요.

2.    일정 기간 동안 로그를 다운로드하는 코드를 EC2 인스턴스에 배포합니다. 예를 들어 하루 종일 로그를 다운로드하는 코드를 배포할 수 있습니다. c-ip 열을 제거하여 로그를 처리하거나, 이 열 값을 익명화된 데이터로 바꿉니다. 처리된 로그를 S3 버킷에 다시 업로드합니다.

선택 사항: 처리된 모든 로그를 단일 파일로 병합하여 Amazon S3 수명 주기 전환 비용을 절감합니다. 이 프로세스는 로그를 장기간 저장하려는 경우에 유용합니다.

Kinesis Data Firehose 사용

CloudFront 실시간 로그를 사용하여, 저장하려는 필드를 선택합니다. 나중에 Amazon Kinesis Data Firehose가 Amazon S3로 로그 데이터를 전송하도록 합니다.

CloudFront 실시간 로그를 구성하면 각 실시간 로그 레코드에 포함된 필드의 목록을 사용할 수 있습니다. 각 로그 레코드에는 최대 40개의 필드가 포함됩니다. 사용 가능한 모든 필드를 수신하거나, 성능을 모니터링하고 분석해야 하는 필드만 수신할 수 있습니다. c-ip 필드를 비활성화하여 로그에서 필드를 제외합니다.

참고: Amazon Kinesis Data Streams를 사용하므로 이 옵션은 비용이 많이 들 수 있습니다. 더 비용 효율적인 솔루션을 구현하려면 다른 두 가지 옵션(Lambda 함수 트리거 또는Amazon EC2 프로세스 사용)을 고려하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전