ALB로의 직접 트래픽을 제한하고 AWS WAF를 사용하여 CloudFront를 통해서만 트래픽을 허용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 7월 20일

사용자가 Application Load Balancer(ALB)에 직접 액세스하지 못하도록 제한하고 AWS WAF를 사용하여 Amazon CloudFront를 통해서만 액세스를 허용하려고 합니다. AWS WAF를 사용하여 이를 수행하려면 어떻게 해야 하나요?

해결 방법

ALB로의 직접 트래픽을 제한하고 AWS WAF를 사용하여 CloudFront를 통해서만 트래픽을 허용하려면 다음을 수행합니다.

  1. CloudFront가 ALB로 전송하는 요청에 비밀 값이 포함된 사용자 지정 HTTP 헤더를 추가하도록 CloudFront를 구성합니다.
  2. 사용자 지정 HTTP 헤더 비밀 값이 포함되지 않는 요청을 차단하도록 ALB와 연결된 AWS WAF 웹 ACL에서 규칙을 생성합니다.

ALB로 전송하는 요청에 비밀 값이 포함된 사용자 지정 HTTP 헤더를 추가하도록 CloudFront를 구성합니다.

  1. Amazon CloudFront 콘솔을 엽니다.
  2. 탐색 창에서 배포(Distributions)를 선택합니다.
  3. 배포 ID를 선택합니다.
  4. 오리진(Origins)을 선택합니다.
  5. ALB 오리진을 선택하고 편집(Edit)을 선택합니다.
    참고: ALB 오리진이 없는 경우 배포 생성 또는 배포 업데이트를 참조하세요.
  6. 사용자 지정 헤더 추가(Add custom header)의 경우 헤더 이름(Header name)값(Value)을 추가합니다. 예를 들어, 헤더 이름(Header name)은 Custom-header이고, 값(Value)은 Random-12345입니다.
    중요: 헤더 이름(Header name)값(Value)을 사용자 이름 및 암호와 같은 보안 인증 정보로 간주합니다.
  7. 변경 사항 저장(Save changes)을 선택합니다.

사용자 지정 HTTP 헤더 비밀 값이 포함되지 않는 요청을 차단하도록 ALB와 연결된 AWS WAF 웹 ACL에서 규칙을 생성합니다.

참고: ALB와 연결된 기존 웹 ACL이 없는 경우 AWS WAF 웹 ACL 생성의 단계를 따르세요. ALB와 연결된 기존 웹 ACL이 있는 경우 규칙 생성으로 진행합니다.

AWS WAF 웹 ACL 생성

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 웹 ACL(Web ACL)을 선택합니다.
  3. 리전(Region)에서 ALB가 선택되는 AWS 리전을 선택합니다.
  4. 웹 ACL 생성(Create web ACL)을 선택하고 이름(Name)을 입력합니다.
  5. 연결된 AWS 리소스(Associated AWS resources)에서 ALB와 연결하고 다음(Next)을 선택합니다.
  6. 규칙과 일치하지 않는 요청에 대한 기본 웹 ACL 작업(Default web ACL action for requests that don't match any rules)에서 허용(Allow)을 선택하고 다음(Next)을 선택합니다.
  7. 요청 샘플링 옵션(Request sampling options)에서 샘플링된 요청 활성화(Enable sampled requests)를 선택하고 다음(Next)을 선택합니다.
  8. 웹 ACL 구성을 검토합니다. 사양과 일치하는 경우 웹 ACL 생성(Create web ACL)을 선택합니다.

규칙 생성

  1. AWS WAF 콘솔을 엽니다.
  2. 탐색 창의 AWS WAF에서 웹 ACL(Web ACL)을 선택합니다.
  3. 리전(Region)에서 ALB가 선택되는 AWS 리전을 선택합니다.
  4. ALB를 연결한 웹 ACL을 선택합니다.
  5. 규칙(Rules)을 선택하고 규칙 추가(Add Rules), 자체 규칙 및 규칙 그룹 추가(Add my own rules and rule groups)를 선택합니다.
  6. 이름(Name)에서 규칙 이름을 입력하고 일반 규칙(Regular Rule)을 선택합니다.
  7. 요청인 경우(If a request)명령문과 일치하지 않음(NOT)(doesn’t match the statement(NOT))을 선택합니다.
  8. 명령문 1(Statement 1)에서 다음을 수행합니다.
    검사(Inspect)에서 단일 헤더(Single Header)를 선택합니다.
    헤더 필드 이름(Header field name)에 CloudFront에서 생성한 헤더 이름(Header name)의 이름을 입력합니다. 예를 들어, Custom-header를 입력합니다.
    일치 유형(Match type)에서 문자열 정확히 일치(Exactly matches string)를 선택합니다.
    일치시킬 문자열(String to match)에 CloudFront에서 생성한 값(Value)을 입력합니다. 예를 들어, Random-12345를 입력합니다.
    텍스트 변환(Text transformation)에서 없음(None)을 선택합니다.
  9. 작업(Action)에서 차단(Block)을 선택합니다.
  10. 규칙 저장(Save rule)을 선택합니다.
  11. 규칙이 여러 개인 경우 규칙 우선순위 설정(Set rule priority)에서 이 규칙을 가장 높은 우선순위로 설정합니다.
  12. 저장(Save)을 선택합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?