실시간 API 보안의 중요성

점점 더 많은 기업들은 디지털 변혁과 고객의 기대에 의해, 다양한 종류의 최종 사용자와 경험에 대한 요구를 충족시키기 위해 창의적인 방법을 사용하고 있습니다. 원격 의료부터 온라인 뱅킹까지, 실시간 API 는 디지털 비즈니스를 구축하는 기반이며, 앱 개발자들이 고객의 요구에 부합하는 앱을 만들 수 있도록 합니다.

디지털 세계에서 앱의 급속한 발전으로 인해 API가 즉시 제공되는 앱이 급증하면서 API 위반을 신속하게 감지하고 보호해야 할 필요성이 중요해졌습니다.

API는 모던 애플리케이션의 기반이 됩니다. API는 Google 지도를 라이드 쉐어 앱에 포함시키거나 웹 페이지에 YouTube 동영상을 삽입하는 등, 개발자가 다른 소프트웨어 구성 요소에서 가치 있는 정보를 얻어 애플리케이션에 통합할 수 있게 해줍니다.
API는 로그인부터 피드백을 남기는 단계까지 사용자의 모든 상호작용에서 중요한 구성 요소입니다. 5G의 등장은 고속(1Gbps)을 약속하기 때문에 오늘날의 참을성이 없는 사용자들은 앱의 성능이 좋지 않을 때 더욱 덜 참을성 있어질 것입니다.
30ms 이하로 API 호출을 처리하는 것을 ‘실시간 API 응답성’으로 정의하며, 이를 달성하지 못하는 API 주도적인 비즈니스는 디지털 시장에서 실패할 가능성이 높으며 수익 손실은 디지털 전환 노력에 심각한 악영향을 줄 수 있습니다.

목차

1. 실시간 API 보안이 중요한 이유는 무엇일까요?
2. 실시간 API 보호 방법
 2-1. NGINX App Protect를 통한 실시간 API 보호
 2-2. 봇 보호
 2-3. API Gateway를 통한 실시간 API 호출 정책
 2-4. 인증 및 승인
 2-5. 실시간 API 호출에 대한 Rate Limits
 2-6. 입력 유효성 검사
3. 결론

1. 실시간 API 보안이 중요한 이유는 무엇일까요?

API는 보안 공격의 주요 대상 중 하나로 작용하는 다양한 요인들의 조합으로 인해 취약합니다.
가장 큰 문제 중 하나는 적절한 접근 권한 설정 실패입니다. 직접적인 사용자 접근을 위해 고안된 것이 아니기 때문에, API는 종종 애플리케이션 환경 내의 모든 데이터에 대한 액세스 권한을 부여받습니다.
그리고 액세스는 최초 요청을 수행하는 사용자에게 특정 권한을 부여하고 해당 API에서만 해당 권한을 상속하도록 함으로써 제어됩니다.
이는 사용자 인증 프로세스를 우회하고 API를 통해 다운스트림 앱에 직접 액세스하는 공격자가 존재하는 경우에는 문제가 됩니다. API가 제한 없이 액세스 권한을 가지기 때문에 공격자는 모든 것을 볼 수 있게 됩니다.

API 호출은 기본 HTTP 웹 요청과 마찬가지로 URI, 메서드, 헤더 및 기타 매개변수를 포함합니다.
이러한 모든 요소들은 공격에 이용될 수 있습니다. 불행하게도, 대부분의 일반적인 웹 공격, 예를 들면 인젝션(injection), 자격 증명(크리덴셜) 무차별 대입, 매개변수 조작 및 세션 스누핑 등은 API에서도 충분히 작동합니다. 공격자들에게는 API가 쉬운 공격 대상입니다.

2. 실시간 API 보호 방법

API의 모든 단계에서 보안을 구축하는 것이 중요합니다. 설계 및 개발 단계에서 엔지니어는 WAF, 봇 보호, API 관리 솔루션, API 및 기타 도구와 통합하는 데 필요한 논리를 구축해야합니다. 이러한 기술을 배포하여 개발, 테스트 및 운영 환경에서 API를 보호해야합니다.

다음 섹션에서 설명하는 대로 전달 중 API를 보호하는 기술을 배치해야 합니다.

2-1. NGINX App Protect를 통한 실시간 API 보호

WAF는 애플리케이션 코드의 취약점을 이용하여 정보를 도용하거나 악성 코드를 실행하는 것을 허용하지 않는, 실시간 API에 대해 부적절한 요청을 인식합니다. WAF가 API 보호에 있어서 최소한 OWASP API Security Top 10과 같은 가장 일반적인 공격 유형에 대해 보호해야 합니다.

