API Gateway에서 인증과 인가 보안, 확장성, 그리고 효율적 처리하기

궁금하면 500원·2025년 2월 10일

MSA&아키텍처

목록 보기
37/45

API Gateway에서 인증 및 인가 처리 하기

API Gateway는 다양한 백엔드 서비스와의 연결을 중개하며, 시스템의 중요한 역할을 합니다.
특히, 보안 측면에서는 사용자 인증과 인가처리에 중요한 책임을 지고 있습니다.
이 두 가지 개념은 웹 애플리케이션이나 모바일 앱이 외부와 연결되는 방식에서 매우 중요한 부분을 차지합니다. API Gateway에서 인증과 인가는 어떻게 처리되는지, 이를 위한 여러 가지 패턴들을 포스팅하였습니다.

1. 인증(Authentication): 사용자의 신원을 확인하다

우리가 웹사이트에 로그인할 때, 가장 먼저 하는 일은 바로 인증입니다.
"내가 정말 이 사람이 맞다"는 걸 시스템에 증명하는 거라 생각합니다.
API Gateway에서도 마찬가지로, 클라이언트의 요청이 들어올 때마다 이 요청이 적법한지 확인합니다.
이를 위해 여러 가지 인증 방법이 있습니다.

  • 기본 인증(Basic Authentication)

    가장 간단한 인증 방식으로, 사용자 이름과 비밀번호를 통해 인증을 진행합니다.
    예를 들어, 웹사이트에서 로그인을 할 때 입력하는 아이디와 비밀번호처럼 말이죠.

  • 토큰 기반 인증(Token-based Authentication)

요즘 가장 많이 쓰이는 방식은 JWT 입니다.
이 방식에서는 로그인 후 사용자에게 인증 토큰을 발급하고, 이후 요청 시마다 그 토큰을 전달받아 인증을 처리합니다.
"한 번 로그인하면 계속 로그인된 상태를 유지할 수 있다"는 점에서 사용자 경험이 개선됩니다.

  • OAuth와 OpenID Connect
    제3자가 인증을 담당하는 방식입니다.
    예를 들어, Google이나 Facebook 계정을 통해 타 사이트에 로그인할 때 사용되는 방식입니다.
    이렇게 외부 인증 제공자를 활용하는 이유는, 사용자가 매번 새로운 계정을 만들지 않고도 다른 서비스와의 연동을 쉽게 할 수 있기 때문입니다.

2. 인가(Authorization): 무엇을 할 수 있는지 정하다

인증이 "내가 누구인지 확인하는 것"이라면, 인가는 "내가 무엇을 할 수 있는지"를 결정하는 과정입니다.
예를 들어, 한 회사에서 관리자만 특정 데이터를 수정할 수 있다면, 이는 인가를 통해 제어되는 부분입니다.
API Gateway는 인증된 사용자가 어떤 작업을 할 수 있는지 결정하고, 역할에 맞는 접근을 허용합니다.

  • 역할 기반 접근 제어(RBAC, Role-Based Access Control)
    사용자의 역할에 따라 접근 권한을 분배합니다.
    예를 들어, 관리자는 모든 데이터를 수정할 수 있지만, 일반 사용자는 읽기만 가능하도록 설정하는 방식입니다.

  • 속성 기반 접근 제어(ABAC, Attribute-Based Access Control)
    사용자의 속성에 따라 접근을 제어하는 방식입니다.
    예를 들어, 사용자의 위치나 시간대에 따라 다른 서비스를 제공할 수 있습니다.

  • 정책 기반 접근 제어(PBAC, Policy-Based Access Control)
    보다 복잡한 규칙을 기반으로, 사용자의 요청에 대해 정책을 적용하여 접근을 제어합니다.
    예를 들어, 특정 지역에 있는 사용자만 사용할 수 있는 기능을 설정하는 방식입니다.

3.API Gateway에서 인증 및 인가 처리 방법

API Gateway에서 인증 및 인가는 다양한 패턴으로 구현할 수 있습니다.
어떤 방식을 사용할지는 시스템의 요구 사항에 따라 다르지만, 대표적인 패턴을 살펴보겠습니다.

  • 직접 인증
    API Gateway가 직접 사용자 인증을 처리합니다.
    사용자가 요청할 때마다 API Gateway가 인증을 수행하고, 그 결과에 따라 요청을 전달하거나 차단합니다.

  • 백엔드로 토큰 전달
    인증 토큰을 백엔드 서비스에 전달하고, 백엔드가 인증을 처리하는 방식입니다.
    이는 인증 처리의 부담을 백엔드로 넘기는 방식이라 확장성이 좋습니다.

  • 외부 인증 서비스 사용
    OAuth나 OpenID Connect 같은 외부 인증 서비스를 API Gateway에 통합하여 인증을 처리하는 방식입니다. Google, Facebook, GitHub 등의 서비스가 이에 해당합니다.

  • API 키 관리
    API 키를 발급하여, 이를 통해 요청을 인증합니다.
    이 방식은 간단하게 인증을 처리할 수 있지만, 보안상 주의가 필요합니다.

4. API Gateway에서 인증 및 인가 처리의 중요성

API Gateway에서의 인증과 인가 처리는 보안을 강화하고, 시스템을 유연하게 확장할 수 있는 방법을 제공합니다.
또한, 이를 통해 관리와 유지보수가 효율적으로 이루어지며, 사용자 경험이 개선됩니다.

  • 보안 강화
    제대로 된 인증과 인가 없이 API가 개방된다면, 악의적인 공격자에게 노출될 위험이 커집니다.
    API Gateway는 이를 막아주는 중요한 방어막 역할을 합니다.

  • 확장성 및 유연성 제공
    인증 및 인가 처리를 API Gateway에서 집중 관리하면, 후속 서비스들의 변경 없이도 새로운 인증 방식을 추가하거나 수정할 수 있습니다.

  • 효율적인 관리 및 유지보수
    인증과 인가 처리를 일관되게 관리함으로써, 시스템의 일관성 유지가 용이하고, 문제가 발생했을 때 빠르게 대응할 수 있습니다.

  • 사용자 경험 개선
    적절한 인증과 인가는 사용자가 불필요한 장애를 겪지 않도록 도와줍니다.
    예를 들어, JWT 토큰을 통해 한 번 로그인하면 계속 로그인 상태를 유지할 수 있어, 편리한 사용자 경험을 제공합니다.

  • 규정 준수 및 표준화 지원
    다양한 산업의 규제나 표준에 맞춰 시스템을 운영할 수 있게 돕습니다.
    예를 들어, 개인정보 보호법에 따른 인증 절차를 API Gateway에서 처리할 수 있습니다.

마무리

API Gateway에서의 인증과 인가는 단순한 보안 기능을 넘어, 시스템 전체의 효율성과 확장성, 그리고 사용자 경험을 향상시키는 중요한 요소입니다.
다양한 인증 및 인가 패턴을 잘 활용하면, 보다 안전하고 유연한 API 서비스를 제공할 수 있습니다.
시스템을 설계할 때 이 부분을 꼭 고려하고, 보안과 성능을 동시에 고려하는 것이 필요합니다.

profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글