매일 업데이트
2023-07-29 18:15 7 min

방어를 강화하기 위해 API 보안 위험을 관리하는 방법

API 보안의 중요성 및 위험 관리 방법

애플리케이션 프로그래밍 인터페이스(API) 사용량이 급증하면서, 현대 조직들은 일상 업무를 효율적으로 처리하기 위해 다양한 API에 크게 의존하게 되었습니다. 이러한 API 사용 증가는 필연적으로 API가 해커들의 주요 공격 목표가 되도록 만들었으며, 그들은 API 취약점을 악용하는 데 더욱 창의적인 방법을 모색하고 있습니다.

그렇다면 API 보안이 왜 그토록 중요한 걸까요? 그리고 API 보안 위협을 효과적으로 관리하기 위해 우리는 무엇을 할 수 있을까요? 함께 알아보겠습니다.

API 보안에 주목해야 하는 이유

API는 현대적인 모바일, SaaS, 웹 애플리케이션에서 핵심적인 역할을 합니다. 조직들은 고객, 파트너, 그리고 내부 애플리케이션 등 다양한 영역에서 API를 활용하고 있습니다. API는 개인 식별 정보(PII)와 같은 민감한 데이터와 애플리케이션 로직을 노출하기 때문에, 해커들은 API에 대한 접근 권한을 얻기 위해 끊임없이 노력합니다. API가 해킹당하면 종종 대규모 데이터 유출로 이어져 조직에 심각한 재정적 손실과 평판 하락을 초래할 수 있습니다.

Palo Alto Networks와 ESG 리서치의 보고서에 따르면, 설문 조사에 참여한 기업의 92%가 2022년에 API 관련 보안 사고를 경험했으며, 이 중 57%는 여러 번의 사고를 겪었습니다. 이는 API 공격을 예방하기 위해 API 보안을 강화하는 것이 얼마나 중요한지를 보여줍니다.

다음은 일반적인 API 보안 위협을 줄이고 중요한 데이터를 보호하는 데 도움이 되는 몇 가지 방법입니다.

1. 강력한 인증 및 권한 부여 시스템 구축

인증은 API 리소스에 대한 접근 요청이 적법한 사용자에 의해 이루어지는지를 확인하는 과정이며, 권한 부여는 해당 사용자가 요청된 리소스에 접근할 수 있는 권한을 가지고 있는지 확인하는 과정입니다.

안전한 API 인증 및 권한 부여 시스템을 구축하는 것은 API 리소스에 대한 무단 접근을 막는 가장 기본적인 방어선입니다.

다음은 API에서 흔히 사용되는 인증 방법들입니다.

API 키

이 방법에서는 클라이언트와 API 서버만이 알고 있는 고유한 API 키를 사용합니다. 클라이언트가 API 리소스에 접근하기 위한 요청을 보낼 때, 이 키가 요청에 포함되어 API 서버는 해당 요청이 합법적임을 알 수 있습니다.

API 키 인증 방식에는 취약점이 있습니다. 해커가 API 키를 손에 넣게 되면 API 리소스에 접근할 수 있게 됩니다. 따라서 해커가 API 키를 획득하지 못하도록 API 요청과 응답을 암호화하는 것이 중요합니다.

사용자 이름 및 비밀번호

사용자 이름과 비밀번호를 사용하여 API 요청을 인증하는 방법도 있습니다. 그러나 해커는 비밀번호를 해킹하기 위한 다양한 방법을 사용하며, API 클라이언트는 신뢰할 수 없는 제3자와 사용자 이름과 비밀번호를 공유할 수도 있습니다. 따라서 사용자 이름과 비밀번호 방식은 최적의 보안을 제공하지 못합니다.

상호 TLS (mTLS)

상호 TLS 인증 방식에서는 API 엔드포인트와 클라이언트 모두에 TLS 인증서가 있어야 합니다. 이 인증서를 사용하여 서로를 인증합니다. TLS 인증서를 관리하고 유지하는 것이 복잡하기 때문에 이 방법은 API 요청 인증에 널리 사용되지는 않습니다.

JWT (JSON 웹 토큰) 인증

이 인증 방식에서는 JSON 웹 토큰을 사용하여 API 클라이언트를 인증하고 권한을 부여합니다. 클라이언트가 사용자 이름, 비밀번호 등과 같은 로그인 자격 증명을 포함한 로그인 요청을 보내면, API는 암호화된 JSON 웹 토큰을 생성하여 클라이언트에게 전송합니다.

그 후 클라이언트는 후속 API 요청에서 이 JSON 웹 토큰을 사용하여 자신을 인증하고 권한을 부여받습니다.

OpenID Connect를 활용한 OAuth 2.0

OAuth는 사용자가 비밀번호를 공유하지 않고도 자신을 인증할 수 있도록 인증 서비스를 제공합니다. OAuth 2.0은 토큰 기반으로 작동하며, 종종 OpenID Connect 인증 메커니즘과 결합됩니다. 이 API 인증 및 권한 부여 방식은 API를 안전하게 보호하는 데 널리 사용됩니다.

