Pre-function
개요
Pre-function 정책은 사용자가 요청이 처리되기 전에 사용자 정의 스크립트를 실행할 수 있도록 합니다. 이 정책은 사용자가 요청 매개변수, 헤더 및 본문 내용을 추가, 제거 또는 변환하여 요청을 동적으로 수정할 수 있게 합니다.
Pre-function 정책은 일반적으로 다음과 같은 용도로 사용됩니다:
- Data Masking: 개인 식별 번호와 같은 민감한 데이터를 백엔드에 도달하기 전에 숨기는 것.
- Query String Manipulation: 쿼리 매개변수를 동적으로 수정하거나 필터링하는 것.
- Token Validation: 인증 및 보안 로직을 구현하는 것.
- Routing Control: 요청 속성에 따라 라우팅 결정을 수정하는 것.
구성 세부정보
Pre-function 정책은 사용자가 스크립트를 작성하는 code editor로 구성됩니다. 인터페이스에는 다음 구성 요소가 포함됩니다:
코드 편집기
editor는 사용자가 API 요청 생애 주기의 다양한 실행 단계에 대한 사용자 정의 Lua 스크립트를 작성하고 수정할 수 있는 주요 영역입니다. 코드 편집기 내에는 네 개의 탭이 있습니다:
- Access: 여기에서 입력된 코드는 접근 단계에서 실행되어 사용자가 인증, 헤더, 경로 재작성 등과 같은 요청 수준의 로직을 조작할 수 있게 합니다.
- Header Filter: 클라이언트에 다시 전송되기 전에 응답 헤더를 수정하는 데 사용됩니다.
- Body Filter: 응답 본문을 조작할 수 있게 하여 응답 내용을 변환하거나 마스킹하는 데 유용합니다.
- Log: 요청이 처리된 후 요청 또는 응답 데이터를 기반으로 로깅 동작을 구현하는 데 사용됩니다.
각 탭에는 전용 코드 편집기와 개발 속도를 높이는 데 도움이 되는 스니펫 및 예제에 대한 접근이 포함되어 있습니다.
코드는 여러 실행 단계가 활용될 경우 각 탭 내에서 별도로 작성되고 저장되어야 합니다.
스니펫 (미리 정의된 코드 블록)
Snippets 섹션은 사용자가 편집기에 삽입할 수 있는 미리 정의된 코드 블록을 제공합니다. 이러한 블록은 사용자가 코드를 처음부터 작성할 필요 없이 일반적으로 사용되는 요청 수정을 신속하게 구현하는 데 도움을 줍니다.
스니펫 목록:
Snippets | Description |
---|---|
JSON 파서 | JSON 형식의 요청 본문을 로드하고 처리합니다. |
요청 원본 본문 가져오기 | 처리하기 전에 전체 요청 본문을 검색합니다. |
서비스 요청 원본 본문 설정 | 요청 본문을 수정하여 백엔드로 전달하기 전에 변경합니다. |
요청 메서드 가져오기 | HTTP 메서드(GET, POST 등)를 검색합니다. |
요청 경로 가져오기 | 전체 요청 경로를 얻습니다. |
요청 헤더 가져오기 | 특정 요청 헤더에서 값을 추출합니다. |
요청 헤더 설정 | 요청 헤더를 동적으로 수정하거나 추가합니다. |
응답 종료 설정 | 요청을 종료하고 사용자 정의 응답을 반환합니다. |
서비스 호스트 설정 | 대상 서버를 동적으로 변경합니다. |
서비스 요청 스킴 설정 | 요청 스킴(http 또는 https)을 수정합니다. |
서비스 요청 경로 설정 | 요청을 백엔드로 전송하기 전에 요청 경로를 변경합니다. |
예제 섹션
이 섹션에는 Pre-function 정책의 실제 구현을 보여주는 미리 정의된 예제 스크립트가 포함되어 있습니다. 이러한 예제는 사용자가 일반적인 시나리오를 신속하게 구현할 수 있도록 템플릿 역할을 합니다.
예제 목록:
Examples | Description |
---|---|
데이터 마스킹 | 요청 페이로드에서 민감한 정보를 마스킹합니다. 쿼리 문자열에 값으로 나타날 때 한국 주민등록번호를 “SSN-DATA”로 대체하고 라우팅을 계속합니다. |
쿼리 문자열 조작 | "service" 키와 해당 값을 제외한 모든 쿼리 문자열을 제거합니다. 백엔드 라우팅 조건에 따라 매개변수를 필터링합니다: - 라우팅 대상 백엔드 주소가 A일 때, 모든 쿼리 매개변수가 완전히 제거됩니다. - 그러나 라우팅 대상 백엔드 주소가 B일 경우, 특정 쿼리 매개변수 집합만 허용되며, 다른 매개변수는 폐기됩니다. |
토큰 검증 | 정규 표현식을 사용하여 "Authorization: bearer xxxxxxxx" 토큰에 대한 사용자 정의 검증을 구현합니다. 그리고 특정 메서드 + 경로 조합은 베어러 토큰 검증을 수행하지 않습니다. |
라우팅 | 사용자가 코드를 작성하여 상황에 따라 라우팅을 계속하거나 즉시 실패를 처리할 수 있도록 허용합니다. |
사용자는 코드 편집기에서 스크립트를 직접 수정하거나 미리 정의된 스니펫을 사용할 수 있습니다. 예시를 클릭하면 팝업 편집기가 열려 추가적인 사용자 지정을 할 수 있습니다.