API 엔드포인트를 보호하는 이유와 방법은 무엇입니까?
디지털 경제가 급성장하면서 API를 통한 데이터 전송량이 폭발적으로 증가하고 있습니다. 비즈니스, 게임, 교육, 날씨, 과학, 예술 등, 거의 모든 분야에서 API가 활용되고 있습니다. 이처럼 API에 크게 의존하는 세상에서, 아이러니하게도 보안에 대한 관심은 부족한 실정입니다.
개발자들은 프레임워크의 기본 설정에 의존하는 경향이 있으며, 프레임워크를 사용하지 않을 때는 보안 관행을 준수하고 있다고 착각합니다. 시스템 관리자들은 인프라나 서비스 제공업체가 제공하는 기본 보안에 만족합니다.
이러한 상황은 매우 우려스럽습니다.
출처: developer.ibm.com
보안이 취약한 API는 심각한 위험을 초래할 수 있습니다. 끔찍한 데이터 유출 사고가 발생할 수 있습니다.
그렇다면 API 보안을 위해 무엇을 해야 할까요?
API 엔드포인트 보안이 필요한 이유
API 엔드포인트 보안은 당연히 중요합니다. 기업은 API를 기반으로 사업을 운영하기 때문입니다. 하지만 그 이유를 좀 더 자세히 살펴보겠습니다.

사업 손실 📉
API 엔드포인트가 공격받아 훼손되면 모든 시스템이 중단됩니다. 보안 침해 복구에는 많은 시간이 소요되며, 이는 사업에 치명적인 손실을 가져올 수 있습니다. 대부분의 기업은 한두 시간의 다운타임을 견딜 수 있지만, 일부 기업에게는 허용되지 않는 상황입니다. 환전 시스템이 몇 분 동안 중단된다고 상상해 보십시오!
규정 준수 문제
API를 제대로 보호하지 못하면 운영 지역 또는 산업에 따라 심각한 법적 문제에 직면할 수 있습니다. 특히 은행 산업(특히 EU)과 같이 규제가 엄격한 분야에서는 안전하지 않은 API를 제공할 경우 막대한 벌금과 제재를 받을 수 있으며, 사업 자체가 존폐 위기에 놓일 수도 있습니다.
평판 손실
해킹 피해 자체도 심각하지만, 그 사실이 대중에 알려지면 브랜드 이미지는 회복 불가능한 타격을 입습니다. Sony는 수차례 심각한 해킹을 당한 후 보안 업계에서 조롱거리가 되었습니다. 실제 데이터 손실이나 금전적 손실이 발생하지 않더라도, 고객들의 신뢰를 되찾기 어려울 것입니다.
인프라 비용 증가 💰
API가 인프라에서 실행될 때는 대역폭, CPU, 메모리와 같은 리소스를 소비합니다. API가 제대로 보호되지 않아 악의적인 사용자가 API와 상호 작용할 수 있다면, API는 불필요한 작업을 계속 수행하게 되어 리소스 소비가 증가합니다. 예를 들어, AWS와 같이 리소스 자동 확장이 활성화된 플랫폼에서는 예상치 못한 비용 폭탄을 맞을 수 있습니다.
팀 사기 저하
보안 침해를 허용한 팀은 사기가 저하될 수밖에 없습니다. 취약한 인프라 보안이 원인일 수도 있고, 개발자들의 보안 의식 부족 때문일 수도 있습니다. 이러한 상황이 장기화되면 개발 의욕을 잃게 될 수 있습니다.
경쟁사 이익
실제 손실은 없었더라도, 경쟁사는 이 사건을 이용해 자사의 API가 훨씬 안전하다고 홍보할 것입니다. 고객의 신뢰를 다시 얻기 어려워집니다.
결론적으로, 보안 침해는 단순히 금전적 손실 이상의 심각한 결과를 초래할 수 있습니다.
API 엔드포인트 보안 모범 사례
다행히도 API 엔드포인트 보안을 강화하기 위해 쉽게 적용할 수 있는 여러 모범 사례가 있습니다. 다음은 대부분의 보안 전문가가 권장하는 방법입니다.
항상 HTTPS 🔒
API 엔드포인트에서 HTTP와 같은 보안되지 않은 프로토콜을 통한 통신을 허용하면 매우 위험합니다. 암호, 비밀 키, 신용 카드 정보 등이 쉽게 도난당할 수 있습니다. 중간자 공격이나 패킷 스니퍼 도구를 통해 개인 정보가 평문으로 노출될 수 있습니다. 따라서 HTTPS를 필수로 사용해야 하며, 엔드포인트가 아무리 사소하더라도 예외를 두어서는 안 됩니다. TLS 인증서는 저렴하게 구매할 수 있습니다. SSL 스토어에서 $20 정도에 구매할 수 있습니다.