2. 역할 기반 접근 제어 (RBAC) 적용

최소 권한 원칙에 따라, RBAC(역할 기반 접근 제어)는 사용자의 역할에 따라 리소스에 대한 접근 수준을 결정합니다.

RBAC를 도입하면, 인증된 사용자만이 자신에게 할당된 역할에 따라 데이터에 접근할 수 있습니다. 모든 사용자가 모든 API 리소스에 무제한으로 접근할 수 없도록 제한하는 것이 중요합니다.

3. 모든 요청 및 응답 암호화

API 트래픽에는 사용자 자격 증명 및 민감한 데이터와 같은 정보가 포함되는 경우가 많습니다. 모든 네트워크 트래픽, 특히 수신 API 요청과 응답이 SSL/TLS 암호화를 사용하여 암호화되어 있는지 확인해야 합니다. 데이터 암호화는 해커가 사용자 자격 증명 또는 기타 중요한 데이터를 훔치는 것을 방지합니다.

4. API 게이트웨이 활용

API 게이트웨이를 사용하지 않으면, API 호출 처리 방법을 앱에 알려주기 위해 앱 내에 코드를 추가해야 합니다. 그러나 이는 개발 작업을 증가시키고 API 보안 위험을 높일 수 있습니다.

API 게이트웨이를 사용하면, 외부 시스템에서 이루어지는 API 호출을 애플리케이션 프로그래밍 인터페이스 외부의 중앙 게이트웨이를 통해 관리할 수 있습니다.

API 게이트웨이는 API 관리를 간소화하고, API 보안을 강화하며, 확장성과 가용성을 향상시키는 데 도움이 됩니다.

일반적으로 사용되는 API 게이트웨이에는 Amazon API Gateway, Azure API Gateway, Oracle API Gateway, Kong Gateway 등이 있습니다.

5. 속도 제한 적용

API 속도 제한은 클라이언트가 API에 대해 수행할 수 있는 API 요청 또는 호출 수를 제한하는 방법입니다. 속도 제한을 적용하면 DDoS(분산 서비스 거부) 공격을 방지할 수 있습니다.

API 요청을 초, 분, 시간, 일 또는 월별로 제한할 수 있으며, 다양한 방식으로 구현할 수 있습니다.

Hard Stop을 적용하면 클라이언트가 제한에 도달했을 때 오류 429가 발생합니다. Soft Stop은 클라이언트가 제한에 도달한 후에도 짧은 유예 기간 동안 API 호출을 허용합니다. Throttled Stop은 클라이언트가 제한에 도달한 후에도 더 느린 속도로 API 요청을 할 수 있도록 허용합니다.

API 속도 제한은 API 보안 위협을 줄이고 백엔드 비용을 절감하는 데 도움이 됩니다.

6. 데이터 노출 최소화

API 요청에 대한 응답이 필요한 데이터 이상을 반환하지 않도록 해야 합니다. 예를 들어, API 호출이 우편번호를 요청하는 경우, 전체 주소가 아닌 우편번호만 제공해야 합니다.

API 응답에 표시되는 데이터 양을 최소화하면 응답 시간도 단축할 수 있습니다.

7. 파라미터 유효성 검사

API 요청은 다양한 입력 파라미터를 필요로 합니다. 모든 API 요청에 대해, API 루틴은 각 파라미터의 존재 여부와 내용을 확인해야 합니다. 이는 API의 무결성을 보호하고 악의적이거나 잘못된 형식의 입력이 처리되지 않도록 하는 데 필수적입니다.

파라미터 유효성 검사를 절대 생략해서는 안 됩니다.

8. API 활동 모니터링

API 활동을 모니터링하고 로깅할 계획을 세워야 합니다. 이렇게 하면 위협 행위자의 의심스러운 활동을 API 서버나 클라이언트에 해를 입히기 전에 감지할 수 있습니다. 모든 API 호출과 응답을 기록하는 것부터 시작해야 합니다.

Sematext, Dotcom-Monitor, Checkly와 같은 다양한 도구를 사용하여 API를 실시간으로 모니터링할 수 있습니다.

9. 정기적인 API 보안 점검

API 보안 테스트를 API 개발 프로세스의 일부로만 국한하지 말고, 라이브 API의 보안을 일관되게 점검해야 합니다. 이를 통해 보안 팀은 API 구현 과정에서 개발 팀이 놓쳤을 수 있는 잘못된 보안 설정과 API 취약점을 식별할 수 있습니다.

또한 보안 팀은 모든 API 보안 사고에 대응하기 위한 사고 대응 계획을 수립해야 합니다.

API 보안 위험 관리로 귀중한 데이터 보호

조직이 디지털 전환 과정에서 API를 점점 더 많이 활용함에 따라, 공격자들은 끊임없이 악용할 API 취약점을 찾고 있습니다. API 접근 권한을 얻으면 민감한 데이터가 유출될 수 있습니다. 따라서 API 보안 위험을 최소화하려면 API 보안을 강화하는 것이 중요합니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.