Application Load Balancer에 대한 HTTP 헤더 수정 - Elastic Load Balancing

Application Load Balancer에 대한 HTTP 헤더 수정

Application Load Balancer는 요청 헤더와 응답 헤더 모두에 대해 HTTP 헤더 수정을 지원합니다. 애플리케이션 코드를 업데이트할 필요 없이 헤더 수정을 통해 애플리케이션 트래픽과 보안을 더 세밀하게 제어할 수 있습니다.

헤더 수정을 활성화하려면 헤더 수정 활성화 섹션을 참조하세요.

mTLS/TLS 헤더 이름 바꾸기

헤더 이름 바꾸기 기능을 사용하면 Application Load Balancer가 생성하여 요청에 추가하는 mTLS 및 TLS 헤더의 이름을 구성할 수 있습니다.

HTTP 헤더를 수정하는 이 기능을 통해 Application Load Balancer는 특정 형식의 요청 및 응답 헤더를 사용하는 애플리케이션을 쉽게 지원할 수 있습니다.

헤더 설명

X-Amzn-Mtls-Clientcert-Serial-Number

TLS 핸드셰이크 동안 클라이언트가 제시하는 특정 인증서를 대상이 식별하고 확인할 수 있습니다.

X-Amzn-Mtls-Clientcert-Issuer

인증서를 발급한 인증 기관을 식별하여 대상이 클라이언트 인증서를 검증하고 인증하는 데 도움이 됩니다.

X-Amzn-Mtls-Clientcert-Subject

클라이언트 인증서의 발급 대상에 대한 상세 정보를 제공하여 mTLS 인증 과정에서 식별, 인증, 권한 부여, 로깅에 도움이 됩니다.

X-Amzn-Mtls-Clientcert-Validity

대상에서 사용 중인 클라이언트 인증서가 정의된 유효 기간 내에 있는지 확인할 수 있도록 하여 인증서가 만료되거나 조기에 사용되지 않도록 합니다.

X-Amzn-Mtls-Clientcert-Leaf

mTLS 핸드셰이크에 사용된 클라이언트 인증서를 제공하여 서버가 클라이언트를 인증하고 인증서 체인을 검증할 수 있도록 합니다. 이렇게 하면 연결이 안전하고 인증된 상태임을 보장합니다.

X-Amzn-Mtls-Clientcert

전체 클라이언트 인증서를 포함합니다. 대상이 mTLS 핸드셰이크 프로세스 중 인증서의 신뢰성을 확인하고, 인증서 체인을 검증하고, 클라이언트를 인증하도록 허용합니다.

X-Amzn-TLS-Version

연결에 사용된 TLS 프로토콜의 버전을 나타냅니다. 이를 통해 통신의 보안 수준을 확인하고, 연결 문제를 해결하고, 규정 준수를 보장할 수 있습니다.

X-Amzn-TLS-Cipher-Suite

TLS에서 연결을 보호하는 데 사용되는 암호화 알고리즘의 조합을 나타냅니다. 이를 통해 서버는 연결의 보안 수준을 평가하여 호환성 문제 해결을 지원하고 보안 정책 준수를 보장할 수 있습니다.

응답 헤더 추가

헤더 삽입을 사용하면 Application Load Balancer가 응답에 보안 관련 헤더를 추가하도록 구성할 수 있습니다. 이러한 속성을 사용하면 HSTS, CORS, CSP를 포함한 헤더를 삽입할 수 있습니다.

기본적으로 이러한 헤더는 비어 있습니다. 이 경우 Application Load Balancer는 해당 응답 헤더를 수정하지 않습니다.

응답 헤더를 활성화하면 Application Load Balancer는 구성된 값을 포함한 해당 헤더를 모든 응답에 추가합니다. 대상에서 반환된 응답에 HTTP 응답 헤더가 포함된 경우 로드 밸런서는 헤더 값을 구성된 값으로 업데이트합니다. 그렇지 않으면 로드 밸런서는 구성된 값을 사용해 해당 HTTP 응답 헤더를 응답에 추가합니다.

