자습서: API 변환 및 보호

적용 대상: 모든 API Management 계층

이 자습서에서는 API를 변환하도록 일반적인 정책을 구성하는 방법에 대해 알아봅니다. 프라이빗 백 엔드 정보가 표시되지 않도록 API를 변환하는 것이 좋습니다. API를 변환하면 백 엔드에서 실행되는 기술 스택 정보를 숨기거나 API의 HTTP 응답 본문에 표시되는 원래 URL을 숨길 수 있습니다.

또한 이 자습서에서는 개발자가 API를 과도하게 사용하지 않도록 속도 제한 정책을 구성하여 보호를 백 엔드 API에 추가하는 방법을 설명합니다. 자세한 정책 옵션은 API Management 정책을 참조하세요.

참고 항목

기본적으로 API Management는 전역 forward-request 정책을 구성합니다. 게이트웨이에서 백 엔드 서비스에 대한 요청을 완료하려면 forward-request 정책이 필요합니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • API를 변환하여 응답 헤더 제거
  • API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기
  • 속도 제한 정책(제한)을 추가하여 API 보호
  • 변환 테스트

포털의 정책

필수 조건

API Management 인스턴스로 이동

  1. Azure Portal에서 API Management 서비스를 검색하여 선택합니다.

    API Management Services 선택

  2. API Management 서비스 페이지에서 API Management 인스턴스를 선택합니다.

    API Management 인스턴스 선택

API를 변환하여 응답 헤더 제거

이 섹션에서는 사용자에게 표시하지 않으려는 HTTP 헤더를 숨기는 방법을 보여줍니다. 예를 들어 HTTP 응답에서 다음 헤더를 삭제합니다.

  • X-Powered-By
  • X-AspNet-Version

원래 응답 테스트

원래 응답을 확인하려면 다음을 수행합니다.

  1. API Management 서비스 인스턴스에서 API를 선택합니다.
  2. API 목록에서 Demo Conference API를 선택합니다.
  3. 화면 위쪽에 있는 테스트 탭을 선택합니다.
  4. GetSpeakers 작업을 선택한 다음, 보내기를 선택합니다.

원래 API 응답은 다음 응답과 비슷합니다.

원래 API 응답

보시는 것처럼 응답에는 X-AspNet-VersionX-Powered-By 헤더가 포함됩니다.

변환 정책 설정

이 예에서는 정책 XML 문을 직접 편집하지 않고도 많은 정책을 구성하는 데 도움이 되는 양식 기반 정책 편집기를 사용하는 방법을 보여 줍니다.

  1. Demo Conference API>디자인>모든 작업을 선택합니다.

  2. 아웃바운드 처리 섹션에서 + 정책 추가를 선택합니다.

    아웃바운드 정책으로 이동

  3. 아웃바운드 정책 추가 창에서 헤더 설정을 선택합니다.

    HTTP 헤더 정책 설정

  4. 헤더 설정 정책을 구성하려면 다음을 수행합니다.

    1. 이름 아래에서 X-Powered-By를 입력합니다. 작업 아래에서 삭제를 선택합니다.
    2. + 헤더 추가를 선택합니다.
    3. 이름 아래에서 X-AspNet-Version을 입력합니다. 작업 아래에서 삭제를 선택합니다.

    HTTP 헤더 설정

  5. 저장을 선택합니다. 아웃바운드 처리 섹션에 두 개의 set-header 정책 요소가 표시됩니다.

API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기

이 섹션에서는 API의 HTTP 응답 본문에 표시되는 원래 URL을 API Management 게이트웨이 URL로 바꾸는 방법을 보여 줍니다. 원래 백 엔드 URL은 사용자로부터 숨기는 것이 좋습니다.

원래 응답 테스트

원래 응답을 확인하려면 다음을 수행합니다.

  1. Demo Conference API>테스트를 선택합니다.

  2. GetSpeakers 작업을 선택한 다음, 보내기를 선택합니다.

    보시는 것처럼 응답에는 원래 백 엔드 URL이 포함됩니다.

    응답의 원래 URL

변환 정책 설정

이 예에서는 정책 코드 편집기를 사용하여 정책 XML 코드 조각을 정책 정의에 직접 추가합니다.

  1. Demo Conference API>디자인>모든 작업을 선택합니다.

  2. 아웃바운드 처리 섹션에서 코드 편집기(</>) 아이콘을 선택합니다.

    아웃바운드 정책 코드 편집기로 이동

  3. 빈 줄의 <outbound> 요소 내부에 커서를 놓습니다. 그런 다음, 화면 오른쪽 위 모서리에서 코드 조각 표시를 선택합니다.

    코드 조각 표시 선택

  4. 오른쪽 창의 변환 정책 아래에서 콘텐츠의 URL 마스킹을 선택합니다.

    <redirect-content-urls /> 요소가 커서에 추가됩니다.

    콘텐츠의 URL 마스킹

  5. 저장을 선택합니다.

속도 제한 정책(제한)을 추가하여 API 보호

이 섹션에서는 개발자가 API를 과도하게 사용하지 않도록 속도 제한을 구성하여 보호를 백 엔드 API에 추가하는 방법을 보여 줍니다. 이 예에서 제한은 각 구독 ID에 대해 15초당 3회 호출로 설정됩니다. 개발자는 15초 후에 API 호출을 다시 시도할 수 있습니다.

  1. Demo Conference API>디자인>모든 작업을 선택합니다.

  2. 인바운드 처리 섹션에서 코드 편집기(</>) 아이콘을 선택합니다.

    인바운드 정책으로 이동

  3. 빈 줄의 <inbound> 요소 내부에 커서를 놓습니다. 그런 다음, 화면 오른쪽 위 모서리에서 코드 조각 표시를 선택합니다.

    인바운드 정책 설정

  4. 오른쪽 창의 액세스 제한 정책 아래에서 키당 호출 속도 제한을 선택합니다.

    <rate-limit-by-key /> 요소가 커서에 추가됩니다.

    키당 호출 속도 제한 선택

  5. <inbound> 요소의 <rate-limit-by-key /> 코드를 다음 코드로 수정합니다. 그런 다음 저장을 선택합니다.

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

변환 테스트

이제 코드 편집기에서 코드를 살펴보면 정책이 다음 코드와 같습니다.

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

이 섹션의 나머지 부분에서는 이 문서에서 설정한 정책 변환을 테스트합니다.

삭제된 응답 헤더 테스트

  1. Demo Conference API>테스트를 선택합니다.

  2. GetSpeakers 작업을 선택하고 보내기를 선택합니다.

    보시는 것처럼 헤더가 삭제되었습니다.

    삭제된 응답 헤더

대체된 URL 테스트

  1. Demo Conference API>테스트를 선택합니다.

  2. GetSpeakers 작업을 선택하고 보내기를 선택합니다.

    보시다시피 URL이 바뀝니다.

    대체된 URL

속도 제한 테스트

  1. Demo Conference API>테스트를 선택합니다.

  2. GetSpeakers 작업을 선택합니다. 보내기를 세 번 연속으로 누릅니다.

    요청을 3회 보내면 429 요청이 너무 많음 응답이 표시됩니다.

    Too many requests

  3. 15초 이상 기다린 다음. 보내기를 다시 선택합니다. 이번에는 200 정상 응답이 표시됩니다.

다음 단계

이 자습서에서는 다음 작업 방법을 알아보았습니다.

  • API를 변환하여 응답 헤더 제거
  • API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기
  • 속도 제한 정책(제한)을 추가하여 API 보호
  • 변환 테스트

다음 자습서를 진행합니다.