API 보안이란? 주요 유형 및 사용 사례
강력한 API 보안 체계를 구축하여 공격자의 침입을 차단하고 데이터를 안전하게 보호하세요. 보호 유형, 활용 사례, 모범 사례에 대해 자세히 알아보세요.
API는 현대 애플리케이션 아키텍처에서 핵심적인 역할을 하지만, 점점 더 공격자들의 표적이 되고 있습니다. 일반적인 API 보안 취약점을 알아보고, 공격과 침해로부터 API를 선제적으로 보호하기 위한 전략을 살펴보세요.
API 보안 이해하기
API(애플리케이션 프로그래밍 인터페이스)는 애플리케이션이 다른 애플리케이션, 서비스 또는 플랫폼과 통신하고 데이터를 교환할 수 있도록 지원하므로 현대적인 애플리케이션 개발에 필수적입니다. 기업은 API를 통해 외부 플랫폼 및 타사 서비스와 손쉽게 통합하고, 다양한 구성 요소를 연결하여 종합적인 솔루션을 구축할 수 있습니다. 이는 개발자가 기존 서비스와 기능을 활용하고, 코드 재사용을 촉진하며, 개발 주기를 단축하고, 생산성을 높일 수 있는 모듈식 앱 개발 방식을 장려합니다. API는 비즈니스 로직을 분리하고 분산할 수 있다는 점에서 현대적인 앱의 초석이며, 기존 애플리케이션을 API 기반 아키텍처로 발전시키는 데 사용되는 핵심 메커니즘입니다.
API 연대표
컴퓨팅의 거의 모든 다른 영역과 마찬가지로, 개발자들이 성능과 안정성을 개선할 방법을 모색해 오면서 API 기술도 지난 25년간 변화해 왔습니다. API의 설계 철학과 데이터 표현 방식이 발전함에 따라 데이터와 트래픽을 보호하는 방식도 함께 진화했습니다. 널리 사용된 API 아키텍처의 변천 과정은 대략 다음과 같습니다:
- SOAP API(1998~2010년). SOAP(Simple Object Access Protocol) API는 XML 형식 데이터에 디지털 서명과 암호화를 사용하여 메시지 수준에서 보안을 적용합니다. 메시지 수준 보안은 일반적으로 아래에서 설명하는 REST API 아키텍처 스타일의 보안보다 더 포괄적입니다. 하지만 이식성이 뛰어나다는 평가에도 불구하고, 오늘날 메시지 수준 보안은 레거시 웹 서비스에서만 사용됩니다.
- REST API (2010년~현재). 지난 10년 동안 표현 상태 전송(REST)은 가장 널리 사용되는 API 아키텍처 스타일로 자리 잡았습니다. 오늘날 대부분의 웹 API는 REST API입니다. REST에서는 고유한 HTTP URI로 리소스를 식별하며, 액세스 제어 규칙은 HTTP 동사와 HTTP URI의 조합을 기반으로 합니다.
- GraphQL API(2020년~미래) GraphQL은 새롭게 부상하는 API용 쿼리 언어입니다. 프런트엔드 개발자가 애플리케이션에 가장 적합한 방식으로 API 쿼리를 맞춤 설정할 수 있어 개발자에게 주도권을 부여합니다. 모든 리소스는 단일 URI를 통해 액세스합니다. 이러한 유연성과 제어 기능 덕분에 GraphQL의 인기는 점점 높아지고 있습니다.
다양한 유형의 API
API는 접근성, 용도 및 대상 사용자에 따라 여러 유형으로 분류할 수 있습니다.
- 비공개 API, 내부 API라고도 하며 조직이 내부적으로 사용하기 위해 개발하고 유지 관리합니다. 조직의 인프라 내에서 서로 다른 구성 요소나 서비스 간의 통신을 지원하는 데 사용됩니다. 비공개 API는 외부 개발자가 사용하도록 설계된 것이 아닙니다.
- 공개 API는 서비스, 플랫폼 또는 애플리케이션의 특정 기능이나 데이터에 대한 액세스를 제공하도록 설계되며 외부 개발자, 타사 소프트웨어 애플리케이션 및 일반 대중에게 공개됩니다. 공개 API는 제품이나 서비스의 기능을 확장하고 타사 개발자가 애플리케이션이나 통합 기능을 개발하도록 장려하는 데 자주 사용됩니다.
- 파트너 API는 특정 기능이나 데이터에 대한 통제된 액세스를 제공하기 위해 조직의 특정 파트너, 계열사, 고객 또는 B2B(기업 간 거래) 협력자만 사용하도록 제한된 공개 API의 하위 유형입니다. 이러한 API에 대한 액세스는 일반적으로 인증 및 권한 부여 메커니즘을 통해 허용됩니다.
- 서드 파티 API는 외부 조직이나 개인이 다른 애플리케이션에 통합할 수 있는 기능을 제공하기 위해 개발합니다. 개발자는 이러한 API를 통해 외부 서비스, 라이브러리 또는 데이터 소스에 액세스하여 자체 애플리케이션을 개선할 수 있습니다. 기존 서비스나 기능을 활용해 시간과 노력을 절약할 수 있어 소프트웨어 개발에 널리 사용됩니다. 서드 파티 API의 예로는 맞춤형 지도를 표시하는 지도 API나 여행 또는 관광 웹 페이지에 현지 일기예보를 표시하는 날씨 API가 있습니다.
API 보안이 필요한 이유
API는 위험 노출 영역을 확대할 뿐만 아니라 멀티 클라우드 아키텍처 전반에 걸친 상호 의존성으로 인해 예기치 못한 위험을 초래하기도 합니다. 이를 API 스프롤이라고 하며, API 에코시스템의 보안에 심각한 위협이 될 수 있습니다. 웹 앱과 마찬가지로 API도 취약점 악용, 자동화된 위협에 의한 남용, 서비스 거부 공격, 잘못된 구성, 인증 및 권한 부여 제어를 우회하는 공격에 노출될 수 있습니다.
최신 마이크로서비스 아키텍처의 도입이 증가하면서 API 스프롤이 심화될 수 있습니다. 이러한 아키텍처는 인터페이스와의 통신(남북 트래픽) 및 마이크로서비스 간 통신(동서 트래픽)에 많은 수의 API를 사용하기 때문입니다.
API 스프롤을 방지하기 위한 전략은 다음과 같습니다:
- API 거버넌스 전략 구현
- API 검색을 위한 단일 정보 소스 구축
- 적절한 버전 관리 및 문서화 보장
- API 트래픽에 대한 지표 및 가시성 제공
- 대규모로 API 보안 적용
이러한 전략과 구현 방법을 자세히 알아보려면 API 스프롤에 대처하는 5가지 방법(그리고 이것이 중요한 이유)을 읽어보세요.
불충분한 API 보안의 위험
API는 본질적으로 사용자 데이터, 인증 자격 증명, 금융 거래와 같은 중요한 비즈니스 로직과 민감한 정보를 노출하므로 점점 더 공격자의 표적이 되고 있습니다. 특히 로그인, 계정 생성, 장바구니 추가, 송금 기능이 주요 표적입니다. API는 취약점이나 약점을 악용하거나 기반 인프라와 리소스를 노출하려는 공격자의 침입 경로가 될 수 있습니다.
API 보안의 주요 유형
강력한 API 보안 조치가 필요합니다. 이는 무단 액세스, 조작 또는 노출로부터 데이터를 보호하여 개인정보를 지키고 사용자와 이해관계자의 신뢰를 유지하는 한편, API의 기밀성, 무결성 및 가용성을 보장하기 위한 것입니다.
하지만 API와 앱은 동일한 위협의 표적이 되는 경우가 많으므로, 보안 팀은 애플리케이션과 API를 아우르는 통합 보안 전략을 고려해야 합니다. OWASP의 「2023년 API 보안 10대 위험」에 따르면, 보안 솔루션을 구현할 때 고려해야 할 앱과 API에 공통으로 존재하는 보안 위험이 있습니다. 예를 들면 다음과 같습니다.
- 취약한 인증/권한 부여 제어
- 잘못된 구성
- 비즈니스 로직 악용(크리덴셜 스터핑, 계정 탈취)
- 서버 측 요청 위조(SSRF)
이를 통해 애플리케이션과 API가 공통 기능을 공유하는 통합 애플리케이션 및 API 보안 전략을 수립할 수 있습니다. 동일한 위협이나 위험에 대응하기 위해 두 배나 많은 서비스를 운영하는 것은 비효율적이며 불필요한 복잡성을 가중합니다. 통합 애플리케이션 및 API 보안 전략은 운영, 재무 및 아키텍처 측면에서 더 합리적입니다.
API 보안의 주요 사용 사례는 다음과 같습니다.
인증 및 권한 부여
인증과 권한 부여는 API 보안의 핵심 요소입니다. 인증은 요청을 보내는 주체가 실제로 자신이 주장하는 사용자 또는 시스템인지 확인하여 API에 액세스하려는 주체의 신원을 검증하는 과정입니다. 일반적인 인증 방식에는 사용자 이름/비밀번호, API 키, 토큰, 생체 인식 등이 있습니다. 권한 부여는 인증된 사용자 또는 시스템이 API 내에서 수행할 수 있는 작업을 결정합니다. 여기에는 액세스 제어 규칙, 역할 및 권한을 정의하는 작업이 포함됩니다. 역할 기반 액세스 제어(RBAC)와 속성 기반 액세스 제어(ABAC)는 일반적으로 사용되는 권한 부여 모델입니다. 조직은 적절한 권한 검사를 시행하여 인증된 클라이언트가 특정 리소스에 액세스하거나 특정 작업을 수행하는 데 필요한 권한을 보유하도록 할 수 있습니다. 세분화된 액세스 제어를 통해 민감한 API 엔드포인트나 데이터뿐만 아니라 관련 객체 및 함수에 대한 액세스도 제한할 수 있습니다.
개방형 인증(Open Authorization, OAuth) 프로토콜은 강력한 인증 및 권한 부여 체계를 구현하는 데 핵심적인 요소입니다. OAuth를 사용하면 사용자가 사용자 이름과 비밀번호를 타사 애플리케이션에 직접 제공할 필요가 없습니다. 대신 OAuth는 제한된 범위의 권한을 나타내는 액세스 토큰을 발급하여 자격 증명 도용 및 오용 위험을 줄입니다. 또한 API 제공업체가 범위와 권한을 통해 세분화된 액세스 제어를 정의할 수 있도록 하여, 타사 애플리케이션이 사용자가 승인한 특정 리소스와 작업에만 접근하도록 보장하고 무단 접근 위험을 줄입니다.
인증 및 권한 부여 메커니즘을 부적절하게 구현하면 다음을 비롯한 여러 API 보안 위협이 발생할 수 있습니다:
객체 수준 권한 부여 취약점. 이 보안 취약점은 애플리케이션이 객체 또는 데이터 수준에서 액세스 제어를 제대로 적용하지 못할 때 발생합니다. 이로 인해 공격자가 권한 부여 검사를 조작하거나 우회하여 애플리케이션 내 특정 객체 또는 데이터에 무단으로 액세스할 수 있습니다. 객체의 ID를 수신하고 해당 객체에 대해 작업을 수행하는 모든 API 엔드포인트는 객체 수준 권한 부여 검사를 구현하여 로그인한 사용자에게 요청된 객체에 대해 요청된 작업을 수행할 권한이 있는지 확인해야 합니다.
취약한 인증. API의 인증 메커니즘이 잘못 구현되는 경우가 많아 공격자가 사용자 계정이나 민감한 데이터에 무단으로 액세스하거나 승인되지 않은 작업을 수행할 수 있습니다.
객체 속성 수준의 잘못된 권한 부여. 이 위협은 API가 객체 속성 수준에서 액세스 제어 및 권한 부여 검사를 제대로 적용하지 못할 때 발생합니다. API 엔드포인트가 민감한 것으로 간주되어 사용자가 읽어서는 안 되는 객체 속성을 노출하는 경우 이러한 공격에 취약하며, 이 익스플로잇은 과도한 데이터 노출이라고도 합니다. 또한 API 엔드포인트가 사용자가 민감한 객체 속성의 값을 변경, 추가 또는 삭제할 수 있도록 허용하는 경우에도 이러한 공격에 취약하며, 이 익스플로잇은 대량 할당이라고도 합니다.
- 취약한 기능 수준 권한 부여. 이 위협은 API가 기능 또는 작업 수준에서 권한 부여 검사를 제대로 시행하지 않아 공격자가 권한이 없는 기능에 접근할 수 있을 때 발생합니다. 최신 애플리케이션은 다양한 유형의 기능별 역할과 그룹을 정의할 수 있고 복잡한 사용자 계층 구조를 포함할 수 있으며, 공격자가 이를 악용할 수 있기 때문에 적절한 권한 부여 검사를 구현하기가 까다로울 수 있습니다.
- 민감한 비즈니스 흐름에 대한 무제한 액세스. 이 공격은 API에 적절한 액세스 제어나 권한 부여 검사가 없어 공격자가 API로 지원되는 민감한 비즈니스 흐름에 대한 액세스를 자동화할 수 있을 때 발생합니다. 공격자는 정교한 자동화 도구를 사용해 공격 방식을 재정비하는 경우가 많으며, 대상의 웹 앱이 자동화 방지 수단으로 충분히 보호되어 있다면 API 이면의 비즈니스 로직으로 공격 대상을 전환할 수 있습니다.
JSON 웹 토큰(JWT)
JSON Web Token(JWT)은 두 당사자 간에 데이터를 간결하고 자체 완결적이며 안전한 방식으로 전송하기 위한 개방형 표준입니다. JWT는 토큰 기반 인증 및 권한 부여에 널리 사용됩니다. JWT를 사용하면 사용자 또는 클라이언트가 요청할 때마다 사용자 이름과 비밀번호 같은 자격 증명을 반복해서 전송하지 않고도 API 서버에 자신의 신원과 권한을 증명할 수 있으므로, 민감한 정보가 네트워크를 통해 노출되는 것을 방지할 수 있습니다. 이러한 토큰 기반 접근 방식은 세션 하이재킹과 같은 잠재적 공격에 노출되는 시간을 최소화하여 보안을 강화합니다. JWT는 폐기할 수 있으며 만료 시간이 포함되어 있어, 해당 시간이 지나면 유효하지 않게 됩니다. 이를 통해 토큰이 무기한 유효하게 유지될 위험을 줄일 수 있습니다.
JWT 검색 및 검증은 무단 액세스나 변조를 방지하기 위해 JWT의 적법성을 확인하는 데 필수적인 메커니즘입니다. JWT 검색은 JWT 검증에 사용되는 JSON 인코딩 공개 키 또는 인증서를 찾아 확인하는 과정이며, JWT 검증은 JWT 발급자가 API에서 예상하는 발급자와 일치하는지 확인하는 과정입니다. 이를 통해 토큰이 신뢰할 수 있는 출처에서 발급되었는지 확인할 수 있습니다.
데이터 암호화
API는 다양한 암호화 기술을 사용하여 클라이언트와 서버 간에 전송되는 데이터를 보호하고, 전송 중에 교환되는 정보의 기밀성과 무결성을 보장합니다. API 요청과 응답을 보호하는 데 사용되는 주요 암호화 프로토콜은 HTTPS입니다. HTTPS는 보안 소켓 계층(SSL)/전송 계층 보안(TLS)을 사용하는 HTTP로, 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 악의적인 제3자의 도청과 변조를 방지합니다. SSL/TLS는 비대칭 암호화와 대칭 암호화를 모두 사용하여 전송 중인 데이터의 기밀성과 무결성을 보호합니다. 비대칭 암호화는 클라이언트와 서버 간에 보안 세션을 설정하는 데 사용되고, 대칭 암호화는 보안 세션 내에서 데이터를 교환하는 데 사용됩니다. 이를 통해 공격자가 두 노드(이 경우 클라이언트와 API 서버) 간에 교환되는 데이터를 열람하거나 변조하는 것을 방지할 수 있습니다.
그러나 네트워크 내부 또는 조직의 인프라 내 서로 다른 서비스나 구성 요소 간의 머신 간 API 호출을 의미하는 "East-West" 트래픽에 엔드투엔드 암호화를 제공하는 것은 여러 암호화 키를 생성, 배포 및 관리해야 하므로 어려울 수 있습니다. 통신하는 모든 구성 요소가 적시에 올바른 키를 사용할 수 있도록 보장하는 작업은 특히 대규모 환경에서 복잡하며, 지연을 유발하고 엔드투엔드 암호화 구현의 확장성을 제한할 수 있습니다.
입력값 검증 및 정제
입력값 검증 및 정제는 사용자 입력이나 API와 같은 외부 소스에서 수신한 데이터가 안전하고 신뢰할 수 있으며 악성 콘텐츠가 없도록 하여 삽입 공격 및 기타 악용을 방지하는 데 도움이 됩니다. 검증 규칙은 유효한 데이터로 간주되는 기준을 정의합니다. 이러한 규칙에는 데이터 유형 검사(예: 숫자, 알파벳, 이메일 형식), 길이 제한, 형식 요구 사항 및 사용자 지정 비즈니스 로직이 포함될 수 있습니다. 입력값 검증에 실패하면(즉, 데이터가 정의된 기준을 충족하지 않으면) 애플리케이션은 해당 입력을 거부하여 더 이상 처리되지 않도록 합니다.
입력값 정제는 잠재적으로 유해하거나 악의적인 콘텐츠를 제거하거나 무력화하기 위해 데이터를 정리하거나 필터링하는 과정입니다. 입력값 검증과 정제는 다양한 공격, 특히 인젝션 공격으로부터 시스템을 보호하는 데 도움이 됩니다. 이러한 공격은 공격자가 신뢰할 수 없거나 악의적인 데이터를 명령어나 쿼리 언어에 삽입하거나, 애플리케이션이 사용자 제공 데이터를 검증, 필터링 또는 정제하지 않아 악성 명령이 실행될 때 발생합니다. 인젝션 공격에는 NoSQL, OS 명령어, LDAP 및 SQL 인젝션 공격이 포함되며, 또한 크로스 사이트 스크립팅(XSS)도 포함됩니다. 크로스 사이트 스크립팅은 공격자가 JavaScript와 같은 악성 클라이언트 측 스크립트를 다른 사용자가 보는 웹 페이지에 삽입하는 공격입니다.
요청 속도 제한 및 조절
이러한 메커니즘은 클라이언트가 API에 요청할 수 있는 빈도를 제어하여 API의 악용이나 과도한 사용 및 리소스의 과도한 소비를 방지하고, 잠재적인 서비스 거부(DoS) 공격으로부터 API를 보호합니다.
감사 추적 및 로깅
감사 추적 및 로그는 요청을 시작한 주체, 액세스한 엔드포인트, 요청이 발생한 시점 등 API 요청과 응답에 관한 상세 정보를 기록하여 API 활동을 파악할 수 있도록 합니다. 보안 팀은 로그를 분석해 반복적인 로그인 실패, 예기치 않은 데이터 액세스, 비정상적인 트래픽 급증과 같은 비정상적이거나 의심스러운 API 활동 패턴을 탐지할 수 있습니다. 이러한 이상 징후는 해킹 시도나 데이터 유출과 같은 보안 사고를 나타낼 수 있습니다. 보안 침해나 의심스러운 활동이 발생한 경우 감사 추적 및 로그는 중요한 디지털 포렌식 데이터로도 활용됩니다.
API 보안 모범 사례
보안은 설계부터 개발, 배포에 이르기까지 API 수명 주기의 모든 단계에 내재되어야 합니다. 하향식 보안 접근 방식에서 볼 수 있는 검색 도구도 필수 요소이지만, 올바른 API 보안은 API를 구축하고 배포하는 팀에서 시작됩니다. 이러한 앱 및 API 보안 접근 방식을 시프트 레프트라고 하며, 소프트웨어 개발 수명 주기(SDLC)의 초기 단계부터 보안 제어를 적용하고 CI/CD 파이프라인에서 이를 자동화할 수 있습니다.
다음 API 보안 모범 사례에서는 API 고유의 취약점과 보안 위험을 완화하기 위한 전략과 절차를 중점적으로 다룹니다.
안전한 API 설계
안전한 API를 설계하려면 API와 상호 작용하는 사용자 및 시스템의 신원을 확인하기 위한 강력한 인증 메커니즘을 구현하는 등 견고한 보안 제어가 필요합니다. 권한 부여 제어를 사용하여 접근 권한을 정의하고 적용함으로써 승인된 주체만 특정 작업을 수행할 수 있도록 해야 합니다. 사용자와 시스템에 작업 수행에 필요한 최소한의 권한만 부여하여 최소 권한 원칙을 준수하세요. 과도한 권한은 API의 오용이나 악용으로 이어질 수 있으므로 피해야 합니다. 네트워크를 통해 전송되는 데이터를 보호하려면 SSL/TLS와 같은 강력한 암호화를 사용하세요. 인젝션 공격과 같은 일반적인 보안 취약점을 방지하려면 클라이언트 및 기타 소스에서 수신하는 모든 입력을 검증하고 안전하게 처리하세요.
또한 취약점을 노리는 공격으로부터 API를 보호하는 것이 매우 중요합니다. 여기에는 알려진 보안 취약점을 해결할 수 있도록 정기적인 패치 관리를 통해 모든 API 종속성, 라이브러리 및 프레임워크를 최신 상태로 유지하는 것이 포함됩니다. DDoS 공격의 위험을 완화하려면 지정된 시간 내에 전송할 수 있는 요청 수를 제한하는 속도 제한 및 스로틀링 메커니즘을 구현해야 합니다. 비즈니스 로직 악용 역시 API 보안의 중대한 취약점입니다. 이러한 공격은 애플리케이션의 기본 로직과 프로세스를 악용하여 악의적인 목적을 달성합니다. 예를 들어 공격자는 API의 비즈니스 로직을 조작하여 특정 기능이나 리소스에 무단으로 액세스하거나 민감한 데이터를 유출할 수 있습니다. 강력한 액세스 제어 및 권한 부여 메커니즘을 적용하면 권한이 있는 사용자만 특정 API 비즈니스 로직 기능에 액세스하도록 보장할 수 있습니다.
일반적으로 API를 설계할 때 사용자나 개발자가 가장 자연스럽게 받아들일 수 있는 방식과 규칙을 선택한다는 의미의 ‘최소 놀람의 원칙’을 준수해야 합니다. API 사용자는 보안 기능의 작동 방식과 자신에게 요구되는 사항을 명확히 이해할 수 있어야 합니다. 보안 기능이 사용자의 기대와 확립된 업계 관행에 부합하면 사용자가 실수하거나 해당 기능을 잘못 이해할 가능성이 줄어듭니다.
런타임 탐지
런타임 탐지 시스템은 머신 러닝과 행동 분석을 활용하여 정상적인 API 동작의 기준선을 설정하고, 시스템이 이 기준선에서 벗어난 동작을 감지하면 경고를 제공합니다. 이러한 이상 징후에는 비정상적인 API 요청 패턴, 예기치 않은 데이터 흐름, 무단 액세스 시도 등이 포함될 수 있습니다. 런타임 탐지의 목적은 개발 또는 배포 과정에서 적용되는 정적인 보안 조치에 의존하는 대신, 보안 위협과 취약점이 발생하는 즉시 실시간으로 식별하고 대응하는 것입니다.
API 게이트웨이 사용
API 게이트웨이는 API 트래픽을 중앙에서 제어하고 보호하며 관리할 수 있도록 함으로써 API 생태계에서 보호 계층 역할을 합니다. 또한 인증 및 권한 부여 정책 적용, 트래픽 필터링, 속도 제한, 스로틀링 등을 통해 API 악용을 방지하고, 기반 API 인프라를 여러 일반적인 위협과 운영상의 문제로부터 보호하는 보안 및 관리 계층으로 기능합니다. API 게이트웨이는 API 트래픽과 활동에 대한 상세 로그를 수집하므로 실시간 로깅 및 모니터링 기능도 제공하며, 이는 감사나 사고 조사에 매우 중요할 수 있습니다.
교차 출처 리소스 공유(CORS)
CORS는 JavaScript와 같은 클라이언트 측 기술을 사용하는 웹 애플리케이션이 보내는 교차 출처(즉, 서로 다른 도메인 또는 출처 간) 요청을 제어하고 관리하기 위해 웹 브라우저에 구현된 일련의 보안 정책입니다. CORS는 웹 서버가 교차 출처 요청에 응답하는 방식을 규정하는 일련의 HTTP 헤더를 적용하는 방식으로 작동합니다. CORS는 웹 보안을 유지하면서도 웹 페이지가 다른 도메인에서 호스팅되는 API, 웹 서비스 또는 자산의 리소스를 요청하고 상호 작용할 수 있도록 하는 데 필수적입니다.
인터넷에 공개할 API를 보호할 때는 CORS 정책을 사용하여 API에 액세스할 수 있는 도메인을 제어하고, 신뢰할 수 있는 도메인만 보호된 리소스에 액세스할 수 있도록 해야 합니다. API를 사이트 간 요청 위조(CSRF) 공격 및 기타 보안 위험에 노출할 수 있는 지나치게 허용적인 설정은 피하세요.
정기적인 테스트, 모니터링 및 업데이트
정기적인 테스트와 모니터링, 소프트웨어 패치는 선제적인 API 보안 전략의 필수 요소입니다. 지속적인 모니터링에서는 API의 취약점, 보안 결함, 잘못된 구성을 식별하는 데 도움이 되도록 정기적인 취약점 검사와 침투 테스트를 수행하고, 정적 코드 분석과 동적 애플리케이션 보안 테스트(DAST)를 통해 API 코드베이스와 런타임 동작의 보안 취약점을 평가해야 합니다. 패치되지 않은 소프트웨어는 공격자의 주요 표적이 될 수 있으므로, 알려진 취약점에 대응하기 위해 운영 체제, 웹 서버, 라이브러리, 프레임워크 등 API 스택에 사용되는 소프트웨어 구성 요소를 정기적으로 업데이트하세요.
API 보호 사용 사례
전자상거래 및 결제 게이트웨이
전자상거래 기업과 결제 게이트웨이 플랫폼은 방대한 양의 민감한 데이터와 금융 거래를 처리하므로 강력한 API 보안이 필수적입니다. 전자상거래 기업은 로그인, 상품 검색 및 표시, 장바구니, 배송비 견적, 결제 처리 등 대부분의 고객 접점에서 API를 활용합니다. 또한 API는 기존 고객을 위한 새로운 구매 상품 추천부터 리뷰 및 평점 추적, 챗봇과의 상호작용에 이르기까지 기업이 고객 경험을 개선할 수 있도록 지원합니다.
모바일 앱 통합
API는 모바일 앱과 다양한 서비스, 데이터 소스 및 타사 플랫폼을 연결하는 가교 역할을 하므로, 모바일 앱 통합에서 API 보안은 매우 중요합니다. 모바일 앱은 백엔드 서버 또는 외부 서비스와 API를 통해 데이터를 교환해야 하는 경우가 많으며, API는 앱이 데이터를 요청하고 수신할 수 있는 체계적인 방식을 제공합니다. 모바일 앱과 API 간의 안전한 상호작용을 보장하는 것은 보안 침해를 방지하고, 인증 및 액세스 제어를 보호하며, 앱과 연결된 시스템 모두의 전반적인 보안 태세를 유지하는 데 필수적입니다.
의료 데이터 교환
의료 데이터에는 일반적으로 의료 기록, 진단, 치료 계획, 청구 내역과 같은 민감한 환자 기밀 정보가 포함되며, API는 의료 서비스 제공자, 보험자 및 기타 이해관계자 간에 이러한 정보를 공유할 수 있도록 지원합니다. 환자의 개인정보를 보호하고, 미국의 HIPAA와 같은 의료 규정을 준수하며, 의료 데이터의 무결성을 유지하려면 이러한 API의 보안을 확보하는 것이 매우 중요합니다.
금융 서비스 및 오픈 뱅킹
강력한 API 보안은 금융 서비스 데이터의 기밀성, 무결성 및 가용성을 보장하고 오픈 뱅킹 솔루션을 운영하기 위한 필수 요건입니다. API 보안은 다양한 금융 기관, 결제 서비스 제공업체 및 핀테크 기업 간 금융 데이터의 안전한 교환을 지원하는 데 핵심적인 역할을 할 뿐만 아니라, EU의 결제 서비스 지침 2(PSD2) 및 미국의 PCI DSS와 같은 규정에서 요구하는 데이터 암호화 및 액세스 제어 요건을 준수하는 데에도 도움이 됩니다. 또한 API 보안은 사기를 방지하고 오픈 뱅킹 이니셔티브를 뒷받침하는 서드파티 통합을 보호하는 데 중요한 역할을 합니다.
IoT(사물 인터넷) 생태계
API 보안은 IoT의 핵심 요소로, IoT 기기, 애플리케이션 및 서비스가 안전하게 통신하고 데이터를 보호하며 전체 생태계의 무결성을 유지할 수 있도록 합니다. IoT 기기는 API를 통해 서로 간에, 그리고 엣지 게이트웨이 및 클라우드 플랫폼과 통신합니다. API 보안은 기기와 기타 생태계 구성 요소 간에 교환되는 데이터의 기밀성과 인증 상태를 유지하고 무단 액세스로부터 데이터를 보호합니다. 또한 IoT 네트워크에는 고유한 ID를 가진 수많은 기기가 포함되는 경우가 많으며, API 보안은 기기 ID 관리를 통해 기기 ID의 무결성을 유지하고 사칭이나 무단 액세스를 방지할 수 있습니다. IoT 생태계에는 기기 온보딩, 프로비저닝, 업데이트 및 안전한 폐기를 관리하는 기능도 필요하며, API 보안은 안전한 펌웨어 업데이트를 비롯한 기기의 전체 수명 주기 관리를 지원할 수 있습니다.
API 보안의 미래
API 보안은 변화하는 기술 환경과 갈수록 빈번해지고 고도화되는 사이버 위협에 대응해 지속적으로 발전하므로 끊임없이 변화하는 과제입니다. 다음은 API 보안의 미래를 좌우할 수 있는 몇 가지 주요 동향입니다.
API 보안의 AI 및 머신러닝
AI와 ML의 방대한 처리 능력은 API 보안을 근본적으로 혁신할 것으로 기대됩니다. 머신러닝 모델은 정상적인 API 사용 패턴의 기준선을 설정할 수 있으며, 이 기준선에서 벗어나는 활동이나 기타 이상 징후가 감지되면 경고 또는 자동 대응을 실행하여 잠재적인 보안 침해를 방지하는 데 도움을 줄 수 있습니다. 또한 AI는 기존의 규칙 기반 시스템이 놓칠 수 있는 복잡한 공격 패턴과 제로데이 취약점을 식별할 수 있습니다. AI 시스템은 변화하는 위협에 맞춰 적응하고 진화하면서 지속적으로 더 지능화되므로 새롭고 정교한 공격에 더욱 효과적으로 대응할 수 있으며, 과거 데이터와 새로운 동향을 바탕으로 잠재적인 보안 위협을 예측할 가능성도 있습니다. 이러한 선제적 접근 방식을 통해 보안 팀은 취약점이 악용되기 전에 이를 해결할 수 있습니다.
API를 위한 제로 트러스트 아키텍처
제로 트러스트 모델은 “절대 신뢰하지 말고 항상 검증하라”는 원칙을 지향합니다. 이를 API 보안에 적용하면 API 엔드포인트와 서비스를 각 요청마다 인증 및 권한 부여가 필요한 별도의 개체로 취급한다는 의미입니다. 제로 트러스트는 네트워크 내부와 외부를 막론하고 어떤 개체도 기본적으로 신뢰해서는 안 되며, 리소스에 대한 액세스는 반드시 알아야 할 필요가 있는 경우에만 허용해야 한다고 전제합니다. 이를 위해 API 액세스에 최소 권한 원칙을 적용하여 특정 작업이나 역할에 필요한 권한만 부여하고, 변화하는 요구 사항에 따라 액세스 권한을 정기적으로 검토하고 업데이트합니다. 또한 최초 액세스가 허용된 후에도 기기, 사용자 및 애플리케이션을 지속적으로 검증하고, 행동과 기기의 규정 준수 여부를 바탕으로 신뢰 수준을 재평가합니다.
블록체인 및 탈중앙화 API
블록체인의 핵심 특징은 블록체인에 추가된 데이터가 변경 불가능하다는 점입니다. 따라서 API를 통해 액세스하는 데이터는 위변조가 불가능하며, 악의적인 행위자가 탐지되지 않은 채 데이터를 변경하기가 사실상 불가능합니다. 또한 블록체인은 자산, 액세스 권한 또는 자격 증명을 토큰화할 수 있으며, 이를 활용해 API 액세스를 관리하고 제어함으로써 액세스 제어 관리를 간소화할 수 있습니다. API는 스마트 계약을 사용해 액세스 제어 정책을 시행하여 권한이 있는 사용자나 애플리케이션만 특정 API 리소스와 상호 작용하도록 할 수 있습니다. 블록체인은 데이터와 트랜잭션을 탈중앙화함으로써 중앙 집중식 서버나 데이터베이스와 같은 단일 장애 지점에 대한 의존도를 낮춥니다. 이에 따라 공격자가 API 보안을 침해하기가 더욱 어려워집니다.
F5가 지원하는 방법
API는 시스템이 외부 플랫폼 및 타사 서비스와 손쉽게 통합되고 여러 구성 요소를 연결하여 포괄적인 솔루션을 구축할 수 있도록 지원하므로 현대적인 앱 개발의 기반이 됩니다. 그러나 API는 앱의 공격 표면을 확대할 뿐만 아니라 멀티 클라우드 아키텍처 전반에 걸친 상호 의존성으로 인해 예기치 못한 위험을 초래하기도 합니다. API를 공격과 침해로부터 보호하려면 강력한 API 보안 조치가 필요합니다.
F5는 API 관리를 간소화하고 보안을 강화하는 솔루션을 제공합니다. F5 웹 애플리케이션 및 API 보호(WAAP) 솔루션은 WAF, L3~L7 DDoS 완화, 봇 방어를 포함한 포괄적인 보호 기능으로 최신 앱의 전체 공격 표면을 방어하여 자동화된 위협과 사기로부터 보호합니다. 분산형 플랫폼을 통해 앱과 API가 어디에 호스팅되어 있든 전체 환경에 일관된 정책을 손쉽게 배포하고 보안을 확장할 수 있습니다.
F5 Distributed Cloud API Security는 애플리케이션에 매핑된 모든 API 엔드포인트(공격자가 자주 노리는 섀도 API 포함)를 자동으로 식별하여 API 보안 정책을 구성하고 배포하는 데 드는 시간을 줄이고 API를 보호합니다. 이 솔루션은 AI와 ML을 활용해 비정상적인 활동과 행동을 모니터링하고 의심스러운 요청과 엔드포인트를 실시간으로 차단합니다. Distributed Cloud API Security의 SaaS 기반 포털을 통해 관리와 가시성을 간소화할 수 있으며, 사용자는 최신 애플리케이션의 API 방어를 모니터링하고 위협 분석, 포렌식 및 문제 해결을 심층적으로 수행할 수 있습니다.
F5 NGINX는 API를 보호하고 지속적인 보안을 보장하기 위한 다양한 솔루션을 제공합니다. 여기에는 F5 NGINX 앱 및 API 보안 솔루션,이 포함되며, 포괄적인 보호 기능을 통해 보안 침해를 줄이고 악의적인 사용자에게 조직이 노출되는 위험을 제한합니다. 주요 이점으로는 레이어 7 공격 방어, 엔드투엔드 암호화, 싱글 사인온(SSO), 타원 곡선 암호화, API 인증 및 DDoS 완화가 있습니다.
Kubernetes 앱을 위한 F5 NGINX 제로 트러스트 보안 솔루션은 복잡성과 오버헤드를 가중하지 않으면서 엣지부터 클라우드까지 Kubernetes 앱과 API를 보호합니다. 또한 F5 NGINX Plus는 엔터프라이즈급 API 게이트웨이로 배포할 수 있으며, F5 NGINX App Protect는 WAF 및 DoS 보호 기능을 제공합니다.