헤더 설명

Strict-Transport-Security

지정된 기간 동안 브라우저가 HTTPS 연결만 사용하도록 강제하여 중간자 공격, 프로토콜 다운그레이드, 사용자 오류를 방지하고 클라이언트와 대상 간의 모든 통신이 암호화되도록 보장합니다.

Access-Control-Allow-Origin

다른 오리진에서 대상의 리소스에 액세스할 수 있는지 여부를 제어합니다. 이렇게 하면 무단 액세스를 방지하면서 안전한 교차 오리진 상호 작용이 가능합니다.

Access-Control-Allow-Methods

대상에 대한 교차 오리진 요청 시 허용되는 HTTP 메서드를 지정합니다. 이를 통해 다양한 오리진에서 수행할 수 있는 작업을 제어할 수 있습니다.

Access-Control-Allow-Headers

교차 오리진 요청에 포함할 수 있는 사용자 지정 헤더 또는 비단순 헤더를 지정합니다. 대상은 이 헤더를 통해 다양한 오리진의 클라이언트가 어떤 헤더를 보낼 수 있는지 제어할 수 있습니다.

Access-Control-Allow-Credentials

클라이언트가 쿠키, HTTP 인증 또는 클라이언트 인증서와 같은 자격 증명을 교차 오리진 요청에 포함할지 여부를 지정합니다.

Access-Control-Expose-Headers

대상이 교차 오리진 요청에서 클라이언트가 액세스할 수 있는 추가 응답 헤더를 지정할 수 있도록 허용합니다.

Access-Control-Max-Age

브라우저가 사전 요청의 결과를 캐시할 수 있는 기간을 정의하여 반복적인 사전 검사의 필요성을 줄입니다. 이를 통해 특정 교차 오리진 요청에 필요한 OPTIONS 요청 수를 줄여 성능을 최적화할 수 있습니다.

Content-Security-Policy

스크립트, 스타일, 이미지 등 웹 사이트가 로드 및 실행할 수 있는 리소스를 제어하여 XSS와 같은 코드 삽입 공격을 방지하는 보안 기능입니다.

X-Content-Type-Options

no-sniff 지시문을 사용하면 브라우저가 리소스의 MIME 유형을 추측하는 것을 방지하여 웹 보안을 강화합니다. 브라우저는 선언된 콘텐츠 유형에 따라 콘텐츠만 해석합니다.

X-Frame-Options

웹 페이지를 프레임에 포함할 수 있는지 여부를 제어하여 클릭재킹 공격을 방지하는 데 도움이 되는 헤더 보안 메커니즘입니다. DENY 및 SAMEORIGIN과 같은 값은 콘텐츠가 악성 또는 신뢰할 수 없는 웹 사이트에 임베드되지 않도록 보장합니다.

헤더 비활성화

헤더 비활성화를 사용하면 Application Load Balancer가 응답에서 server:awselb/2.0 헤더를 비활성화하도록 구성할 수 있습니다. 이를 통해 서버 특정 정보 노출을 줄이고 애플리케이션에 추가적인 보호 계층을 제공합니다.

속성 이름은 routing.http.response.server.enabled입니다. 허용 가능한 값은 true 또는 false입니다. 기본값은 true입니다.

제한 사항

  • 헤더 값은 다음 문자를 포함할 수 있습니다.

    • 영숫자: a-z, A-Z, 0-9

    • 특수 문자: _ :;.,\/'?!(){}[]@<>=-+*#&`|~^%

  • 속성 값은 1KB를 초과할 수 없습니다.

  • Elastic Load Balancing은 헤더 값의 유효성을 확인하기 위해 기본 입력 검증을 수행합니다. 그러나 이 검증은 특정 헤더에서 해당 값이 지원되는지 여부는 확인할 수 없습니다.

  • 어떤 속성이든 빈 값을 설정하면 Application Load Balancer는 기본 동작으로 되돌아갑니다.