1. 캐시 계층이 만드는 새로운 심사 쟁점
앞서 다룬 Amazon S3, Amazon DynamoDB, Amazon RDS 편은 모두 데이터가 머무는 저장소를 대상으로 했습니다. Amazon CloudFront는 성격이 다릅니다. 데이터를 보관하기 위한 서비스가 아니지만, 응답을 전 세계 엣지 로케이션에 복제하여 보관한다는 점에서 사실상 또 하나의 저장 계층으로 작동합니다.
이 특성 때문에 CloudFront에서는 다른 서비스에 없는 두 가지 쟁점이 발생합니다.
- 캐시된 응답이 다른 사용자에게 제공될 수 있습니다. 인증이 필요한 페이지가 캐시되면 타인의 개인정보가 그대로 노출됩니다. 설정 오류 한 건이 즉시 유출 사고로 이어지는 구조이므로, 심사에서 가장 중대하게 다루어집니다.
- 캐시의 물리적 위치를 고객이 지정할 수 없습니다. 요청이 발생한 지역의 엣지에 응답이 저장되므로, 개인정보를 캐시하면 국외 저장으로 해석될 소지가 있습니다.
따라서 CloudFront의 컴플라이언스 대응은 “무엇을 캐시하지 않을 것인가”를 정의하는 작업에서 시작합니다. 암호화와 접근 통제는 그 다음 문제입니다.
2. 제도별 적용 가능성 요약
| 제도 | 활용 | 핵심 제약 사항 |
|---|---|---|
| ISMS / ISMS-P | 가능 | 전송 구간 암호화, 접근 통제, 침해 대응, 로그 관리 항목에 모두 대응할 수 있습니다. 액세스 로그는 기본적으로 비활성 상태이므로 활성화와 보존 기간 설정이 전제가 됩니다. |
| 개인정보 안전성 확보조치 기준 | 조건부 | 개인정보를 포함한 응답을 캐시하지 않는 구성이 전제입니다. 캐시 정책과 오리진 응답 헤더를 함께 통제해야 하며, 액세스 로그 자체가 개인정보 파일이 될 수 있습니다. |
| 전자금융감독규정 / 금융 클라우드 가이드 | 조건부 | 국내 소재 요건과 국외 엣지 캐시가 충돌할 수 있습니다. 중요정보 응답은 캐시 대상에서 제외하고, 정적 자산만 캐시하는 구성으로 한정해야 합니다. |
| CSAP | 제약 큼 | CloudFront는 CSAP 인증 범위 서비스에 해당하지 않습니다. 공공 대상 시스템은 인증 사업자의 CDN 서비스를 사용해야 합니다. |
| KCMVP | 부분 | 전송 구간 보호는 표준 TLS로 수행되며 KCMVP 검증 모듈과는 별개입니다. 검증 모듈로 사전 암호화한 데이터를 전달하는 방식은 가능하나, 이 경우 콘텐츠 변환 기능을 사용할 수 없습니다. |
3. 통제 영역별 CloudFront 구성 구조
그림 1. 국내 보안 인증 요구사항의 통제 영역과 Amazon CloudFront 대응 구조
4. 캐시로 인한 개인정보 노출 방지
심사에서 가장 중대하게 다루어지는 항목입니다. 인증이 필요한 응답이 캐시되면 첫 번째 사용자의 응답이 이후 요청자에게 그대로 제공되어, 타인의 개인정보가 노출되는 사고로 직결됩니다. 이는 설정 오류 한 건으로 발생하므로 구성 단계에서 구조적으로 차단해야 합니다.
| 항목 | 조치 방법 |
|---|---|
| 개인정보 포함 응답의 캐싱 | 해당 경로 패턴에 별도 동작(Behavior)을 만들고 캐싱 비활성 정책을 적용하거나 TTL을 0으로 설정합니다. 정적 자산과 동적 응답을 서로 다른 경로 패턴으로 분리하는 설계가 전제입니다. |
| 오리진 응답 헤더 |
개인정보를 포함한 응답에는 오리진에서 Cache-Control: private, no-store를 반환합니다.
CloudFront 설정에만 의존하지 않고 오리진에서도 함께 선언해야 설정 변경 시 사고를 방지할 수 있습니다.
|
| 캐시 키 설계 |
인증 분기가 존재하는 경로는 Authorization 헤더 또는 세션 쿠키를 캐시 키에 포함합니다.
포함하지 않으면 사용자 구분 없이 동일한 응답이 제공됩니다.
|
| 쿼리스트링의 식별정보 | URL에 고유식별정보나 연락처를 담지 않습니다. 캐시 키와 액세스 로그에 평문으로 남으며, 로그 보존 기간 동안 계속 유지됩니다. |
| 사고 시 제거 절차 | 무효화(invalidation) 수행 방법과 담당자, 승인 절차를 사고 대응 절차서에 명시합니다. 유출이 확인된 경우 즉시 캐시를 제거할 수 있어야 합니다. |
X-Cache 값이 적중(Hit)으로 표시되는 개인정보 페이지가 있다면 즉시 조치가 필요합니다.
이 시험 결과는 심사 시 유효한 증적으로 활용할 수 있습니다.
5. 전송 구간 암호화
뷰어 구간만 암호화하고 오리진 구간을 평문으로 두는 구성은 빈번한 지적 사항입니다. 양방향 모두 통제해야 합니다.
2.7암호화 적용
| 구간 | 설정 | 증적 |
|---|---|---|
| 뷰어 → CloudFront | 뷰어 프로토콜 정책을 Redirect HTTP to HTTPS 또는 HTTPS Only로 지정합니다. |
동작별 프로토콜 정책 설정, HTTP 요청의 리디렉션 응답 |
| TLS 버전 |
보안 정책을 TLSv1.2_2021 이상으로 설정하여 SSL 3.0, TLS 1.0, TLS 1.1을 비활성화합니다.
|
보안 정책 설정, 외부 TLS 점검 결과 |
| 인증서 | ACM 인증서를 사용합니다. CloudFront에 연결할 인증서는 버지니아 북부 리전에서 발급해야 하며, 전용 IP 방식이 아닌 SNI 방식을 사용합니다. | 인증서 ARN, 자동 갱신 설정, 만료일 관리 대장 |
| CloudFront → 오리진 |
오리진 프로토콜 정책을 HTTPS Only로 설정하고 오리진 최소 TLS를 1.2 이상으로 지정합니다.
정적 웹사이트 엔드포인트를 오리진으로 사용하면 이 구간이 평문이 되므로, REST 엔드포인트와 OAC 조합으로 전환합니다.
|
오리진 설정, 오리진 측 인증서 구성 |
| HSTS | 응답 헤더 정책으로 Strict-Transport-Security를 적용합니다. |
응답 헤더 정책 설정, 응답 헤더 확인 결과 |
6. 접근 통제 — 오리진 보호와 비공개 콘텐츠
CloudFront를 경유하도록 구성했더라도 오리진에 직접 접근할 수 있다면 WAF와 서명 검증이 모두 무력화됩니다. 우회 경로 차단이 접근 통제의 핵심입니다.
2.6접근 통제
| 요구사항 | 구성 방법 | 증적 |
|---|---|---|
| S3 오리진 직접 접근 차단 |
OAC(Origin Access Control)를 사용하고, 버킷 정책에서 해당 배포만 허용하도록
AWS:SourceArn 조건을 적용합니다. 퍼블릭 액세스 차단 4개 설정을 함께 활성화합니다.
|
OAC 설정, 버킷 정책, 직접 접근 시도의 거부 응답 |
| ALB·EC2 오리진 직접 접근 차단 | CloudFront 관리형 접두사 목록을 보안 그룹 인바운드에 적용하고, 사용자 지정 헤더를 추가하여 오리진 측 또는 WAF 규칙에서 해당 헤더가 없는 요청을 거부합니다. | 보안 그룹 규칙, 헤더 검증 규칙, 우회 시도 차단 로그 |
| 비공개 콘텐츠 제공 | 서명된 URL 또는 서명된 쿠키를 사용하고 만료 시간을 업무상 필요한 최소 범위로 제한합니다. 개인정보가 포함된 파일은 공개 경로에 배치하지 않습니다. | 서명 발급 로직, 만료 시간 설정, 발급 이력 |
| 서명 키 관리 | 키 그룹의 공개 키를 주기적으로 교체하고 개인 키는 Secrets Manager 등 안전한 저장소에 보관합니다. | 키 그룹 구성, 교체 이력, 키 접근 권한 |
| 접근 지역 제한 | 국내 전용 서비스인 경우 지리적 제한으로 허용 국가를 한정합니다. | 지리적 제한 설정, 차단 응답 로그 |
| 디렉터리 정보 노출 방지 | 기본 루트 객체를 지정하고, 오류 응답에 내부 정보가 포함되지 않도록 사용자 지정 오류 페이지를 설정합니다. | 기본 루트 객체 설정, 오류 페이지 구성 |
7. 침해 예방 및 대응
CloudFront는 외부 트래픽이 가장 먼저 도달하는 지점이므로, 웹 공격 차단과 서비스 거부 공격 대응의 1차 방어선이 됩니다.
- AWS WAF 연동 — 관리형 공통 규칙 집합과 SQL 인젝션·악성 입력 차단 규칙을 적용하고, 속도 기반 규칙으로 과도한 요청을 제한합니다. 차단 로그를 보존하여 침해 시도 대응 증적으로 활용합니다.
- 서비스 거부 공격 대응 — 표준 보호는 기본 적용됩니다. 중요 서비스는 상위 보호 서비스 적용과 대응 체계 연계를 검토합니다.
- 보안 응답 헤더 — 응답 헤더 정책으로
X-Content-Type-Options,X-Frame-Options,Referrer-Policy,Content-Security-Policy,Permissions-Policy를 적용하고, 서버 정보를 노출하는 헤더는 제거합니다. - 오리진 부하 보호 — Origin Shield를 적용하여 오리진 노출과 부하를 축소합니다.
- 엣지 로직 검증 — CloudFront Functions 또는 Lambda@Edge를 사용하는 경우 해당 코드도 형상 관리와 보안 검토 대상에 포함합니다.
8. 로그 및 접속기록
CloudFront의 액세스 로그는 기본적으로 비활성 상태입니다. 활성화하지 않으면 외부에서 어떤 요청이 들어왔는지에 대한 기록이 전혀 남지 않습니다. CloudTrail은 배포 설정 변경과 같은 관리 이벤트만 기록합니다.
| 항목 | 조치 방법 |
|---|---|
| 로그 활성화 | 표준 액세스 로그 또는 실시간 로그를 활성화하고 로그 저장소에 적재합니다. 실시간 분석이 필요한 경우 실시간 로그를 병행합니다. |
| 보존 기간 | 수명 주기 규칙으로 적용 법령 기준(1년, 해당 시 2년) 이상 보존하도록 설정합니다. |
| 로그의 개인정보 | 클라이언트 IP, 요청 URI, 쿠키가 기록되므로 로그 자체가 개인정보 파일이 될 수 있습니다. 로그 버킷에 SSE-KMS 암호화, 퍼블릭 액세스 차단, 최소 권한 접근 통제를 동일 수준으로 적용합니다. |
| 로그 무결성 | 로그 버킷에 Object Lock을 적용하고 운영 계정과 분리된 계정에 보관합니다. |
| 설정 변경 이력 | CloudTrail로 배포 설정 변경을 기록하고, 배포 구성은 코드로 관리하여 변경 근거를 남깁니다. |
| 정기 점검 | 월 1회 이상 로그를 점검하고 점검 결과와 조치 내역을 기록으로 남깁니다. |
9. 데이터 소재 및 국외 이전
CloudFront는 요청이 발생한 지역의 엣지 로케이션에 응답을 캐시합니다. 고객은 캐시가 저장되는 위치를 직접 지정할 수 없습니다. 따라서 개인정보나 중요정보를 캐시하는 구성은 국외 저장으로 해석될 소지가 있으며, 금융 부문의 국내 소재 요건과 충돌할 수 있습니다.
| 항목 | 검토 사항 |
|---|---|
| 국외 엣지 캐시 | 개인정보·중요정보 응답은 캐시 대상에서 제외하고 통과만 허용합니다. 캐시 대상은 이미지·스크립트·스타일시트와 같은 정적 자산으로 한정합니다. |
| 가격 클래스 | 엣지 사용 범위를 좁힐 수는 있으나 특정 국가만으로 한정하는 기능이 아닙니다. 데이터 소재 요건의 해결책으로 제시하기에는 근거가 부족합니다. |
| 접근 지역 제한 | 지리적 제한은 접근 통제 수단이며, 캐시 저장 위치를 제한하지 않는다는 점에 유의해야 합니다. |
| 로그 저장 위치 | 로그 버킷은 리전을 지정할 수 있습니다. 서울 리전에 두고 국외 복제 규칙이 없는지 확인합니다. |
| 문서화 | 캐시 대상 데이터의 분류 결과와 개인정보 미포함 근거를 문서로 남깁니다. 국외 이전 여부에 대한 판단 근거는 심사와 실태 점검에서 모두 요구됩니다. |
10. 취약점 점검 항목의 대체 설명
국내 웹 서버 취약점 점검 항목은 고객이 직접 운영하는 웹 서버를 전제로 작성되어 있습니다. CloudFront는 관리형 엣지 서비스이므로 일부 항목이 적용 대상이 아니며, 해당 없음으로 처리할 경우 사유와 대체 수단을 함께 기술해야 합니다.
| 점검 항목 유형 | CloudFront 적용 | 대체 설명 |
|---|---|---|
| 웹 서버 데몬 계정 및 설정 파일 권한 | 해당 없음 | 웹 서버 소프트웨어와 운영체제가 노출되지 않으며 해당 영역은 AWS 책임 범위입니다. AWS Artifact 인증 보고서로 대체 증적을 제시합니다. |
| 불필요한 메서드 차단 | 적용 | 허용 HTTP 메서드를 동작별로 제한하고, WAF 규칙으로 추가 차단합니다. |
| 디렉터리 목록 노출 | 적용 | 기본 루트 객체 지정과 오리진 측 목록 비활성화 설정을 증적으로 제출합니다. |
| 서버 정보 노출 헤더 제거 | 적용 | 응답 헤더 정책으로 불필요한 헤더를 제거하고 응답 확인 결과를 제출합니다. |
| 취약한 암호화 통신 사용 | 적용 | 보안 정책 설정과 외부 TLS 점검 결과를 함께 제출합니다. |
| 웹 서버 버전 및 패치 관리 | 해당 없음 | 버전 개념이 없으며 패치는 AWS가 수행합니다. 고객 영역은 엣지 함수 코드와 오리진 애플리케이션의 버전 관리로 제시합니다. |
| 접근 로그 설정 | 적용 | 액세스 로그 활성화 상태와 보존 기간을 증적으로 제출합니다. 기본값이 비활성이므로 핵심 확인 사항입니다. |
cloudfront-viewer-policy-https, cloudfront-no-deprecated-ssl-protocols,
cloudfront-traffic-to-origin-encrypted, cloudfront-accesslogs-enabled,
cloudfront-associated-with-waf, cloudfront-s3-origin-access-control-enabled,
cloudfront-security-policy-check, cloudfront-default-root-object-configured,
cloudfront-origin-failover-enabled 등을 적용하고,
준수 현황 리포트를 정기적으로 보관하시기 바랍니다.
11. 제도별 통합 매핑 표
| CloudFront 기능 | ISMS-P | 개인정보 안전성 확보조치 | 전자금융감독규정 | CSAP |
|---|---|---|---|---|
| HTTPS 강제 · 최소 TLS 1.2 | 대응 2.7 암호화 적용 | 대응 전송 시 암호화 | 대응 통신 보호 | 범위 외 인증 서비스 아님 |
| 오리진 구간 HTTPS | 대응 전송 구간 보호 | 대응 내부 구간 보호 | 대응 구간 암호화 | 범위 외 인증 서비스 아님 |
| OAC 기반 오리진 보호 | 대응 2.6 접근 통제 | 대응 접근 통제 | 대응 우회 경로 차단 | 범위 외 인증 서비스 아님 |
| 서명 URL · 서명 쿠키 | 대응 비공개 자원 통제 | 대응 접근 권한 관리 | 대응 자원 접근 통제 | 범위 외 인증 서비스 아님 |
| AWS WAF 연동 | 대응 2.10 침해 예방 | 대응 악성 요청 차단 | 대응 침입 차단 | 범위 외 인증 서비스 아님 |
| 액세스 로그 | 대응 2.9 로그 관리 | 부분 처리 목적 기록 별도 필요 | 대응 감사 추적 | 범위 외 인증 서비스 아님 |
| 캐시 정책 (개인정보 응답) | 주의 설정 오류 시 유출 | 위험 캐싱 비활성 필수 | 위험 중요정보 캐시 금지 | 범위 외 인증 서비스 아님 |
| 엣지 캐시 위치 | 주의 국외 이전 검토 | 주의 국외 이전 고지·동의 | 제한 국내 소재 위반 소지 | 범위 외 인증 서비스 아님 |
| 지리적 제한 | 대응 접근 지역 통제 | 대응 접근 통제 | 대응 접근 제한 | 범위 외 인증 서비스 아님 |
| 웹 서버 수준 점검 | 접근 불가 AWS 책임 영역 | 부분 해당 없음 | 접근 불가 대체 설명 필요 | 범위 외 인증 서비스 아님 |
12. 심사 대비 점검 항목
캐시 통제
- 개인정보를 포함한 경로에 캐싱이 비활성화되어 있는지 확인
- 인증 분기 경로의 캐시 키에 인증 헤더 또는 세션 쿠키가 포함되어 있는지 확인
- 오리진이 개인정보 응답에
Cache-Control: private, no-store를 반환하는지 확인 - URL 쿼리스트링에 고유식별정보가 포함되지 않는지 확인
- 인증 정보를 제거한 요청으로 개인정보 페이지가 반환되지 않음을 시험하고 결과를 보관
- 무효화 수행 절차가 사고 대응 절차서에 포함되어 있는지 확인
전송 구간 암호화
- 모든 동작에서 HTTP가 HTTPS로 강제되는지 확인
- 보안 정책이 TLS 1.2 이상으로 설정되어 있는지 확인
- 오리진 프로토콜 정책이 HTTPS 전용인지 확인
- ACM 인증서의 자동 갱신과 만료 모니터링이 설정되어 있는지 확인
- HSTS 등 보안 응답 헤더 정책이 적용되어 있는지 확인
접근 통제
- S3 오리진에 OAC가 적용되고 버킷 정책에 배포 ARN 조건이 있는지 확인
- ALB·EC2 오리진에 접두사 목록 또는 헤더 검증으로 우회 접근이 차단되는지 확인
- 오리진 도메인에 직접 요청하여 차단되는지 시험하고 결과를 보관
- 비공개 콘텐츠에 서명 URL 또는 서명 쿠키가 적용되고 만료 시간이 최소화되어 있는지 확인
- 서명 키 교체 주기와 개인 키 보관 방식을 확인
- 기본 루트 객체와 사용자 지정 오류 페이지가 설정되어 있는지 확인
- 지리적 제한 정책이 서비스 대상 지역과 일치하는지 확인
침해 대응 및 로그
- WAF가 연결되고 관리형 규칙 및 속도 기반 규칙이 적용되어 있는지 확인
- 액세스 로그가 활성화되어 있는지 확인
- 로그 보존 기간이 적용 법령 요구 기간 이상인지 확인
- 로그 버킷에 암호화·퍼블릭 차단·Object Lock이 적용되어 있는지 확인
- CloudTrail로 배포 설정 변경 이력이 기록되는지 확인
- 월 1회 이상 로그 점검 기록이 남아 있는지 확인
- 엣지 함수 코드가 형상 관리 및 보안 검토 대상에 포함되어 있는지 확인
데이터 소재
- 캐시 대상이 정적 자산으로 한정되어 있는지 확인
- 캐시 대상 데이터 분류 결과와 개인정보 미포함 근거가 문서화되어 있는지 확인
- 로그 버킷이 서울 리전에 있고 국외 복제 규칙이 없는지 확인
- 공공 대상 시스템의 경우 CSAP 인증 범위 내 서비스를 사용하고 있는지 확인
13. 결론
CloudFront의 ISMS-P 대응은 암호화 설정이나 WAF 연동에서 시작되지 않습니다. 무엇을 캐시하지 않을 것인가를 먼저 정의하고, 그 경계를 경로 패턴과 캐시 정책으로 구현하는 작업이 출발점입니다. 다음 네 가지를 설계 단계에서 확정하시기 바랍니다.
- 개인정보 응답은 캐시하지 않습니다. CloudFront 설정과 오리진 응답 헤더 양쪽에서 선언하여 이중으로 차단합니다.
- 오리진 구간도 암호화합니다. 뷰어 구간만 HTTPS인 구성은 지적 대상입니다.
- 오리진 직접 접근을 차단합니다. 우회가 가능하면 WAF와 서명 검증이 모두 무력화됩니다.
- 액세스 로그를 활성화합니다. 기본값은 비활성이며, 활성화하지 않으면 접근 이력이 남지 않습니다.
CDN은 성능 개선 수단으로 도입되는 경우가 많아 보안 검토가 사후에 이루어지는 사례가 빈번합니다. 그러나 캐시 설정 오류는 즉시 개인정보 유출로 이어지므로, 도입 시점에 데이터 분류와 경로 설계를 함께 수행해야 합니다.
네 편에 걸쳐 살펴본 결론은 동일합니다. 국내 인증 제도는 서비스의 기능 보유 여부가 아니라 조직의 설정과 운영 기록을 심사합니다. 배포 구성과 캐시 정책을 코드로 관리하고, AWS Config 및 Security Hub의 준수 현황을 정기적으로 보관하시기 바랍니다. 제이씨클라우드는 ISMS-P 및 금융권 요건에 대응하는 콘텐츠 전송 아키텍처 설계와 컴플라이언스 자동 점검 체계 구축을 지원하고 있습니다.
참고 자료
- 정보보호 및 개인정보보호 관리체계 인증 등에 관한 고시 — 과학기술정보통신부·개인정보보호위원회
- 개인정보의 안전성 확보조치 기준 — 개인정보보호위원회
- 클라우드컴퓨팅서비스 보안인증에 관한 고시 — 과학기술정보통신부
- 전자금융감독규정 및 금융분야 클라우드컴퓨팅서비스 이용 가이드 — 금융위원회·금융보안원
- 주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세 가이드 — 한국인터넷진흥원
- Amazon CloudFront 개발자 안내서 — 캐시 정책, 오리진 액세스 제어, 보안 정책, 액세스 로그, 지리적 제한 항목
- AWS Config 관리형 규칙 목록 — CloudFront 관련 규칙
시리즈 글: Amazon S3 편 · Amazon DynamoDB 편 · Amazon RDS 편 · ISMS-P 대응 인프라 구성
