보안 오케스트레이션, 자동화 및 대응(SOAR) 플랫폼은 서로 다른 보안 도구(제품)를 통합하고 원하는 응답을 액션 형태로 호출하기 위해 API(애플리케이션 프로그래밍 인터페이스)에 크게 의존합니다. SOAR 제품 외에도 API는 기술 종사자들이 사용하는 거의 모든 서비스, 도구 및 제품에서 흔히 볼 수 있습니다.
API는 매우 흔하지만, 사용자는 API를 사용해 본 경험이 없거나 서비스와 상호 작용할 때 해당 서비스에 API가 있다는 사실조차 모를 수 있습니다. 예를 들어, 페이스북은 API 프레임워크를 사용합니다. 그래프 API.
“"그래프 API는 앱이 페이스북 소셜 그래프를 읽고 쓰는 주요 방법입니다."”
API는 다양한 형태로 존재하지만, 어떤 API 프레임워크를 사용하든 기술 전문가가 시스템이나 서비스와 상호 작용할 수 있도록 해줍니다. API를 통해 단일 애플리케이션 내부 연결부터 Swimlane과 같은 대규모 연결까지, 시스템 간의 연결을 신속하게 개발하고 구축할 수 있습니다.
API를 사용하면 전 세계의 개인(및 조직)이 정보를 빠르고 안전하게(물론 제대로 구현되었을 경우) 정의된 형식으로 공유하고 상호 작용할 수 있습니다. API가 없었다면 오늘날과 같은 자동화는 존재할 수 없었을 것입니다.
이 2부작 시리즈의 1부에서는 REST(Representable State Transfer) API에 대한 개요와 API 이해를 빠르게 시작하는 데 도움이 되는 핵심 사항을 제공합니다.
입증
REST API는 일반적으로 API와 상호 작용하기 위해 인증 메커니즘을 요구합니다. 이는 유료 제품이나 서비스와 상호 작용할 때는 표준적인 절차이지만, 오픈 소스 정보 도구(OSINT)나 기타 인터넷상의 무료 서비스와 상호 작용할 때는 반드시 필요한 것은 아닙니다.
API에서 사용하는 표준 및 사용자 지정 인증 방법에는 여러 가지가 있습니다. 모든 방법을 나열하는 것은 불가능하지만, 일반적으로 다음과 같은 몇 가지 유형의 인증 방법을 볼 수 있습니다.
|
유형 |
예 |
설명 |
|
인증 없음 |
ThreatMiner의 API를 쿼리하여 google.com 도메인을 조회합니다. |
API에서 데이터를 요청할 때 추가 정보를 입력할 필요가 없는 API |
|
사용자 이름 및 비밀번호 |
Microsoft Exchange 온프레미스 API에 쿼리하기 |
사용자 이름과 비밀번호를 사용한 기본 인증이 필요한 API입니다. |
|
토큰 |
haveibeenpwned.com에 쿼리를 보내려면 무료 계정과 API 토큰을 생성해야 합니다. |
API 서비스를 사용하려면 고유 토큰이 필요한 API입니다. 일반적으로 이 토큰은 요청 헤더에 포함되어야 합니다. |
|
대표단 |
Microsoft Graph API를 사용하려면 OAuth2 인증이 필요합니다. |
이 API는 API 사용을 위한 임시 토큰을 제공하는 인증 서비스와 연동하여 작동합니다. |
이것들은 서비스에서 사용할 수 있는 다양한 인증 메커니즘의 몇 가지 예일 뿐입니다. 제품과 회사에 따라 위와 같은 표준을 선택하거나 자체적인 인증 방식을 사용할 수 있습니다.
이러한 인증 메커니즘의 주요 목적은 사용자가 서비스에 대한 올바른 접근 권한을 가지고 있는지 확인하고, 서비스에 대해 정해진 사용량 제한을 준수하는지 확인하는 것입니다.
Microsoft의 OAuth2 구현에 대해 자세히 알아보고 싶다면, 제가 작성한 이 3부작 시리즈를 확인해 보세요. 이 시리즈에서는 해당 인증 메커니즘에 대해 더 자세히 설명합니다. 파트 1, 파트 2, 그리고 파트 3.
버전
앞으로 저는 가상의 서비스를 이용할 예정입니다. 조쉬의 위협 인텔리전스 서비스 이 서비스의 URL은 다음과 같습니다. https://joshsthreatintel.example.
이러한 사이트를 방문하여 다른 웹사이트와 마찬가지로 상호 작용할 수 있지만, 그 이면에는 자동화를 구현하기 위해 프로그래밍 방식으로 정보에 접근할 수 있도록 하는 API가 숨겨져 있습니다.
훌륭한 API는 서비스 인증 및 사용 방법에 대한 세부 정보를 설명하는 매우 훌륭한 문서를 갖추고 있습니다. 일반적으로 사용되는 표준은 다음과 같습니다. 멋진, 하지만 우리는 Swagger가 무엇인지 이해할 필요는 없습니다(Swagger는 API 개발 속도를 높이고 API 문서화를 표준화하는 데 도움이 되는 표준입니다).
~에 https://joshsthreatintel.example 저희 API는 버전 관리가 되어 있으며, 다음 명령어를 추가하여 접근할 수 있습니다. /v1 저희 웹사이트의 해당 URL로 접속하시면, 폴더가 비어있을 수도 있고, 인증되지 않았다는 알림이 표시될 수도 있으며, API 문서 페이지가 나타날 수도 있습니다. 어떤 경우든, 이 URL을 사용하면 저희 API의 루트 폴더에 접속할 수 있습니다. https://joshsthreatintel.example/v1/.
여러분이 접하게 될 각 API는 하나 이상의 버전을 가질 수 있습니다. 예를 들어 havibeenpwned.com에는 세 가지 버전이 있습니다.
행동 양식
REST 기반 API는 소스 코드 내에 정의된 특정 메서드를 통해 상호 작용하도록 설계되었습니다. 이러한 메서드는 사용되는 데이터 유형과 API로 전송되는 데이터에 따라 다르게 응답합니다. API와 상호 작용할 때 일반적으로 볼 수 있는 메서드는 아래 표에 나열되어 있습니다.
|
방법 |
용어 설명 |
설명 |
|
얻다 |
검색 또는 읽기 |
GET 메서드는 API에서 정보를 가져오는 데 사용됩니다. |
|
우편 |
생성, 추가 또는 호출 |
POST 메서드는 데이터를 생성하거나 추가하거나, 작업을 호출하는 데 사용됩니다. |
|
놓다 |
패치 또는 업데이트 |
PUT 메서드는 데이터를 업데이트하거나 어떤 방식으로든 수정하는 데 사용됩니다. |
|
삭제 |
파괴하거나 제거하다 |
DELETE 메서드는 데이터를 삭제하거나 작업을 중지하는 데 사용됩니다. |
가장 흔하게 접하게 되는 API 호출 방식은 GET과 POST입니다. API 유형(REST 또는 SOAP)과 서비스에 따라 요청 헤더에 추가 정보를 제공해야 할 수도 있습니다.
일반적으로 GET 요청에서는 API에서 특정 정보를 가져오기 위해 엔드포인트(URL의 경로)로 HTTP 요청을 보냅니다. 예를 들어, 가상의 위협 인텔리전스 서비스에 라는 엔드포인트가 있다고 가정해 보겠습니다. IP 이 엔드포인트에 IP 주소를 제공해야 합니다. 이 엔드포인트는 다음과 같은 형태일 수 있습니다. /ip/123.123.123.123, 이를 루트 URL에 추가합니다. https://joshsthreatintel.example/v1/ip/123.123.123.123.
요청의 일부로, 우리는 이 엔드포인트에 대한 호출에서 우리가 수행하고 있는 작업이 무엇인지 명시합니다. 얻다 요청 사항이며, 저희는 IP 주소 123.123.123.123에 대한 정보를 원합니다.
다음은 Python과 PowerShell Core를 사용하여 이 작업을 수행하는 두 가지 예입니다.
- 파이썬:
- 가져오기 요청
- 응답 = requests.get('https://joshsthreatintel.example/v1/ip/123.123.123.123')
- PowerShell:
- $response = Invoke-RestMethod -Uri '‘https://joshsthreatintel.example/v1/ip/123.123.123.123’' - 메서드 GET
다른 엔드포인트를 사용할 수 있을 수도 있습니다. 우편 가상의 서비스에 대한 특정 URL (조쉬의 위협 정보 서비스) 악성 활동을 검사할 수 있도록 하기 위함입니다. 이 엔드포인트는 다음과 같습니다. URL 그리고 이는 우리의 루트 URL에 추가될 것입니다: https://joshsthreatintel.example/v1/url.
일반적인 HTTP 요청 외에도, URL을 스캔하기 위해 이 가짜 서비스에 POST 요청을 보낼 때 다음 정보를 제공해야 합니다. 몸 우리가 요청한 URL은 다음과 같습니다. 조쉬의 위협 인텔리전스 서비스 스캔합니다. 파이썬으로 표현한 예는 다음과 같습니다.
import requests body = { 'url': 'http://some.malicious.website.com' } response = requests.post('https://joshsthreatintel.example/v1/url', data=body}
위 예시는 대부분의 API에서 흔히 사용되고 선호되는 방식이지만, 이 엔드포인트를 통해 다음과 같은 작업도 수행할 수 있습니다. 얻다 쿼리 매개변수를 사용하는 URL입니다.
기본적으로 쿼리 파라미터는 API에서 정보를 필터링하거나 선택하는 방법입니다. 쿼리 파라미터는 서비스에서 사용자가 API 호출 결과에 영향을 줄 수 있도록 허용할 때 흔히 사용되지만, HTTP 요청 본문에 속성을 제공하는 대신 URL을 스캔하는 것과 같이 특정 작업을 호출하는 데에도 사용할 수 있습니다.
쿼리 매개변수는 일반적으로 서로 연결되어 사용되는데, 이는 가독성을 떨어뜨린다고 생각합니다. API에서 쿼리 매개변수를 사용할 때 볼 수 있는 예시는 다음과 같습니다.
https://joshsthreatintel.example/v1/url?url=some.malicious.website.com {웹사이트 API 경로}/{엔드포인트}?{매개변수=값}
위 예시에서 보시다시피, API의 루트 경로와 엔드포인트가 있습니다. URL 이 경우에는, 그 후에. URL 엔드포인트에서 쿼리 매개변수를 확인할 수 있습니다. 쿼리 매개변수는 로 시작합니다. ? 그 다음에는 매개변수 이름과 해당 매개변수에 사용할 값이 옵니다.
API 엔드포인트에서는 여러 쿼리 매개변수를 지정할 수 있습니다. 예를 들어, 특정 IP 주소에 대한 정보를 RIPE(Réseaux IP Européens) REST API에서 검색하는 URL 구문은 다음과 같습니다.
https://rest.db.ripe.net/search?source=ripe&query-string={querystring} {API 웹사이트 경로}/{엔드포인트}?{param=value}&{param=value}
추가된 사항을 눈치채셨을지도 모릅니다. &, 이는 다른 쿼리 매개변수가 있음을 나타냅니다. 이 매개변수에도 매개변수 이름과 해당 매개변수에 사용할 값이 포함됩니다. API에 따라 이러한 매개변수를 여러 개 연결하여 사용할 수 있습니다. 특정 엔드포인트에서 허용되는 사항은 API 문서를 참조해야 합니다.
실제 API는 쿼리 매개변수를 사용하거나 요청 본문에 키-값 쌍의 데이터를 제공하도록 요구하는 경우가 많습니다.
헤더
API를 사용할 때 추가 정보를 입력해야 할 수도 있습니다. 얻다 또는 우편 또는 다른 방법으로 헤더 HTTP 요청의 일부입니다. 여기에는 인증 토큰, 콘텐츠 유형 지정 또는 기타 정보가 포함될 수 있습니다.
간단히 말해서, 헤더 이 값은 API와의 연결을 설정하는 데 사용되는 메타데이터입니다. API는 이 메타데이터를 사용하여 인증을 수행하거나 수행할 작업/요청 유형에 대한 환경을 설정합니다.
인증이 필요한 API는 HTTP 요청 헤더에 토큰을 제공하도록 요구하는 경우가 매우 흔합니다. 이 토큰은 장기 토큰일 수도 있고, 위임 기반 인증 방식(예: OAuth2)의 경우 일정 기간 후 갱신해야 하는 임시 토큰일 수도 있습니다. 어떤 방식이든 API에서 인증 정보를 제공하는 것은 일반적입니다.
추가로 명시해야 할 수도 있습니다. 수용하다 또는 콘텐츠 유형 헤더와 함께 권한 부여 헤더. 간단히 말해, 헤더는 일반적으로 키-값 쌍의 형식입니다. 다음은 이러한 두 헤더가 어떤 모습일 수 있는지 보여주는 파이썬 예제입니다.
custom_headers = { 'Accept': 'application/json', 'Authorization': 'Bearer {SOME_AUTHENTICATION_TOKEN}' }
이러한 헤더는 HTTP 요청과 함께 서버로 전송됩니다. API를 사용할 때 헤더가 필요할 수도 있고 필요하지 않을 수도 있으며, API에서 헤더가 필요한 경우 일반적으로 HTTP 요청에 사용되는 모든 메서드에 대해 헤더가 필요합니다.
이 글이 REST API의 기본 개념을 이해하는 데 도움이 되었으면 좋겠습니다. 다음 글에서는 REST API보다 훨씬 복잡한 SOAP(Simple Object Access Protocol) API에 대해 자세히 살펴보겠습니다.
데모 요청하기
전문가와 함께 스윔레인 터빈 라이브 데모를 예약하세요! 당사의 AI 기반 보안 자동화 플랫폼이 조직 전체의 보안 문제를 해결하는 데 어떻게 도움이 되는지 알아보세요.