단방향 암호 해싱
보안 침해가 발생할 경우 모든 사용자 계정이 위험에 처할 수 있으므로, 암호를 평문으로 저장해서는 안 됩니다. 또한, 대칭 암호화는 공격자가 암호를 해독할 가능성이 있으므로 피해야 합니다. 암호 저장을 위한 유일한 대안은 비대칭(또는 "단방향") 암호화 알고리즘입니다. 이렇게 하면 공격자, 개발자, 심지어 회사 내부 시스템 관리자조차도 고객 암호를 읽을 수 없게 됩니다.
강력한 인증 💪
요즘 대부분의 API에는 인증 방식이 있지만, 개인적으로 OAuth2 시스템이 가장 효과적이라고 생각합니다. OAuth2는 계정을 리소스로 나누고, 인증 토큰 소지자에게 제한된 액세스 권한만 부여합니다. 또한 토큰을 24시간마다 만료되도록 설정하여 갱신해야 하는 것이 좋습니다. 이렇게 하면 토큰이 유출되더라도 피해를 줄일 수 있습니다.
속도 제한 적용
API를 매분 수백만 명이 사용하지 않는다면, 클라이언트가 일정 시간 내에 API를 호출할 수 있는 횟수를 제한하는 것이 좋습니다. 이는 봇이 초당 수백 개의 동시 요청을 보내 API가 시스템 리소스를 과도하게 소비하는 것을 방지하는 데 도움이 됩니다. 모든 웹 개발 프레임워크에는 속도 제한 미들웨어가 포함되어 있으며, 설정하는 데 1분도 걸리지 않습니다. 만약 없다면 라이브러리를 통해 쉽게 추가할 수 있습니다.
입력 유효성 검사
입력 유효성 검사는 너무나 당연한 이야기지만, 실제로는 많은 API에서 제대로 이루어지지 않고 있습니다. 입력 유효성 검사는 입력 데이터가 올바른 형식인지 확인하는 것뿐만 아니라 예기치 않은 일이 발생하지 않도록 하는 것입니다. 예를 들어, 쿼리 문자열을 제대로 검증하지 않고 통과시키면 SQL 인젝션 공격으로 데이터베이스가 삭제될 수 있습니다. 또 다른 예로는 POST 요청 크기를 확인하고, 과도하게 큰 입력이 들어왔을 때 적절한 오류 코드와 메시지를 클라이언트에 반환하는 것입니다. 너무 큰 입력을 처리하려고 하면 API가 중단될 수 있습니다.
IP 주소 필터링
B2B 서비스에 관심이 있고 특정 위치의 기업에서만 API를 사용하는 경우, API에 액세스할 수 있는 IP 주소를 제한하는 것이 좋습니다. 새로운 위치나 클라이언트가 추가될 때마다 들어오는 요청의 IP 주소를 확인해야 합니다. 이 과정에서 번거로움이 추가되지만, 다른 방법으로는 얻을 수 없는 강력한 보안을 확보할 수 있습니다.
API 보호를 강화하는 도구
API의 취약점을 스캔하고, API 보안의 1차 방어선을 구축하는 데 도움이 되는 도구는 무엇이 있을까요? 다행히도 여러 가지 도구가 있습니다. 하지만 완벽한 보안 전략은 없다는 점을 명심해야 합니다. 그럼에도 불구하고 이러한 도구는 API 보안 수준을 크게 높일 수 있으므로 사용하는 것이 좋습니다.

메타스플로잇은 웹 앱 및 API의 침투 테스트를 위한 매우 인기 있는 오픈 소스 프레임워크입니다. 다양한 매개변수로 API를 스캔하고, 존재하는 다양한 수준의 취약성에 대해 심층적인 보안 감사를 수행할 수 있습니다. 예를 들어, Metasploit을 사용한 보안 스캔을 통해 API 서명이 기본 기술과 운영 체제를 노출하는지 확인할 수 있습니다. 이를 숨기는 것만으로도 API 보안에서 중요한 성과를 달성할 수 있습니다.