NGINX App Protect는 F5의 Advanced WAF 제품을 기반으로 합니다.
CI/CD 및 DevOps 워크플로에 최적화되어 XML, JSON, 텍스트 및 HTML Request 및 응답 페이로드 (Payloads)를 지원합니다.
파싱 및 구조 강제 적용, 공격 시그니처, 메소드 강제 적용 및 경로 강제 적용을 통해 advanced API protection profiles을 제공합니다.

2-2. 악성 봇 탐지 및 보호

HTTP API는 봇과 같은 악성 또는 원치 않는 자동화 기반 트래픽의 대상이 될 수 있습니다.
F5의 일부인 Shape는 API Defense를 솔루션으로 제공하여 온라인 사기 및 애플리케이션 남용을 발생 시키는 봇 및 기타 형태의 자동화된 공격으로부터 HTTP 기반 API를 보호하기 위한 가시성, 제한 및 완화 옵션을 제공합니다.

2-3. API Gateway를 통한 실시간 API 호출 정책

API Gateway는 NGINX Plus와 같은 솔루션으로, 다음 섹션에서 설명할 세 가지 주요 기능을 수행하여 API 호출을 보호합니다.

2-4. 인증 및 승인

API 인증은 인증 요청자가 자신이 주장하는 대로 누구인지 증명할 수 있는 것만 허용하는 것입니다.

API 인증은 API의 주요 기능이 아니므로 애플리케이션 코드 외부에서 수행하는 것이 좋습니다.
이렇게 하면 API 개발자가 자체 인증 코드를 작성하지 않아도 되며 모든 API의 인증을 중앙에서 관리할 수 있으며 인증 요구 사항도 유연하게 만들 수 있습니다.
예를 들어 스포츠 웹 사이트에서 게임 점수를 반환하는 API에 대해 인증 없이 사용을 허용할 수 있지만 콘텐츠를 편집하는 API를 사용하는 사람은 반드시 인증 되어야 합니다.

이제 인증과 권한 부여의 차이점을 살펴보겠습니다.
인증은 사용자 신원을 확인하는 과정입니다. 권한 부여는 이후에 일어나며 특정 사용자가 수행할 수 있는 작업을 결정하고 해당 정보를 서버에 전달하는 것입니다.

2-5. 실시간 API 호출에 대한 Rate Limits

Rete Limits은 특정 클라이언트가 API 호출을 얼마나 자주 수행할 수 있는지 제어합니다.
이는 두 가지 주요 목적을 가지고 있습니다.
첫째, 백엔드 서비스가 과부화 상태가 되지 않도록 보호하는 것이고, 둘째는 클라이언트의 공정한 사용을 보장하는 것입니다.
예를 들어, Rate Limit의 예로 분당 100개의 트랜잭션을 허용하는 것이 있습니다.
Rate Limit은 개별 사용자 이름, 특정 IP 주소 또는 범위, 또는 모든 사용자에게 적용될 수 있습니다.

2-6. 입력 유효성 검사

입력 유효성 검사는 사용자나 애플리케이션에서 제공한 입력 값이 올바른지 확인하는 것입니다.
이는 올바른 유형의 문자 (숫자, 문자, 구두점)로 구성되어 있고, 올바른 크기이고, 사전에 정의된 일련의 허용 가능한 값 중 하나인지, 다른 값을 제공하는 값과 일치하는지 등을 확인하는 것을 의미합니다.
예를 들어, 우편 번호가 제공된 주소와 일치하는지 또는 생년월일이 미래에 있는 날짜가 아닌지를 확인할 수 있습니다.
입력 유효성 검사는 부적절하게 구성된 데이터가 정보 시스템에 들어가서 그 무결성을 위협하는 것을 방지하는 중요한 방법입니다.
또한 악의적인 사용자를 감지하고 추가적인 요청을 차단하는 중요한 방법이기도 합니다.

3. 결론

API는 오늘날의 비즈니스 환경에서 성공하기 위해 필요한 민첩성과 속도를 제공하기 위한 전략적 필수품입니다.
그러나 보안 비용의 침해 비용이 증가함에 따라, 조직은 API를 통해 데이터를 노출하는 것이 수익과 손익에 영향을 미치는 보안 위험을 만들지 않도록 보장하고자 합니다.

NGINX STORE 뉴스레터 및 최신 소식 구독하기

* indicates required