자습서: 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 보호
- 변환 테스트
필수 조건
- Azure API Management 용어를 익힙니다.
- Azure API Management의 정책 개념을 이해합니다.
- 다음 빠른 시작 Azure API Management 인스턴스 만들기를 완료합니다.
- 또한, 다음 자습서 첫 번째 API 가져오기 및 게시를 완료합니다.
API Management 인스턴스로 이동
Azure Portal에서 API Management 서비스를 검색하여 선택합니다.
API Management 서비스 페이지에서 API Management 인스턴스를 선택합니다.
API를 변환하여 응답 헤더 제거
이 섹션에서는 사용자에게 표시하지 않으려는 HTTP 헤더를 숨기는 방법을 보여줍니다. 예를 들어 HTTP 응답에서 다음 헤더를 삭제합니다.
- X-Powered-By
- X-AspNet-Version
원래 응답 테스트
원래 응답을 확인하려면 다음을 수행합니다.
- API Management 서비스 인스턴스에서 API를 선택합니다.
- API 목록에서 Demo Conference API를 선택합니다.
- 화면 위쪽에 있는 테스트 탭을 선택합니다.
- GetSpeakers 작업을 선택한 다음, 보내기를 선택합니다.
원래 API 응답은 다음 응답과 비슷합니다.
보시는 것처럼 응답에는 X-AspNet-Version 및 X-Powered-By 헤더가 포함됩니다.
변환 정책 설정
이 예에서는 정책 XML 문을 직접 편집하지 않고도 많은 정책을 구성하는 데 도움이 되는 양식 기반 정책 편집기를 사용하는 방법을 보여 줍니다.
Demo Conference API>디자인>모든 작업을 선택합니다.
아웃바운드 처리 섹션에서 + 정책 추가를 선택합니다.
아웃바운드 정책 추가 창에서 헤더 설정을 선택합니다.
헤더 설정 정책을 구성하려면 다음을 수행합니다.
- 이름 아래에서 X-Powered-By를 입력합니다.
- 값을 비워 둡니다. 드롭다운에 값이 표시되면 삭제합니다.
- 작업 아래에서 삭제를 선택합니다.
- 저장을 선택합니다.
위의 두 단계를 반복하여 X-AspNet-Version 헤더를 삭제하는 헤더 설정 정책을 추가합니다.
구성하면 아웃바운드 처리 섹션에 두 개의 set-header 정책 요소가 표시됩니다.
API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기
이 섹션에서는 API의 HTTP 응답 본문에 표시되는 원래 URL을 API Management 게이트웨이 URL로 바꾸는 방법을 보여 줍니다. 원래 백 엔드 URL은 사용자로부터 숨기는 것이 좋습니다.
원래 응답 테스트
원래 응답을 확인하려면 다음을 수행합니다.
Demo Conference API>테스트를 선택합니다.
GetSpeakers 작업을 선택한 다음, 보내기를 선택합니다.
보시는 것처럼 응답에는 원래 백 엔드 URL이 포함됩니다.
변환 정책 설정
이 예에서는 정책 코드 편집기를 사용하여 정책 XML 코드 조각을 정책 정의에 직접 추가합니다.
Demo Conference API>디자인>모든 작업을 선택합니다.
아웃바운드 처리 섹션에서 코드 편집기(</>) 아이콘을 선택합니다.
빈 줄의
<outbound>
요소 내부에 커서를 놓습니다. 그런 다음, 화면 오른쪽 위 모서리에서 코드 조각 표시를 선택합니다.오른쪽 창의 변환 정책 아래에서 콘텐츠의 URL 마스킹을 선택합니다.
<redirect-content-urls />
요소가 커서에 추가됩니다.저장을 선택합니다.
속도 제한 정책(제한)을 추가하여 API 보호
이 섹션에서는 개발자가 API를 과도하게 사용하지 않도록 속도 제한을 구성하여 보호를 백 엔드 API에 추가하는 방법을 보여 줍니다. 이 예에서 제한은 각 구독 ID에 대해 15초당 3회 호출로 설정됩니다. 개발자는 15초 후에 API 호출을 다시 시도할 수 있습니다.
Demo Conference API>디자인>모든 작업을 선택합니다.
인바운드 처리 섹션에서 코드 편집기(</>) 아이콘을 선택합니다.
빈 줄의
<inbound>
요소 내부에 커서를 놓습니다. 그런 다음, 화면 오른쪽 위 모서리에서 코드 조각 표시를 선택합니다.오른쪽 창의 액세스 제한 정책 아래에서 키당 호출 속도 제한을 선택합니다.
<rate-limit-by-key />
요소가 커서에 추가됩니다.<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>
이 섹션의 나머지 부분에서는 이 문서에서 설정한 정책 변환을 테스트합니다.
삭제된 응답 헤더 테스트
Demo Conference API>테스트를 선택합니다.
GetSpeakers 작업을 선택하고 보내기를 선택합니다.
보시는 것처럼 X-AspNet-Version 및 X-Powered-By 헤더가 제거되었습니다.
대체된 URL 테스트
Demo Conference API>테스트를 선택합니다.
GetSpeakers 작업을 선택하고 보내기를 선택합니다.
보시다시피 URL이 바뀝니다.
속도 제한 테스트
Demo Conference API>테스트를 선택합니다.
GetSpeakers 작업을 선택합니다. 보내기를 세 번 연속으로 누릅니다.
요청을 3회 보내면 429 요청이 너무 많음 응답이 표시됩니다.
15초 이상 기다린 다음. 보내기를 다시 선택합니다. 이번에는 200 정상 응답이 표시됩니다.
요약
이 자습서에서는 다음 작업 방법을 알아보았습니다.
- API를 변환하여 응답 헤더 제거
- API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기
- 속도 제한 정책(제한)을 추가하여 API 보호
- 변환 테스트
다음 단계
다음 자습서를 진행합니다.