Metasploit은 오픈 소스 핵심 프레임워크만으로도 충분하지만, Metasploit 기반으로 개발된 유료 제품도 고려해볼 만합니다. 유료 플랜은 프리미엄 지원을 제공하고 프레임워크를 심층적으로 사용할 수 있도록 도와주지만, 일반적으로 팀의 경험이 충분하다면 필수는 아닙니다.
AppTrana
AppTrana의 전용 API 보호 기능은 OWASP API Top 10, API 기반 DDoS 및 봇 공격, 임베디드 위협, 데이터 유출 등 광범위한 API 위협으로부터 보호하는 포괄적인 위험 기반 솔루션을 제공합니다. 테스트를 통해 지속적으로 위험 점수를 모니터링하여 보안 상태를 개선할 수 있습니다.
AppTrana의 API 보호 기능은 위험 감지, API 위협 탐지, API 긍정적 보안 정책, API별 DDoS 정책, API별 봇 모듈 및 API 검색 기능의 조합으로, 가장 포괄적인 솔루션을 보장합니다.

API 검색 기능은 문서화되지 않은 API 및 섀도우 API를 포함한 API 호출에 대한 완벽한 가시성을 제공하여 API 공격 표면을 파악하는 데 도움을 줍니다. 사용자 세부 정보, API 사용 패턴, 위협 활동, API 호출 맵 등과 같은 정보를 실시간으로 수집하여 보호 상태를 분석해 보여줍니다.
Indusface AppTrana를 사용하면 맞춤형 API별 정책을 만들어 API 남용을 실시간으로 차단할 수 있습니다.
Cloudflare
CDN 서비스를 제공하는 Cloudflare는 WAF, 속도 제한, DDoS 보호와 같은 다양한 보안 기능을 제공하여 온라인 위협으로부터 API를 보호합니다.

Invicti
Invicti는 "증명 기반 스캔"이라는 USP를 가지고 있습니다. 즉, 불규칙한 네트워크 상태나 알려지지 않은 API 동작이 보안 취약점으로 잘못 인식되는 경우가 많은데, Invicti는 보고된 모든 취약성이 오탐이 아닌지 확인하기 위해 개념 증명을 제공한다는 것입니다. 이를 통해 수동으로 재검사해야 하는 리소스를 절약할 수 있습니다. Sony, Religare, Coca-Cola, Huawei 등이 Invicti의 고객이라는 점에서 신뢰할 수 있습니다.

SoapUI Pro
SmartBear에서 개발한 SoapUI Pro는 API 테스트를 생성하고 정확한 데이터 기반 보고서를 얻는 데 직관적이고 쉬운 방법을 제공합니다. 또한 CI/CD 파이프라인과 원활하게 통합되어 새로운 코드 추가로 인해 API 보안이 손상되지 않도록 합니다. SoapUI는 Swagger, OAS 및 기타 널리 사용되는 API 표준과 호환되므로 시작 시간을 크게 단축할 수 있습니다. Microsoft, Cisco, MasterCard, Oracle 등이 SoapUI Pro를 사용하고 있으며, 연간 $659부터 시작하는 요금제도 있어서 API 보안에 유용한 도구입니다.

Okta

Okta는 개발자가 사용자 경험 향상에 집중할 수 있도록 지원하는 동시에 엔터프라이즈 데이터를 효율적으로 보호합니다. Okta는 OAuth 2.0 인증을 제공하며, 모바일 및 웹 애플리케이션용으로 설계되었습니다. 또한 타사 API 관리 서비스와도 호환됩니다. 사용자 지정 코드 없이 사용자 친화적인 콘솔을 통해 API 액세스에 대한 모든 정책을 만들고, 감사하며, 유지 관리할 수 있습니다. 추가 게이트웨이 인스턴스를 사용하여 API를 보호할 필요가 없도록 추가 유연성을 제공합니다.
Okta는 ID 기반 정책을 통해 다양한 유형의 사용자와 서비스를 제어할 수 있습니다. 사용자 프로필, 네트워크, 그룹, 동의 및 클라이언트에 따라 액세스를 정의할 수 있습니다. 내부 시스템의 동적 데이터를 사용하여 토큰을 확장하여 더 빠른 통합과 원활한 마이그레이션을 지원합니다. Okta는 다양한 마이크로 서비스 간의 액세스를 보호하여 보안에 중점을 둡니다.
결론
시중에는 오픈 소스, 무료 또는 상업용 등 다양한 종류의 API 보안 도구가 많이 있습니다. 몇 가지 도구를 사용해보고 요구 사항에 가장 적합한 도구를 선택해 보십시오.