IBM API Management v4.0
사용자 정의 정책(User-defined policy) 사용하기
0) 사용자 정의 정책(User-defined policy) 이란 ?
사용자 정의 정책이란 이름 그대로 APIM 에서 기 정의된 정책(proxy, activity log등) 들
이외에 실제로 서비스 게이트웨이로 사용되는 Datapower 의 다양한 기능을 활용하여 사용자가 원하는 정책을 직접 만들어서
사용하는 것을 의미합니다. 일반적으로 사용자 정의 정책을 활용하여 JSON 스키마 검증이나
암호화/복호화(Encryption/Decrytion) 와 같은 다양한 액션을 수행하여 보다 강화된 APIM 기능을 활용할 수
있습니다.
사용자 정의 정책 관리
http://www-01.ibm.com/support/knowledgecenter/SSWHYP_4.0.0/com.ibm.apimgmt.apionprem.doc/capim_mng_custpolicies.html?lang=ko
참고 : 비록 영어이긴 하지만 사용자 정의 정책 관리에 대해서 기능 및 사용법/구조까지 아주 자세히 설명된 동영상 자료가 youtube 에 공유되어 있으니 하단의 링크를 참고하시기 바라겠습니다.
User defined policies in IBM API Management V4 0 2
https://www.youtube.com/results?search_query=User+defined+policies+in+IBM+API+Management+V4+0+2
1) JSON 스키마 검증을 위한 사용자 정의 정책을 APIM 으로 가져오기
0. 참고 링크 :
Creating a new user-defined policy
http://www-01.ibm.com/support/knowledgecenter/SSWHYP_4.0.0/com.ibm.apimgmt.policy.doc/capim_define_custpolicies.html?lang=ko
환경으로 사용자 정의 정책 가져오기
www-01.ibm.com/support/knowledgecenter/SSWHYP_4.0.0/com.ibm.apimgmt.apionprem.doc/tapim_env_policy.html?lang=ko
이
번 강좌에서는 사용자 정의 정책을 작성하는 부분에 대해서는 자세히 다루지 않고 우선 미리 만들어서 github에 오픈소스 형태로
오픈된 다양한 사용자 정의 정책을 활용하는 방안으로 진행을 하도록 하겠습니다. 이번에는 그중에 JSON 스키마 검증을 위한 사용자
정의 정책을 활용하여 사용자 정의 정책을 APIM 에 적용하고 사전에 JSON 스키마를 검증하여 잘못된, 혹은 악의적인 의도의
조작이 있는 JSON 요청을 검증하여 실제 백엔드 서버에 가기전에 API Gateway 에서 검증하는 방안입니다.
1. IBM API Management github 에 접속하여 다양한 사용자 정의 정책을 확인합니다.
(기 언급한 것처럼 이미 다양한 사용자 정의 정책이 github 에 공유되어 있으며 다른 정책들도 본 강좌와 거의 동일한 형태로 APIM 에 추가 및 활용 가능합니다.)
https://github.com/apimanagement/Policies
2. validate-json 을 선택하고 실제 컨텐츠가 담긴 zip 파일인 validate-jsv-policy.zip 을 선택하고 Raw 버튼을 클릭하여 zip 파일을 다운로드 받습니다.
팁 : 참고로 해당압축을 풀게되면 하단과 같은 형태가 나오게 되며 yaml 파일은 APIM 의 Assemble 시의 메뉴를 추가하는 부분의 정의가 되어있으며 implemtation 에는 실제 Datapower 의 Rule 과 Action 이 들어가 있습니다. (validator 는 일반적으로 빈 폴더입니다) 다른 강좌로 해당 부분은 좀 더 자세히 설명하도록 하겠습니다.
3. IBM API Managemnet 콘솔에 접속하여 Environment > Policies 를 선택하고 방금 다운로드 받은 zip 파일을 import 합니다. (혹여나 import 시에 이슈가 발생하면 chrome 으로 시도해보시기 바라겠습니다.)
5. 정상적으로 사용자 정의 정책이 import 되면 하단과 같이 정책이 추가된 것을 확인할 수 있습니다.
이렇게만 하면 손쉽게 사용자 정의 정책을 추가한 것이며 다음 파트에서 다루겠지만 API 를 생성하는 assemble 시에 해당 메뉴가 추가되어 원하는 API 에 원하는 형태로 적용 가능합니다.
2) JSON 스키마 검증 테스트 준비
JSON
스키마 검증을 테스트하기 위하여 IBM 에서 API Management 테스트를 위해서 Bluemix 클라우드에 공개해 놓은
JSON 샘플 서비스를 활용하도록 하겠습니다. Download Swagger 버튼을 클릭하여 swagger 경로를 확인해 둡니다.
https://apim-services.mybluemix.net/smart/v1/explorer
https://apim-smart.mybluemix.net/swagger.json
1. IBM API Management 콘솔에서 ‘+API’ 메뉴를 클릭하여 swagger 를 통해서 API 를 Load 하기 위하여 Import Swagger 2.0 을 선택합니다.
2. Swagger 정의를 통한 API 추가 메뉴에서 이전에 확인해둔 Swagger 경로를 입력하고 Load 버튼을 클릭한후 Add 버튼을 클릭합니다.
3. 해당작업을 정상적으로 수행했다면 swagger 정의 파일을 이용해서 API 가 생성된 것을 하단과 같이 확인 가능합니다.
4. API 안에는 여러 operation 이 있는데 그중에 테스트를 위하여 하단과 같이 /products/{id} 를 수정해서 사용해보도록 하겠습니다. API operation 우측에 있는 연필 아이콘을 클릭합니다.
5. Implementation > Assemble 을 선택하고 ‘+’ 버튼을 클릭하면 하단과 같이 정책을 추가할 수 있으며 보다 중요한 것은 이전에 등록한 사용자 정의 정책이 추가되어있는 것을 확인할 수 있습니다.
6.
사용자 정의 정책으로 만든 Validate Json 을 추가하고 Value 의 ‘$’ 표시를 클릭하여 property 를 하나
추가하여 사용합니다. (property 로 정의하면 마치 변수처럼 API 내에서 여러 Operation 에 공통으로 적용 가능하며
여러 Environment 가 있는 경우 해당 Environment 별로 다른 값을 지정할 수도 있습니다.) 이름은 원하는
형태로 하면 되며 값을 local:///JsonCheckSchema.json 으로 넣어줍니다. 해당 값을 간단히 설명드리면
local:/// 이라는 부분이 API Gateway 인 Datapower 의 local 이라는 폴더를 의미하며 그 안에 있는
JsonCheckSchema.json 을 지정한 것입니다. JsonCheckSchema.json 은 향후에 Datapower 에
넣어서 사용할 JSON 스키마 파일을 의미합니다. 즉, 해당 부분은 JSON 스키마 검증을 위하여 사용할 JSON 스키마의 위치를
넣어주는 것입니다.
7. 실제 서비스를 호출할 HTTP Put 오퍼레이션도 하나 추가하고 URL 을 넣어줍니다. 이때 URL 은 https://apim-services.mybluemix.net/smart/v1/products/{id} 를 넣어주면 됩니다. 즉, 실제로 서비스가 호출될 URL 을 넣어주면 됩니다. 해당 URL 을 넣어주고 Connect 를 클릭합니다. (REST 의 파라미터 변수 부분은 ‘{id}’ 와 같이 넣어주면 자동으로 APIM 이 해당 부분을 파라미터로 인식합니다.)
8. Define 에서는 샘플 request body 와 response body 를 넣어주면 됩니다.
팁 : 이전에 언급한 공개해 놓은 JSON 샘플 서비스의 경우 Swagger 형태로 되어 있어서 바로 테스트 해볼 수 있습니다. 해당 사이트의 간단한 테스트를 통해서 request body, response body 샘플을 쉽게 확인할 수 있습니다. (예를 들어 전체 상품 리스트를 가지고 오는 /products API 를 Get 으로 가지고 와서 상품 정보를 얻은 후에 아무 상품 정보나 /products/{id} 의 id 값으로 사용하면 됩니다.)
https://apim-services.mybluemix.net/smart/v1/explorer#!/product/product_prototype_updateAttributes
9. Configure > Map values 를 클릭하여 Request 를 input 으로 연결합니다. (drag&connect 형태로 선을 그리면 그냥 연결됩니다.)
10. Review 를 통해서 연결이 제대로 되어있는지 확인하고 왼쪽에 있는 Response 를 클릭합니다.
11. 이제 HTTP put operation 의 결과를 상단과 동일하게 응답으로 연결해주면 됩니다.
여기까지 잘 했으면 해당 API 를 Save 하면 되며 Put 메소드를 사용하는 JSON service 를 하나 API 로 등록하신 것입니다.
그럼 이제는 상단에서 정의만 해둔 JSON Schema 검증을 수행할 JSON schema 파일을 하나 생성하고 Datapower 에 업데이트 하겠습니다.
12.
JSON Schema 검증을 수행할 JSON schema 파일을 하나 생성하고 위에 언급한 이름으로 저장합니다. (JSON
Schema 는 표준형태로 제작중인 http://json-schema.org 의 examples 을 참고하시면 쉽게
생성가능합니다. 테스트 할 부분만 간단히 언급드리면 price 는 integer 형태이고 최소값은 0 으로 해두었습니다.)
13. 해당 파일을 Datapowre 의 File management 를 사용하여 APIM 도메인의 local 폴더 하단에 업데이트 해줍니다. 결국은 상단에서 API 생성시에 파라미터로 넣어둔 위치와 파일명대로 해당 파일을 Datapower 에서 볼수 있게 업데이트 하는 것입니다. (local:///JsonCheckSchema.json)
팁 : 자신의 APIM 도메인 명을 모를경우에는 하단과 같이 cmc > clusters 메뉴에서 Gateway cluster 의 setting 메뉴을 클릭하면 왼쪽 하단에 자동으로 생성된 Datapower domain 명을 확인 가능합니다.
3) JSON 스키마 검증 테스트
그럼 지금까지 진행한 사용자 정의 정책을 이용한 JSON 스키마 검증을 실제로 테스트 해보도록 하겠습니다.
1.
서비스가 정상적으로 저장/준비되면 이전에 API 생성시에 Implementation 메뉴 위치를 가보면 Test 메뉴가 있고
이를 통해서 간단하게 바로 테스트 가능합니다. Test 를 선택하고 요청을 수행할 API 의 parameters 와
request body 를 정상적으로 넣어줍니다.
2. 이후 Invoke 를 클릭하여 테스트를 수행하면 정상적으로 200 OK 결과가 나오는 것을 확인 가능합니다.
3. 이번에는 JSON Schema 검증시에 문제가 발생하도록 request body 의 price 값의 최소값인 0 이하의 음수를 넣어서 요청을 보내보도록 하겠습니다.
4. 이렇게 하면 JSON 스키마 검증에 걸려서 하단과 같이 500 Error 가 발생되는 것을 확인 가능합니다.
여기까지 테스트가 완료하셨다면 이번 강좌에서 테스트하고자 했던 User-defined policy 적용 및 테스트를 모두 성공적으로 완료하신 것입니다.
APIM40_guide_UserDefinePolicy_juwlee201602.pdf
'IBM - old > IBM APIC' 카테고리의 다른 글
[APIC]본격적으로 살펴보는 IBM API Connect 01 - API 등록 및 테스트 (0) | 2016.06.08 |
---|---|
사용자 정의 정책(User-defined policy) 생성하기 (0) | 2016.06.07 |
HTTP Proxy 서비스 사용해서 HTTP 프로토콜로 API 서비스 호출하기 (0) | 2016.06.07 |
IBM API Management 를 활용하여 API 작성(등록) 하기 (0) | 2016.06.07 |
Bluemix 를 통한 IBM API Management 테스트 환경 구축 (0) | 2016.06.07 |
댓글