Architecture

MSA에서 인증/인가 패턴

TedDev 2024. 12. 21. 22:38
728x90

마이크로서비스 아키텍처에서 인증(Authentication)과 인가(Authorization)는 분산된 시스템 구조에서 중요한 역할을 한다. 각각의 마이크로서비스가 독립적으로 작동하기 때문에 인증 및 인가 메커니즘을 효율적으로 설계하는 것이 필수적이다.

 

1. 인증(Authentication) 패턴

인증은 사용자의 신원을 확인하는 과정이다.

1.1 토큰 기반 인증 (Token-Based Authentication)

  • JWT (JSON Web Token)
    • 클라이언트가 인증 서버에 로그인하면 JWT를 발급받는다.
    • 클라이언트는 이후 요청에 이 토큰을 포함하며 마이크로서비스는 이 토큰을 검증하여 사용자의 신원을 확인한다.
    • 장점 : 무상태(stateless)로 작동하므로 확장성이 좋다.
    • 단점 : 토큰이 클라이언트에 저장되기 때문에 토큰 탈취 시 보안 문제가 발생할 수 있다.

1.2 SSO (Single Sign-On)

  • 사용자가 한 번 인증하면 동일한 인증 정보로 여러 마이크로서비스에 접근 가능하다.
  • OAuth 2.0OpenID Connect (OIDC) 프로토콜이 일반적으로 사용된다.

1.3 API Gateway에서의 인증

  • API Gateway가 모든 요청을 중앙 집중적으로 관리하며 사용자를 인증한다.
  • 이후 인증된 요청만 각 마이크로서비스로 전달된다.
  • 장점 : 각 서비스에서 인증 로직을 구현할 필요가 없음.
  • 단점 : Gateway가 성능 병목점이 될 수 있음.

 

2. 인가(Authorization) 패턴

인가란 인증된 사용자가 특정 자원에 접근할 수 있는 권한이 있는지를 확인하는 과정이다.

2.1 Role-Based Access Control (RBAC)

  • 사용자의 역할(Role)에 기반하여 권한을 부여한다.
  • 예) Admin, User, Manager 등의 역할에 따라 서로 다른 권한을 부여.

2.2 Attribute-Based Access Control (ABAC)

  • 역할뿐만 아니라 사용자 속성(Attribute), 자원 속성, 환경(context) 등을 조합하여 접근 권한을 결정한다.
  • 예) 근무 시간이 9시~18시인 경우에만 특정 데이터에 접근 가능.

2.3 Policy-Based Access Control (PBAC)

  • 중앙화된 정책(Policy)에 따라 권한을 관리한다.
  • 정책 엔진(예. OPA(Open Policy Agent))을 활용하여 규칙을 정의하고 실행.

2.4 서비스별 인가

  • 각 마이크로서비스가 자체적으로 인가를 처리한다.
  • 장점 : 서비스별로 세밀한 권한 제어 가능.
  • 단점 : 권한 관리가 분산되면서 복잡성이 증가.

2.5 API Gateway에서의 인가

  • 인증뿐만 아니라, 인가도 API Gateway에서 처리할 수 있다.
  • 장점 : 중앙 집중적인 접근 권한 관리.
  • 단점 : 복잡한 권한 요구사항을 처리하기 어려울 수 있음.

 

3. 추가 고려 사항

  • 보안 강화
    • HTTPS를 사용하여 데이터 전송 암호화.
    • OAuth 2.0과 같은 프로토콜을 활용해 토큰의 만료 기간과 재발급 프로세스를 설계.
  • 성능 최적화
    • Redis와 같은 캐시를 활용해 토큰 검증 속도 개선.
  • 로그 및 모니터링
    • 인증 및 인가 요청의 성공/실패를 로깅하고 이상 행동 탐지.

 

마이크로서비스에서 인증 및 인가를 설계할 때는 시스템의 확장성과 보안을 균형 있게 고려해야 한다. 대규모 시스템에서는 API Gateway와 분산된 권한 관리 전략을 결합하는 방식을 추천한다.

반응형