ALB에 대한 CloudFront 트래픽만 허용하는 방법

9173 단어 cdncloudaws

소개



작년에 우리는 웹 사이트의 일부를 한 CDN 공급자에서 AWS CloudFront로 마이그레이션했습니다. 마이그레이션을 검토할 때 제기된 첫 번째 질문 중 하나는 CloudFront에 대해 지속적으로 변경되는 모든 IP 범위를 추가하는 방법이었습니다. CloudFront는 150개가 넘는 IP 범위를 가지고 있는 반면, 기존 CDN 공급자는 거의 변경되지 않은 약 20개에 불과했습니다. 이것은 CloudFormation 템플릿에서 최신 상태를 유지하기 위해 관리할 수 있었습니다.

2022년 이전 솔루션



2021년 중반 AWS의 suggested solution은 SNS 주제별로 Lambda 함수를 트리거하는 것이었습니다.
그런 다음 Lambda 함수는 CloudFront IP 범위로 보안 그룹을 다운로드ip-ranges.json하고 업데이트합니다.

이 솔루션은 여전히 ​​작동하며 Application Load Balancer에 대한 퍼블릭 액세스를 제공하지 않고도 CloudFront로 마이그레이션할 수 있습니다.

2022 솔루션



AWS는 이미 S3 및 DynamoDB에 대한 관리형 접두사 목록을 가지고 있었으므로 그들이 발표했을 때AWS-managed prefix list for Amazon CloudFront 이것이 ALB를 단순화하는 쉬운 방법이라는 것을 알았습니다.

보안 그룹에 다른 CIDR 블록 범위를 추가하는 것처럼 접두사 목록을 추가합니다.


접두사 목록 ID는 지역마다 고유합니다. 아일랜드의 경우 접두사 목록 ID는 pl-4fa04526입니다.

CloudFormation을 사용하고 있다면 템플릿 파일에서 새로운 CloudFront 접두사를 활용할 수 있습니다.

CloudFormation 템플릿



아래에 샘플 CloudFormation 템플릿을 생성했습니다.

Description: Security Group with access from CloudFront

Mappings:
  region:
    'us-east-1':
      PrefixListCloudFront: 'pl-3b927c52'
    'us-east-2':
      PrefixListCloudFront: 'pl-b6a144df'
    'us-west-1':
      PrefixListCloudFront: 'pl-4ea04527'
    'us-west-2':
      PrefixListCloudFront: 'pl-82a045eb'
    'af-south-1':
      PrefixListCloudFront: 'pl-c0aa4fa9'
    'ap-east-1':
      PrefixListCloudFront: 'pl-14b2577d'
    'ap-south-1':
      PrefixListCloudFront: 'pl-9aa247f3'
    'ap-northeast-2':
      PrefixListCloudFront: 'pl-22a6434b'
    'ap-southeast-1':
      PrefixListCloudFront: 'pl-31a34658'
    'ap-southeast-2':
      PrefixListCloudFront: 'pl-b8a742d1'
    'ap-northeast-1':
      PrefixListCloudFront: 'pl-58a04531'
    'ca-central-1':
      PrefixListCloudFront: 'pl-38a64351'
    'eu-central-1':
      PrefixListCloudFront: 'pl-a3a144ca'
    'eu-west-1':
      PrefixListCloudFront: 'pl-4fa04526'
    'eu-west-2':
      PrefixListCloudFront: 'pl-93a247fa'
    'eu-south-1':
      PrefixListCloudFront: 'pl-1bbc5972'
    'eu-west-3':
      PrefixListCloudFront: 'pl-75b1541c'
    'eu-north-1':
      PrefixListCloudFront: 'pl-fab65393'
    'me-south-1':
      PrefixListCloudFront: 'pl-17b2577e'
    'sa-east-1':
      PrefixListCloudFront: 'pl-5da64334'
Resources:
  LoadBalancerSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: "lb-sg"
      GroupDescription: "Load balancer"
      VpcId: "vpc-088e128e80fe96e6e"
      Tags:
        - Key: Name
          Value: Load Balancer SG
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        SourcePrefixListId: !FindInMap [region, !Ref 'AWS::Region', PrefixListCloudFront]
        Description: HTTPS from CloudFront

좋은 웹페이지 즐겨찾기