남에게 설명할 수 없으면 그 개념을 모르는게 맞다. Devnet 시스코 공인교재를 읽다가 그런 부분이 생겨서 기억의 확장을 위해 간단히 요약해보고자 한다.
API
API는 크게 두 가지 타입이 있는데 Northbound와 Southbound로 분류하는 한 가지와 Synchronous와 Asynchronous로 분류할 수 있다. 아래 그림처럼 controller를 기준으로 application으로 요청하는 API call이면 Northbound API, 반대로 data plane으로 push down 하는 것이면 Southbound API로 분류한다. Data plane은 쉽게 생각해 네트워크 장비라 생각하면 된다.
그렇다면 Synchronous와 Asynchronous API는 무엇일까? API를 동기식으로 처리하면 Synchronous이고 비동기식으로 처리한다면 Asynchronous이다. 아래 그림으로 도식화 해보면
server에서 요청받은 작업을 수행해서 response를 보낼 때까지 client가 기다리는 방법이 synchronous API이고 asynchronous API는 정반대로 기능을 수행한다. server에서 response를 보내는 것과 상관없이 client는 계속 작업을 수행하며 server의 response는 callback 함수로 받는다.
REST APIs
Representational State Transfer (REST) API는 HTTP 방법을 이용해 정보를 얻고 조작한다. 여기서 나오는 용어가 CRUD인데 CREATE, READ, UPDATE, 그리고 DELETE의 앞글자를 따와서 만든 용어이다. 참고로 HTTP method로는 GET, POST, PUT, PATCH, DELETE가 존재한다. CRUD 함수 기준으로 PUT과 PATCH는 UPDATE에 해당하는데 PUT은 기존 정보를 불러와 UPDATE하는 것이고 PATCH는 정보를 추가하는 것이다. PUT을 이용해 NTP 서버 주소를 업데이트 하는 use case와 PATCH를 이용해 추가적인 NTP 서버를 설정하는 것을 예로 들수 있다.
REST API Authentication
1. Basic Authentication - 용어 그대로 가장 간단하고 일반적인 방식이다. 하지만 HTTP 프로토콜을 사용하게 되면 credentials이 암호화 되서 전달되지 않아 보안에 취약하다. 그래서 Basic Auth 방법은 SSL이나 TSL을 사용해 쉽게 정보가 노출되는 보안 취약성을 보호한다.
2. API Keys - API 키는 지정된 문자열로 client가 server로 전달하는 값이다. pre-shared 키처럼 동작하는 것이며 잘 알려진 문자열이나 추측이 가능한 값으로 지정되면 안된다. 또한, 해당 API 키만 있으면 누구나 민감한 정보를 얻을 수 있다는 단점이 있다는 단점이 있다. API 키를 전달하는 방법은 String, Request header, 그리고 Cookie를 이용하는 3가지 방법이 있다. 각각의 방법을 이용한 syntax는 아래와 같다.
* String: GET /something?api_key=12345
* Request Header: Python script를 이용해서 코딩할 때 많이 사용하는 방식인데 header 정보에 API 키를 미리 지정하여 API를 호출할 때 마다 해당 header 정보를 추가해서 사용하는 방식이다.
GET /something HTTP/1.1 (Request Header)
X-API-KEY: 12345
* Cookie: Cookie를 이용해 API 키를 저장하고 재사용하는 것인데 reqeust header를 이용하는 방법과 유사한 것.
GET /something HTTP/1.1 (Cookie)
Cookie: X-API-KEY=12345
3. Custom Tokens - User가 username과 password를 통해 token을 발급받은 이후에는 login crendentials을 계속 입력하여 특정 리소스를 요구하는 것이 아닌 token으로 인증하게 된다. 물론, token은 특정시간 동안에만 사용이 가능하며 사용기한이 지났을 경우에는 재발급 받아 사용한다. 이 것은 user의 브라우저에 저장되는 값이며 서버의 리소스를 요구할 때 항상 이 token의 유효성을 검사하여 인증을 하도록 한다. 물론, log out을 하면 이 token 정보는 소멸되기에 보안성으로도 좋다.
Simple Object Access Protocol (SOAP)
Web service를 접근할 때 사용하는 프로토콜인데 달리 말하면 HTTP와 SMTP 등을 통해서 XML 기반 메시지를 교환하는 프로토콜이다. XML을 이용하기 때문에 프로그래밍 언어에도 독립적이고 운영체제에도 독립적으로 사용이 가능하다. 더불어, HTTP를 사용하기 때문에 방화벽에서 별도의 port를 허용해야 한다는 등의 운영적 낭비에도 도움이 되는 프로토콜이다. SOAP는 아래와 같이 Envelope, Header, Body, 그리고 Fault라고 하는 4가지 구성요소가 있다.
Reference book: Cisco Certified DevNet Associate Official Cert Guide
'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글
#1. IPv6이란? (0) | 2022.11.11 |
---|---|
CORS란 (0) | 2022.09.30 |
ASA의 Failover에 대한 정리 (0) | 2022.02.24 |
멀티캐스트 정리 #3 (PIM) (0) | 2022.01.08 |
멀티캐스트 정리 #2 (IGMPv2 & IGMPv3) (0) | 2022.01.06 |