내용으로 건너뛰기

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

3분 분량
0

Amazon CloudFront 표준 로그는 기본적으로 일부 필드에서 민감한 데이터를 캡처합니다. 개인정보 보호가 우려되는 관계로 로그의 이 부분을 제거하려고 합니다.

간략한 설명

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

CloudFront 로그는 c-ip를 자체 필드 중 하나로 기본적으로 캡처합니다. 로그에서 c-ip를 제거하는 방법은 3가지입니다.

  • Amazon Simple Storage Service(Amazon S3)로의 로그 전송에서 필드를 제거하는 AWS Lambda 함수를 트리거합니다.
  • 특정 간격으로 실행되는 Amazon Elastic Compute Cloud(Amazon EC2)를 사용하여 필드를 제거합니다.
  • CloudFront 표준 로그를 사용하여 로그 데이터를 Amazon S3로 보내기 전에 민감한 필드를 제거합니다.

참고: 표준 로그를 활성화하려면 Pro 플랜 또는 종량제 플랜을 사용해야 합니다. 자세한 내용은 Amazon CloudFront 요금을 참조하십시오.

해결 방법

Lambda 함수 트리거

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

Lambda 함수 만들기

1.    AWS Lambda 콘솔을 엽니다.

2.    함수에서 다음 구성으로 새 Lambda 함수를 만듭니다.

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

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

참고: 다른 애플리케이션이 로그를 추가로 처리하는 경우에 대비하여 값을 바꾸어 형식을 동일하게 유지하십시오.

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

새 이벤트 만들기

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

2.    이벤트 알림에서 새 이벤트를 만듭니다.

3.    이벤트 유형에서 Put을 선택하고 대상을 Lambda 함수로 선택합니다.

4.    1단계에서 만든 Lambda 함수를 선택하고 저장을 선택합니다.

중요: Lambda 함수로 재귀 호출(무한 루프)이 발생하지 않도록 하려면 다음 작업을 수행하십시오.

  • CloudFront 로그가 첫 스테이징 접두사로 전송되도록 합니다. 예: "original".
  • Amazon S3 이벤트가 해당 접두사에서만 트리거되게 합니다.
  • Lambda 함수가 로그를 다른 접두사로 전송하게 합니다. 예: "processed".

로그를 동일한 접두사로 전송하면 Lambda 함수가 다시 트리거되어 재귀 호출이 생깁니다. 자세한 정보는 Amazon S3 및 AWS Lambda를 사용한 재귀 호출 방지를 참조하십시오.

참고: Amazon S3 비용을 저렴하게 유지하려면 Amazon S3 수명 주기 정책을 설정하여 특정 기간이 지나면 원본 로그가 만료되게 하십시오.

Amazon EC2 프로세스 사용

Amazon EventBridge를 사용하여 예약된 반복 시점에 EC2 인스턴스를 실행하고 로그 파일을 처리하는 예약된 규칙(cron)을 만듭니다. 예를 들어 하루에 한 번으로 예약할 수 있습니다. 프로세스가 완료되면 다음 반복 시까지 EC2 인스턴스를 중지하여 비용을 절약하십시오.

1.    EventBridge 및 Lambda가 주어진 시간에 EC2 인스턴스를 시작하도록 구성합니다. 자세한 내용은 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 공식업데이트됨 3년 전