자습서: 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 작업을 선택합니다. 보내기를 4번 연속으로 누릅니다.
요청을 4번 보내면 429 요청이 너무 많음 응답이 표시됩니다.
15초 이상 기다린 다음. 보내기를 다시 선택합니다. 이번에는 200 정상 응답이 표시됩니다.
요약
이 자습서에서는 다음 작업 방법을 알아보았습니다.
- API를 변환하여 응답 헤더 제거
- API 응답 본문의 원래 URL을 API Management 게이트웨이 URL로 바꾸기
- 속도 제한 정책(제한)을 추가하여 API 보호
- 변환 테스트
다음 단계
다음 자습서를 진행합니다.