InfraPlatform

오픈소스 API 플랫폼 - Apache APISIX - 인증(Authentication)과 권한 관리

IT오이시이 2024. 12. 7. 05:00
728x90

 

오픈소스 API 플랫폼 - Apache APISIX

- 오픈 소스 API 관리 플랫폼 10종 비교
-  Apache APISIX 특징과 설치
- Apache APISIX - 아키텍처

Apache APISIX - 인증(Authentication)
- APISIX - 플러그인(Plugin)의 개념

- APISIX - 네트워크 포트 용도

- APISIX - 모니터링 및 성능 관리 도구
 

 * https://apisix.apache.org/


 

 

 

오픈소스 API 플랫폼 - Apache APISIX - 인증(Authentication)과 권한 관리
 
 
 

 
Apache APISIX는 고성능 오픈소스 API 게이트웨이로, 다양한 인증 및 권한 관리 기능을 제공합니다. 이를 통해 API의 보안을 강화하고, 사용자 접근을 효과적으로 제어할 수 있습니다.

 

인증(Authentication)

Apache APISIX는 여러 가지 인증 방법을 지원합니다:

  1. Key Authentication: API 키를 사용하여 요청을 인증합니다. 사용자는 요청 헤더나 쿼리 문자열에 API 키를 추가하여 인증을 수행합니다.
  2. Basic Authentication: 사용자 이름과 비밀번호를 사용하여 요청을 인증합니다. 사용자는 요청 헤더에 인증 정보를 추가합니다.
  3. JWT Authentication: JSON Web Token(JWT)을 사용하여 요청을 인증합니다. 사용자는 요청 헤더, 쿼리 문자열, 또는 쿠키에 JWT를 추가하여 인증을 수행합니다.
  4. OpenID Connect: OpenID Connect 프로토콜을 사용하여 외부 인증 시스템과 연동할 수 있습니다.
  5. Wolf RBAC: 역할 기반 접근 제어(RBAC)를 통해 사용자 역할에 따라 접근 권한을 제어합니다

 

 

권한 관리(Authorization)

Apache APISIX는 다양한 권한 관리 기능을 제공하여 API 접근을 효과적으로 제어할 수 있습니다:

  1. Admin API: Admin API를 통해 Apache APISIX 인스턴스를 제어할 수 있습니다. Admin API는 기본적으로 포트 9180에서 동작하며, API 호출 시 X-API-KEY 헤더를 사용하여 인증합니다.
  2. Role-Based Access Control (RBAC): 역할 기반 접근 제어를 통해 사용자 역할에 따라 API 접근 권한을 설정할 수 있습니다.
  3. IP Allowlist: 특정 IP 주소만 Admin API에 접근할 수 있도록 허용하는 IP 허용 목록을 설정할 수 있습니다

 


 

- APISIX의 인증(Authentication)과 권한 관리


1. API 인증(Authentication)
 APISIX는 다양한 인증 메커니즘을 지원하여 API 요청을 보호합니다.
 

API 주요 인증 방식

* JWT (JSON Web Token):
  JWT 플러그인을 사용하여 토큰 기반 인증을 구현할 수 있습니다. 클라이언트는 요청 헤더에 JWT를 포함시켜 인증을 수행합니다.

* Basic Authentication:
  기본 인증 플러그인을 사용하여 사용자 이름과 비밀번호를 기반으로 인증을 수행할 수 있습니다.

* OAuth2:
  OAuth2 플러그인을 통해 OAuth2 인증을 지원합니다. 이를 통해 다양한 OAuth2 제공자와 통합할 수 있습니다.

* Key Authentication:
   API 키를 사용하여 인증을 수행할 수 있습니다. 클라이언트는 요청 헤더에 API 키를 포함시켜 인증합니다.
 
 


2. API 권한 관리(Authorization)
  APISIX는 권한 관리를 통해 특정 사용자나 그룹에 대해 API 접근 권한을 제어할 수 있습니다.
 
주요 권한 관리 방법

* RBAC (Role-Based Access Control):
  역할 기반 접근 제어를 통해 사용자에게 특정 역할을 할당하고, 역할에 따라 접근 권한을 부여할 수 있습니다.
  예를 들어, 관리자 역할은 모든 API에 접근할 수 있지만, 일반 사용자 역할은 특정 API에만 접근할 수 있습니다.

* ACL (Access Control List):
  ACL 플러그인을 사용하여 IP 주소나 CIDR 블록을 기반으로 접근을 제어할 수 있습니다.
  이를 통해 특정 IP 주소에서만 API에 접근할 수 있도록 설정할 수 있습니다.
* Casbin:
  Casbin 플러그인을 사용하여 다양한 접근 제어 모델을 구현할 수 있습니다.
  Casbin은 ACL, RBAC, ABAC와 같은 접근 제어 모델을 지원합니다.
 

JWT 인증 토큰 예시

{
    "uri": "/secure-api",
    "plugins": {
        "jwt-auth": {
            "key": "your-secret-key"
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    }
}

 
 

casbin 플러그인 설정

이 설정을 통해 /admin-api 경로로 들어오는 요청은 Casbin을 사용하여 인증 및 권한 관리가 수행됩니다.

{
    "uri": "/admin-api",
    "plugins": {
        "authz-casbin": {
            "model_path": "/path/to/model.conf",
            "policy_path": "/path/to/policy.csv",
            "username": "username"
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    }
}

 
 

728x90
반응형