API 엔드포인트는 무엇인가요?

API 엔드포인트는 API 호출을 수신하는 API 연결의 끝을 말합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • API 엔드포인트의 정의
  • API 엔드포인트가 URL을 사용하는 이유 이해하기
  • API 엔드포인트 인증의 중요성 파악하기

글 링크 복사

API 엔드포인트는 무엇인가요?

API(응용 프로그램 프로그래밍 인터페이스)는 하나의 응용 프로그램이 다른 응용 프로그램에 서비스를 요청하는 방식입니다. 개발자는 API를 통해 이미 존재하는 응용 프로그램 기능을 다시 빌드하지 않아도 됩니다. API 엔드포인트는 이러한 요청(API 호출)이 수행되는 곳입니다.

앨리스와 밥이 전화로 이야기하고 있는 경우, 앨리스의 말이 밥에게 전달되고 밥의 말도 앨리스에게 전달됩니다. 앨리스는 대화의 '엔드포인트'인 밥에게 자신의 말을 전달합니다.

앨리스: "안녕, 밥" ----------> 밥

마찬가지로 API 통합은 대화와 같습니다. 그러나 API 클라이언트는 "안녕"이라고 말하는 대신 API 서버에 "데이터가 필요합니다"와 같은 말을 합니다. 이것이 API 호출입니다. API 서버 엔드포인트는 "여기 데이터가 있습니다"와 같이 말합니다. 이것이 API 응답입니다. 그리고 API 엔드포인트는 앨리스와 밥과 같은 물리적인 개체가 아니며, 하드웨어가 아니라 소프트웨어에 존재합니다.

API 서버와 API 클라이언트

API는 데이터를 저장하고 소프트웨어 프로그램을 실행하는 특별한 컴퓨터인 하나 이상의 서버에서 호스팅됩니다. 각 서버는 인터넷을 통해 다른 장치에 데이터, 콘텐츠 및 소프트웨어 기능을 '제공'합니다. API 엔드포인트는 거의 항상 서버에서 호스팅됩니다.

API 연결의 다른 쪽 끝은 API에서 서비스를 요청하는 독립체인 API 클라이언트입니다. 대부분의 API 호출이 자동화되어 있지만 일부는 이를 API '사용자'라고 부릅니다.

API 클라이언트는 서버의 엔드포인트를 어떻게 알 수 있나요?

API를 사용하려면 문서가 있어야 합니다. 문서에는 무엇보다도 API가 수락할 요청의 유형, API가 수행할 수 있는 작업, 응답을 포맷하는 방법 및 엔드포인트가 무엇인지가 나와 있습니다. 개발자는 API 문서를 검토하고 응용 프로그램을 빌드할 때 이 정보를 포함할 수 있습니다.

예시로, 여기에서 엔드포인트가 무엇인지를 포함한 Cloudflare의 API 문서를 확인해 보세요. https://api.cloudflare.com/

API은 어떻게 URL을 사용하나요?

URL(Uniform Resource Locators)은 웹페이지 찾기를 포함하여 웹에서 다양한 목적으로 사용됩니다. 예를 들어, 이 웹페이지의 미국 영어 버전 URL은 https://www.cloudflare.com/learning/security/api/what-is-api-endpoint/입니다. 사용자가 해당 URL을 브라우저에 입력하면 브라우저는 이 웹페이지를 찾을 수 있는 위치를 알고 로드할 수 있습니다.

또한, URL은 API 엔드포인트를 나타냅니다. 앨리스와 밥이 전화 통화를 할 때, 앨리스는 밥의 전화번호로 밥에게 전화를 겁니다. 마찬가지로, API 엔드포인트 URL은 API 호출을 위한 전화번호와도 같습니다.

API 서버는 하나 이상의 API 엔드포인트를 호스팅할 수 있습니다. 즉 API 서버가 해당 엔드포인트의 URL에 대한 호출을 수락하고 처리한다는 것을 의미합니다. API 클라이언트는 또한 API 서버가 응답을 보낼 위치를 알 수 있도록 URL이 있어야 합니다. 마치 밥과 앨리스가 서로 전화 통화를 하려면 전화번호가 필요한 것과 같습니다. 개발자는 응용 프로그램을 빌드할 때 이 URL을 설정합니다.

URL에는 URL에 도달하는 데 사용되는 HTTP와 같은 응용 프로그램 계층 프로토콜이 항상 포함됩니다. 대부분의 웹 API는 HTTP를 사용하기 때문에 HTTP가 API 엔드포인트의 URL에 포함됩니다.

API 엔드포인트와 클라이언트는 어떻게 인증하나요?

제대로 설계된 API는 아무에게서나 API 호출을 수락하지 않습니다. 이는 API 서버가 공격자로부터 악의적인 데이터를 수신하게 할 수 있습니다. 또한, API 사용에는 비용이 드는 경우가 많기 때문에 이 경우 API 서버에서 API 요청이 유료 클라이언트에게서 오는 것인지 확인해야 합니다.

이러한 이유로 API 서버는 호출을 보내는 API 클라이언트가 알려져 있고 신뢰할 수 있는지 확인해야 합니다. 이것은 인증을 통해 수행됩니다.

인증은 신원을 확인하는 프로세스입니다. 인간 사용자가 시스템에 인증하는 데 몇 가지 방법이 있는 것처럼, API 엔드포인트가 인증을 시행하는 데에는 네 가지 주요 방법이 있습니다.

  1. API 키: API 클라이언트는 , 또는 그들과 API 서비스만 알고 있는 고유한 문자열을 할당받습니다. API 클라이언트가 API 호출을 서버 엔드포인트에 보낼 때, 호출이 어디에서 왔는지 서버가 알 수 있도록 키를 포함시킵니다.
  2. 기본 인증(사용자 이름 및 비밀번호): 키 접근과 마찬가지로 API 클라이언트는 API 서비스에 사용자 이름과 비밀번호를 설정하고 API 호출에 이러한 자격 증명을 포함합니다.
  3. OAuth 토큰: API 서버는 클라이언트의 인증을 요구하는 대신, OAuth 프로토콜을 사용하여 신뢰할 수 있는 인증 서버에서 인증 토큰을 받을 수 있습니다.
  4. mTLS(Mutual TLS): TLS는 웹페이지를 로드할 때 클라이언트와 서버 간에 인증된 연결을 생성하는 프로토콜입니다. 이는 또한 API 통합의 양쪽을 인증할 수 있습니다.

대부분의 경우 mTLS는 가장 효율적인 인증 방법입니다. 우선 첫째로, 이는 클라이언트와 엔드포인트 모두를 인증하기 때문에 양쪽 모두가 합법적인 소스에서 데이터를 수신하고 있는지 확인할 수 있습니다. 또한, 엔드포인트 간에 절대 공유되지 않기 때문에 전송 중에 가로챌 수 없는 개인 키를 사용합니다. 반면에 API 키, 비밀번호, 토큰은 모두 복제되거나 도난당할 수 있습니다.

Cloudflare API Shield는 mTLS로 API 엔드포인트와 클라이언트를 인증해서 공격으로부터 양쪽을 보호합니다. 또한, API Shield는 속도 제한DLP(데이터 손실 방지)를 비롯한 API 보안 주요 기능을 제공합니다. API Shield에 대해 자세히 알아보세요.