Akamai Diversity

Akamai 블로그

API의 어두운 이면 (1부) : API OVERVIEW

라이언 바넷(Ryan Barnett), Akamai 수석 보안 연구원

엘라드 슈스터(Elad Shuster), Akamai 선임 보안 연구원

API Overview

API(Application Programming Interface)는 소프트웨어 및 시스템 개발자가 정의된 커뮤니케이션 방법을 기반으로 다른 시스템과 통합하도록 지원하는 소프트웨어 설계 접근 방식입니다. 소프트웨어를 재사용할 수 있게 하고 기존 기능을 기반으로 새로운 시스템을 신속하게 개발할 수 있도록 합니다.

API는 최신 컴퓨팅의 초창기부터 존재해 왔고 소프트웨어 라이브러리 및 프레임워크, 운영 체제, 원격 시스템 통신, 웹 애플리케이션은 물론 최근에는 모바일 애플리케이션에도 지속적으로 사용되고 있습니다.

API는 한 시스템 또는 기업 내부에서만 사용되거나 API를 통해 커뮤니케이션하기로 합의한 두 당사자 사이에서 비공개 형태로 사용될 수 있습니다. 또는 일반적으로 사용될 수 있도록 개인 또는 기업이 API를 제공하는 공개적인 형태로 사용되기도 합니다.

API의 역사에 관한 자세한 내용은 API Evangelist / History of APIs에서 확인할 수 있습니다. 많은 사람들은 현대적 API가 SOA(Service Oriented Architecture)가 태동한 1990년대~2000년 사이에 만들어졌다고 생각합니다. 실제로 API는 처음에 '웹 서비스'라고 불렸고 Wikipedia의 설명에 따르면 '인터넷 프로토콜 백본에서 XML, SOAP, WSDL UDDI 오픈 표준을 사용하여 기반 애플리케이션을 통합하는 표준화된 방식입니다. XML 데이터를 포함하고 메타데이터를 제공하는  사용되는 데이터 포맷이고, SOAP 데이터를 전송하는 사용되며, WSDL 사용 가능한 서비스와 서비스를 사용할 있는 UDDI 목록을 설명하는 사용됩니다.'

'웹 서비스'가 웹 기반 시스템을 통합하는 표준화된 방식을 제공했음에도 불구하고 도입 속도는 느렸고 주로 기업용 소프트웨어 및 시스템에서 채택되었습니다. 도입 속도가 느렸던 이유는 관련 프로토콜 및 메시지 포맷이 유연하지 않았기 때문인데 이런 추세는 RESTful API가 등장하면서 달라지기 시작했습니다. API에 대한 RESTful 접근 방식은 시스템 사이에서 데이터를 간편하게 교환하는 수단으로 XML 및/또는 JSON(JavaScript Object Notation) 메시지 포맷과 함께 표준 HTTP 메세지를 사용하여 간단한 API 통합과 신속한 API 개발이 가능해졌습니다. 이로 인해 사실상의 표준으로 빠르게 자리잡았습니다.

다음 Google 트렌드 차트는 특정 기술의 인기가 시간에 따라 어떻게 변화해 왔는지를 보여줍니다.
 


최근 몇 년 사이에 모바일 애플리케이션이 등장하면서 API 사용이 기하급수적으로 증가했습니다.
이 차트는 2007년 Apple iPhone이 출시되면서 이런 최신 기술의 사용이 급증했다는 것을 보여줍니다. 모바일 애플리케이션 개발자가 API를 사용하면 써드파티 데이터를 자신의 앱에 신속하고 간편하게 통합할 수 있습니다. 현재 앱의 종류에 상관 없이 소셜 네트워크, 지도 서비스, 결제 서비스를 모바일 앱에 통합하는 것은 최소한의 노력만 필요한 부분입니다. 이는 API의 도입과 광범위한 성공에 따른 직접적인 결과입니다. Tracking the Growth of the API Economy(Art Anthony)와 같은 여러 최근 연구 및 간행물에서는 최근 몇 년 사이에 일어난 웹 기반 API의 급속한 성장을 언급하고 있습니다.

강력하고 정교한 API를 제공하는 기업 중 하나는 Salesforce.com입니다. 2000년에 API를 출시하여 고객이 Salesforce와 써드파티 애플리케이션 사이에서 데이터를 공유 및 이용하도록 지원했습니다.

그 후 몇 년 안에 모든 주요 사이트와 인터넷 기반 기업들은 고객과 써드파티 개발자에게 소프트웨어 및 데이터를 서비스로 제공하기 위해 API를 사용하기 시작했습니다. API가 비즈니스 모델의 성장을 지원한 가장 대표적인 기업으로는 eBay, Facebook, Twitter, del.icio.us, Flickr, Google, Amazon 등이 있습니다. 현재 API는 모든 곳에 사용되고 인터넷 연결 디바이스가 백엔드 API와 통신하는 사물 인터넷(IoT)과도 긴밀하게 관련되어 있습니다.



간단한 API 트랜잭션에 대한 설명 없이 API 오버뷰를 마쳤다고 할 수 없습니다. 해당 지역의 날씨를 기반으로 입을 옷을 추천하는 모바일 애플리케이션을 예로 들어보겠습니다. 모바일 앱 개발자는 날씨 정보를 지속적으로 업데이트하기 위해 날씨 API 서비스를 통합합니다. 이 서비스는 도시이름이 포함된 API 콜에 대해 간단한 JSON 응답을 제공합니다.

