웹 보안 권장사항
Cloud CDN 및 Cloud Load Balancing은 Compute Engine 인스턴스, Cloud Storage 버킷 또는 Google Cloud 외부의 외부 원본에서 콘텐츠를 제공하는지 여부에 관계없이 웹 보안 권장사항을 충족합니다.
보안 헤더 설정
HTTP 사양에는 다음을 제어하는 여러 헤더가 있습니다.
- 클라이언트 동작
- 콘텐츠 삽입 방법
- 도메인 간 콘텐츠 제공 방법
- 해당 도메인 연결 시 항상 TLS(HTTPS)를 사용할지 여부
이러한 제어는 일반적으로 각 백엔드(CDN 용어로 원본)에 외부 애플리케이션 부하 분산기 및 Cloud CDN 배포의 커스텀 응답 헤더로 설정할 수 있는 HTTP 응답 헤더로 표시됩니다.
Cloud Storage를 사용하고 버킷에서 웹 콘텐츠를 제공하는 경우 스토리지 버킷 앞에 Cloud CDN을 사용하여 웹 보안 헤더를 설정하고 인기 콘텐츠를 캐시할 수 있습니다.
가장 유용한 웹 보안 헤더는 다음 표에 정의되어 있습니다.
헤더 이름 | 설명 | 사용 예 |
---|---|---|
Strict-Transport-Security (HSTS) |
이 헤더를 설정하기 전에 도메인에 유효한 SSL(TLS) 인증서가 있는지 확인하세요. 클라이언트가 HTTPS(SSL/TLS)를 통해 도메인에 직접 연결해야 해서 HTTP에서 HTTPS로 리디렉션할 필요가 없으므로 속도가 느려지고 중간자 공격이 발생할 위험이 있습니다. 이 헤더를 설정하면 되돌릴 수 없습니다. 이 헤더를 캐시한 후 최신 브라우저 클라이언트는 HTTPS가 아닌 연결을 시도하지 않으며, SSL이 작동 중단되더라도 사용자는 이 헤더를 수신한 도메인에 액세스할 수 없습니다. 이 동작은 공격자가 보안 프로토콜을 보호되지 않는 HTTP로 다운그레이드하는 것을 방지합니다(다운그레이드 공격이라고 함).
|
클라이언트가 이후 모든 연결에 대해 HTTPS를 통해 직접 연결하도록 요구하고 최대 2년 동안 이 지시문을 캐싱합니다.
|
X-Frame-Options |
브라우저가 <frame>, <frame>, <embed> 또는 <object>에서 페이지를 렌더링할 수 있는지 여부를 나타냅니다. 이렇게 하면 콘텐츠를 다른 사이트에 삽입할 수 없도록 하여 클릭재킹 공격을 방지하는 데 도움이 됩니다. |
사이트의 모든 iframe 거부: X-Frame-Options: DENY
사이트 자체 iFrame(삽입)하도록 허용: |
Content-Security-Policy
|
사이트의 콘텐츠 보안 정책(CSP)을 평가하려면 Google의 CSP 평가자 도구를 사용하면 됩니다. | 인라인 스크립트를 허용하지 않고 HTTPS를 통해서만 스크립트 로드: Content-Security-Policy: default-src https:
|
기존 웹사이트에 새 보안 헤더를 도입할 때는 타사 스크립트, 삽입된 콘텐츠(예: iFrame) 또는 사이트의 다른 측면이 손상될 수 있으므로 주의해야 합니다. 프로덕션 트래픽을 변경하기 전에 백엔드 버킷 또는 백엔드 서비스의 두 번째 인스턴스를 만들고 테스트하는 것이 좋습니다.
웹 보안 헤더와 관장사항에 대한 자세한 내용은 web.dev와 Mozilla의 infosec 사이트에서 확인할 수 있습니다.
TLS 및 인증서 관리
관리형 인증서의 특징은 다음과 같습니다.
- 무료 제공
- 부하 분산기에 쉽게 배포 가능
- 자동 갱신
- 전 세계 모든 Google 에지 위치에 분산
TLS는 데이터가 전송 중에 수정되지 않았는지 확인하여 신뢰성을 제공합니다. TLS 인증서는 도청자가 사용자와 서버 간에 교환되는 내용을 확인할 수 없게 하여 기밀을 유지합니다. 이는 사용자 개인 정보 보호와 보안에 중요합니다.
SSL 인증서를 사용하면 HTTP/2 및 Google의 QUIC 프로토콜과 같은 최신 전송 프로토콜을 활용할 수 있습니다. 두 프로토콜 모두 SSL(TLS)이 필요합니다. 이러한 프로토콜은 웹 콘텐츠의 성능, 미디어 전달(예: 스트리밍 동영상) 및 혼잡한 네트워크의 안정성을 직접적으로 향상시킵니다.
Google Cloud는 Cloud Load Balancing 및 Cloud CDN 서비스 전반에서 최신 TLS 프로토콜(예: TLS 1.3)을 지원합니다.
SSL 정책을 사용하여 최소 버전의 TLS를 높일 수 있습니다. 내장형 기기 또는 10년 이상 된 이전 비브라우저 클라이언트와 같은 이전 클라이언트를 지원할 필요가 없는 경우 버전을 TLS v1.2로 높이는 것이 좋습니다. 전역적으로 TLS v1.0 및 TLS v1.1은 Google Cloud 간 0.5% 미만의 연결을 나타냅니다.
특정 클라이언트를 오래된 버전의 TLS로 식별하거나 연결해야 하는 경우 요청 헤더에 변수({tls_version}
)를 사용할 수 있습니다. 그런 다음 이 정보를 로깅할 수 있습니다.
다음 단계
- Cloud CDN이 캐시에서 응답을 제공하고 있는지 확인하려면 로그 보기를 참조하세요.
- 어떤 콘텐츠를 캐시할 수 있는지의 여부를 알아보려면 캐싱 개요를 참조하세요.
- Cloud CDN 접속 지점을 보려면 캐시 위치를 참조하세요.