내용으로 건너뛰기

특정 IP 주소만 API Gateway REST API에 액세스하도록 허용하려면 어떻게 해야 합니까?

3분 분량
0

특정 IP 주소만 Amazon API Gateway REST API에 액세스하도록 허용하고 싶습니다.

간략한 설명

특정 IP 주소만 REST API에 액세스하도록 허용하려면 다른 모든 IP 주소에 대한 액세스를 거부하는 리소스 정책을 생성하십시오.

REST API에 리소스 정책을 연결하면 권한이 있는 사용자는 지정된 IP 주소에서 API를 호출할 수 있습니다. API는 다른 IP 주소의 호출을 거부하고 ‘HTTP 403 Forbidden’ 오류를 표시합니다.

특정 IP 주소를 차단하고 다른 모든 IP 주소에 대한 액세스를 허용하려면 예: 소스 IP 주소 또는 범위를 기반으로 API 트래픽 거부를 참조하십시오.

참고: API Gateway HTTP API에 대한 리소스 정책을 사용할 수 있습니다.

해결 방법

API 메서드 설정

액세스를 테스트하려면 기존 API Gateway REST API를 사용하거나 예제 REST API를 만드십시오. PetStore 예제 API를 사용하는 경우 리소스 정책 만들기 및 연결로 진행하십시오.

기존 REST API에 대한 모의 통합을 만들려면 다음 단계를 완료하십시오.

  1. API Gateway 콘솔을 엽니다.
  2. REST API를 선택합니다.
  3. 리소스 창의 메서드에서 메서드 생성을 선택합니다.
  4. 메서드 유형에서 ANY를 선택합니다.
  5. 통합 유형에서 Mock(모의)을 선택합니다.
    참고: 모의 통합은 도달하는 모든 요청에 응답합니다.
  6. 메서드 생성을 선택합니다.

리소스 정책 만들기 및 연결

다음 단계를 완료합니다.

  1. API Gateway 콘솔을 엽니다.
  2. REST API를 선택합니다.
  3. 탐색 창에서 리소스 정책을 선택합니다.
  4. 정책 생성을 선택합니다.
  5. 리소스 정책에 다음 리소스 정책을 입력합니다.
    {  "Version": "2012-10-17",
      "Statement": [{
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*"
        },
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*",
          "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
            }
          }
        }
      ]
    }
    참고: sourceIpOrCIDRBlock을 액세스 권한을 부여하려는 IP 주소로 바꾸십시오. CIDR 표기법을 사용하여 **["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]**와 같이 IP 주소 범위를 지정합니다. aws:SourceIp 조건은 퍼블릭 IP 주소 범위에서만 작동합니다. 프라이빗 IP 주소 범위에 대한 액세스를 허용하려면 aws:VpcSourceIp 조건을 사용하십시오. aws:VpcSourceIp의 경우 인터페이스 가상 프라이빗 클라우드(VPC) 엔드포인트를 통해 프라이빗 API 엔드포인트를 호출하는 HTTP 클라이언트의 프라이빗 IP 주소를 입력합니다. 인터페이스 VPC 엔드포인트를 통해서만 API Gateway에서 프라이빗 API 엔드포인트를 호출할 수 있습니다.
  6. 변경 사항 저장을 선택합니다.

REST API를 호출하는 프라이빗 IP 주소를 찾으려면 Amazon CloudWatch Logs를 확인하십시오. 자세한 내용은 자습서: CloudWatch Logs 보기를 참조하십시오.

API 배포

다음 단계를 완료하십시오.

  1. API Gateway 콘솔을 엽니다.
  2. REST API를 선택합니다.
  3. REST API의 리소스 창에서 API 배포를 선택합니다.
  4. Deployment stage(배포 스테이지)에서 New Stage(새 스테이지)를 선택합니다.
  5. 스테이지 이름에 이름을 입력합니다. 예를 들어, v1 또는 demo를 입력합니다.
  6. 배포를 선택합니다.

중요: 리소스 정책을 변경할 때마다 REST API를 재배포해야 합니다.

리소스 정책 테스트

운영 체제(OS)에 따라 다음 명령 중 하나를 실행하여 허용된 IP 주소가 있는 환경을 테스트합니다.

Linux, UNIX 및 macOS 환경:

curl -IX GET https://yourInvokeUrl/

Windows PowerShell:

curl https://yourInvokeUrl/

참고: **https://yourInvokeUrl/**을 REST API의 호출 URL로 바꾸십시오.

리소스 정책을 올바르게 구성한 경우 허용된 환경은 ‘HTTP 200 OK’ 응답을 받습니다. 허용된 IP 주소가 없는 환경에서 동일한 명령을 다시 실행합니다. 거부된 환경에서는 ’HTTP 403 Forbidden’ 오류를 받아야 합니다.

리소스 정책을 테스트하려면 Postman 웹 사이트의 Postman 앱을 사용할 수도 있습니다.

참고: 여러 환경에 액세스할 수 없는 경우 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하십시오. 그런 다음, 인스턴스의 IP 주소를 API 리소스 정책에 추가하고 API를 재배포합니다.

관련 정보

API Gateway 리소스 정책을 생성하여 API에 연결

API Gateway 리소스 정책 예시

Amazon API Gateway에 대한 액세스 정책 언어 개요

API Gateway의 REST API에 대한 액세스 제어 및 관리