모바일 앱이 날씨 서비스로 보내는 API 콜은 다음과 같습니다. (API 콜 파라미터가 URL에 임베디드되어 있습니다.)

GET /APIKEY/geolookup/CA/San-Francisco/Units/F/getWeather.json HTTP/1.1
Host: api.some_weather.site
Connection: Keep-Alive

이 요청에 대한 응답은 다음과 같습니다.

HTTP/1.1 200 OK
Date: Wed, 25 Jan 2017 13:13:46 GMT
Content-Length: 140
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
{
 "status_code": "success",
 "location": "San Francisco, CA",
 "High Temperature": "87",
 "Low Temperature": "59",
 "Units": "Fahrenheit"
}

API 호출에 대한 RESTful 접근 방식은 적절한 문서 없이 이해할 수 있을 정도로 매우 간단합니다. 대부분의 개발자는 원하는 도시의 날씨 데이터를 쿼리하기 위해 이 API 콜을 손쉽게 수정할 수 있고 코드 변경을 최소화할 수 있습니다. 동일한 설계가 API의 응답에도 적용되는데 여기서는 추가적인 개발 과정 없이 모든 최신 웹 및 모바일 프레임워크에서 손쉽게 이용하고 분석할 수 있는 JSON 메시지 포맷을 사용합니다. 이런 간편함과 개방성은 API가 광범위하게 사용되는 가장 큰 이유이지만, 소프트웨어 설계의 다른 측면에서 봤을 때 적절한 보안이 구현되지 않으면 API가 악용될 수 있습니다. 개발자에게 매력적인 API의 간편함은 API를 공격자의 매력적인 표적으로 만들고 쉽게 악용될 소지도 제공합니다. Akamai Intelligent Platform에서 관측된 API 인터넷 전반에 걸친 API의 도입과 사용에 관해 알아보기 위해 우리는 Akamai의 CSI(Cloud Security Intelligence) 데이터 분석 엔진을 사용했습니다. Akamai Intelligent Platform에 구현된 CSI는 매달 웹 보안 위협과 관련된 약 3PB(페타바이트)의 데이터를 지속적으로 분석하는 데 사용되는 데이터 처리 엔진입니다. 오리진 웹 애플리케이션으로 전송되는 144,713,265,352(1,447억)건의 HTTP 트랜잭션 중에서 전체의 약 1/4에 해당하는 36,593,891,540(366억)건의 API 트랜잭션을 확인했습니다. 실제 수치는 25%를 초과할 것으로 예상되지만 API 트랜젝션을 확인할 때 보수적인 탐지 접근 방식을 사용했습니다.



API 트랜잭션을 심층 분석한 결과 API 콜의 38%가 모바일 클라이언트에서 발생했습니다. 모바일 클라이언트가 API 트래픽에서 차지하는 비율이 65%였던 이전 데이터세트와 비교하면 이 결과는 모바일 애플리케이션이 API의 개발과 사용의 가장 큰 원인이라는 가정을 뒷받침합니다.



산업 분야별로 살펴봤을 때, 전체 API 콜의 가장 많은 비율을 차지하는 분야는 하이테크였고, 그 다음은 디지털 미디어, 게임, 유통 순이었습니다.



데이터를 수집하는 과정에서 발견한 한 가지 흥미로운 점은 API 콜(HTTP 요청) 메시지 Content-Type과 표준 웹 트래픽 메시지 Content-Type 간의 차이입니다.


 

API 개발자 사이에서 많이 사용되는 API 콜 Content-Type은 JSON이고 정규 Form-Data( "application/x-www-form-urlencoded"), XML 등도 사용됩니다. 표준 웹 양식 요청의 경우, 클라이언트는 주로 URL이 인코딩된 Form-Data를 사용해 메시지 본문(body)을 전송하는 것으로 보입니다. 메시지 유형에서의 이러한 차이는 API 트래픽을 공격으로부터 보호할 때 중요합니다. API를 보호하려면 수신되는 API 콜을 정밀 검사하고 관련 API 프로토콜을 이해해야 합니다. API 메시지를 완벽하게 분석(parsing)해야 메시지 내의 악성 페이로드를 찾아낼 수 있습니다.

결론: API는 모든 곳에 사용됩니다. 간편함과 개방성을 갖춘 동시에 매우 강력합니다. 기존의 웹 애플리케이션은 이를 필요로 하는 사람들이 있기 때문에 사라지지 않을 것입니다. 하지만 API는 수많은 요구사항을 해결하기 위해 앞으로도 지속적으로 개발될 것입니다. 다음 블로그 게시물에서는 API의 3대 위협인 DoS, 애플리케이션 레이어 공격, 인증정보 도용 공격에 대해 자세히 알아봅니다.

고지사항 본 문서에 제공된 연구 내용과 데이터는 오르 카츠(Or Katz)와 애론 프리드만(Aharon Fridman)이 공동 수집 및 분석한 데이터를 기반으로 오리 시걸(Ory Segal)이 원본 초안을 작성했습니다.

Leave a comment (코멘트 남기기)