
API Gateway에서 인증 및 인가 처리 하기
API Gateway는 다양한 백엔드 서비스와의 연결을 중개하며, 시스템의 중요한 역할을 합니다.
특히, 보안 측면에서는 사용자 인증과 인가처리에 중요한 책임을 지고 있습니다.
이 두 가지 개념은 웹 애플리케이션이나 모바일 앱이 외부와 연결되는 방식에서 매우 중요한 부분을 차지합니다. API Gateway에서 인증과 인가는 어떻게 처리되는지, 이를 위한 여러 가지 패턴들을 포스팅하였습니다.
우리가 웹사이트에 로그인할 때, 가장 먼저 하는 일은 바로 인증입니다.
"내가 정말 이 사람이 맞다"는 걸 시스템에 증명하는 거라 생각합니다.
API Gateway에서도 마찬가지로, 클라이언트의 요청이 들어올 때마다 이 요청이 적법한지 확인합니다.
이를 위해 여러 가지 인증 방법이 있습니다.
가장 간단한 인증 방식으로, 사용자 이름과 비밀번호를 통해 인증을 진행합니다.
예를 들어, 웹사이트에서 로그인을 할 때 입력하는 아이디와 비밀번호처럼 말이죠.
요즘 가장 많이 쓰이는 방식은 JWT 입니다.
이 방식에서는 로그인 후 사용자에게 인증 토큰을 발급하고, 이후 요청 시마다 그 토큰을 전달받아 인증을 처리합니다.
"한 번 로그인하면 계속 로그인된 상태를 유지할 수 있다"는 점에서 사용자 경험이 개선됩니다.
인증이 "내가 누구인지 확인하는 것"이라면, 인가는 "내가 무엇을 할 수 있는지"를 결정하는 과정입니다.
예를 들어, 한 회사에서 관리자만 특정 데이터를 수정할 수 있다면, 이는 인가를 통해 제어되는 부분입니다.
API Gateway는 인증된 사용자가 어떤 작업을 할 수 있는지 결정하고, 역할에 맞는 접근을 허용합니다.
역할 기반 접근 제어(RBAC, Role-Based Access Control)
사용자의 역할에 따라 접근 권한을 분배합니다.
예를 들어, 관리자는 모든 데이터를 수정할 수 있지만, 일반 사용자는 읽기만 가능하도록 설정하는 방식입니다.
속성 기반 접근 제어(ABAC, Attribute-Based Access Control)
사용자의 속성에 따라 접근을 제어하는 방식입니다.
예를 들어, 사용자의 위치나 시간대에 따라 다른 서비스를 제공할 수 있습니다.
정책 기반 접근 제어(PBAC, Policy-Based Access Control)
보다 복잡한 규칙을 기반으로, 사용자의 요청에 대해 정책을 적용하여 접근을 제어합니다.
예를 들어, 특정 지역에 있는 사용자만 사용할 수 있는 기능을 설정하는 방식입니다.
API Gateway에서 인증 및 인가는 다양한 패턴으로 구현할 수 있습니다.
어떤 방식을 사용할지는 시스템의 요구 사항에 따라 다르지만, 대표적인 패턴을 살펴보겠습니다.
직접 인증
API Gateway가 직접 사용자 인증을 처리합니다.
사용자가 요청할 때마다 API Gateway가 인증을 수행하고, 그 결과에 따라 요청을 전달하거나 차단합니다.
백엔드로 토큰 전달
인증 토큰을 백엔드 서비스에 전달하고, 백엔드가 인증을 처리하는 방식입니다.
이는 인증 처리의 부담을 백엔드로 넘기는 방식이라 확장성이 좋습니다.
외부 인증 서비스 사용
OAuth나 OpenID Connect 같은 외부 인증 서비스를 API Gateway에 통합하여 인증을 처리하는 방식입니다. Google, Facebook, GitHub 등의 서비스가 이에 해당합니다.
API 키 관리
API 키를 발급하여, 이를 통해 요청을 인증합니다.
이 방식은 간단하게 인증을 처리할 수 있지만, 보안상 주의가 필요합니다.
API Gateway에서의 인증과 인가 처리는 보안을 강화하고, 시스템을 유연하게 확장할 수 있는 방법을 제공합니다.
또한, 이를 통해 관리와 유지보수가 효율적으로 이루어지며, 사용자 경험이 개선됩니다.
보안 강화
제대로 된 인증과 인가 없이 API가 개방된다면, 악의적인 공격자에게 노출될 위험이 커집니다.
API Gateway는 이를 막아주는 중요한 방어막 역할을 합니다.
확장성 및 유연성 제공
인증 및 인가 처리를 API Gateway에서 집중 관리하면, 후속 서비스들의 변경 없이도 새로운 인증 방식을 추가하거나 수정할 수 있습니다.
효율적인 관리 및 유지보수
인증과 인가 처리를 일관되게 관리함으로써, 시스템의 일관성 유지가 용이하고, 문제가 발생했을 때 빠르게 대응할 수 있습니다.
사용자 경험 개선
적절한 인증과 인가는 사용자가 불필요한 장애를 겪지 않도록 도와줍니다.
예를 들어, JWT 토큰을 통해 한 번 로그인하면 계속 로그인 상태를 유지할 수 있어, 편리한 사용자 경험을 제공합니다.
규정 준수 및 표준화 지원
다양한 산업의 규제나 표준에 맞춰 시스템을 운영할 수 있게 돕습니다.
예를 들어, 개인정보 보호법에 따른 인증 절차를 API Gateway에서 처리할 수 있습니다.
API Gateway에서의 인증과 인가는 단순한 보안 기능을 넘어, 시스템 전체의 효율성과 확장성, 그리고 사용자 경험을 향상시키는 중요한 요소입니다.
다양한 인증 및 인가 패턴을 잘 활용하면, 보다 안전하고 유연한 API 서비스를 제공할 수 있습니다.
시스템을 설계할 때 이 부분을 꼭 고려하고, 보안과 성능을 동시에 고려하는 것이 필요합니다.