본문 바로가기

MicroService Architecture/API Gateway

Kong Functional Requirements

1. API Management

 

 - API 게이트웨이는 정책 적용 메시지 처리 기능의 기초를 제공

 - 사용 가능한 게이트웨이는 REST API에 대해서만 좁게 초점을 맞춘 기능부터 REST API, SOAP API, 응용 프로그램 메시징, 파일 전송, 보안 통합 모바일 지원에 대한 매우 광범위한 기능에 이르기까지 다양하다

 - 사용독립 실행형 또는 API 관리 솔루션의 일부로 게이트웨이는 신뢰 지원 보안(예: 인증, 권한 부여) 공격 보호 보안(예: 서비스 거부 또는 잘못된 요청 방지)에 중요한 인프라를 제공한다.

 

Kong은 다음과 같이 설명된 일반적인 API 관리 기능을 가볍고 확장 가능하며 유연하게 높은 Throughput 관리 계층으로 통합한다.

Kong Enterprise는 아래와 같이 API Gateway, Developer Port 및 Analytics를 포함한다.

 

 

2. 지원 프로토콜 및 포맷

 

 ㅁ 지원 프로토콜: REST, gRPC, GraphQL 및 데이터 스트리밍 서비스 전반(Kafka 등)에 걸쳐 지원

 

3. Plugin Management

 

 ㅁ Kong Enterprise는 Kong Manager Plugins interface 제공

 ㅁ 메뉴 버튼의 클릭만으로 모든 엔터프라이즈 플러그인의 추가가 가능

 ㅁ 사용자 지정 플러그인을 추가하여 처리 기능의 확장성을 허용

 ㅁ 사용자 지정 픞러그인은 개별적으로 또는 글로벌리하게 라우트와, API를 적용

 ㅁ Kong Plugindms Lua와 Go 언어 지원

 

4. 보안

 

ㅁ Connection 마다 동적으로 SSL 인증서 적용할 수 있는 방법 제공

ㅁ Kong Core 엔진에서 SSL 인증서 직접 처리

ㅁ Admin API를 통해 SSL 인증서 구성 가능

ㅁ 역할 기반 엑세스 제어(RBAC) 적용 가능

ㅁ 즉시 사용 가능한 인증, 보안, Traffic 제어 등을 위한 다양한 플러그인 제공

ㅁ Kong Immunity를 통해 AI와 머신러닝을 활용하여 Traffic 패턴을 이해하고 비정상적인 행동에 대해 자율적으로 식별

ㅁ Kong Immunity를 통해 이상 행동 발생 시 real-time alerts를 통해  식별하고 분석하여 해결

ㅁ mTLS 플러그인을 통해 Consumer와 Proxy간의 mTLS와 업스트림 서비스와 Proxy간의 모든 mTLS를 지원

ㅁ Kong은 업스트림 서비스를 통해 Mutual TLS Handshake를 지원

 

5. 인증

 

ㅁ 다양한 Kong 인증 플러그인의 애플리케이션과 구성으로 으로 업스트림 서비스(API 또는 마이스로 서비스)로의 트래픽 제어

ㅁ 아래는 Kong 인증 플러그인으로 제공하는 기능

 - Basic Authentication: 사용자 이름 및 암호 보호

 - HMAC Authentication: Incoming 요청에 무결성을 보장하기 위한 HMAC 서명 인증

 - JWT 서명자: 액세스 토큰 및 채널 토큰으로의 요청에서 하나 또는 두 개의 토큰에 서명 했는지 확인하고 다시 검증

 - Key 인증: Comsumers는 쿼리 문자열 파라미터 또는 헤더에 API 키를 추가하여 요청을 인증

 - LDAP 인증: 사용자 이름과 암호 보호로 LDAP 바인드 인증

 - Mutual TLS 인증: 클라이언트가 제공한 인증서 및 신뢰할 수 있는 CA 목록을 기반으로 Common Name 필드에 기반한 Consumer에게 인증서를 자동으로 매핑

 - OAuth 2.0 Introspedction: Introspection 엔드포인트(RFC 7662)을 활용하여 타사 OAuth 2.0 권한 부여 서버를 사용하여 개발자가 보낸 액세스 토큰의 유효성을 검사. 이 플러그인은 Consumer가 이미 서드파티 OAuth 2.0 서버에 대해 유효성을 검사할 액세스 토큰을 가지고 있다고 가정한다.

- OAuth 2.0 인증: 권한 부여 코드 부여, 클라이언트 자격 증명,

- OpenID Connect: 표준화된 방식으로 서드파티 IdP 또는 Kong OAuth 2.0 플러그인과의 통합 허용, 이 플러그인은 클라이언트와 업스트림 서비스 간의 (프록시) OAuth 2.0 리소스 서버 (RS) 및/또는 OpenID Connect Relying Party (RP)로  Kong을 구현하는데 사용

- Session: Kong API Gateway를 통해 프록시된 API에 대한 브라우저 세션을 관리하는데 사용. 세션 데이터 저장, 암호화, 갱인, 만료 및 브라우저 쿠키 전송을 위한 구성 및 관리를 제공

- Valut 인증: Value 객체는 Kong 과 Value 서버 간의 연결을 나타낸다. Value API와 통신하는데 사용되는 연결 및 인증 정보를 정의하며 이를 통해 Value-Auth 플러그인의 다양한 인스턴스가 다른 Valut 서버와 통신하여 유연한 Deployment 및 Comsumption 모델을 제공한다.

 

Consumer를 위한 핵심 원리는 플러그인을 연결할 수 있으며 request에 대한 행위를 커스터마이징할 수 있다는 것이다. 따라서 모바일 앱을 만들고 각 앱에 대한 하나의 Consumer를 정의할 수 있다. 

 

Kong은 인증된 액세스와 익명 액세스를 모두 허용하도록 지정된 서비스를 구성할 수 있다. 이 구성을 사용하여 익명사용자에게는 속도 제한이 있는 액세스를 부여하고 인증된 사용자에게는 높은 속도를 보장하는 액세스 권한을 제공할 수 있다.

 

6. User Management

 

ㅁ OpenID Connect 플러그인을 사용하여 표준화된 방식으로 서드파티 IdP 또는 Kong OAuth 2.0 플러그인과 통함 가능

ㅁ 이 플러그인은 클라이언트와 업스트림 서비스 간의 (프록싱) Oauth 2.0 리소스 서버(RS) 및/또는 OpenID Connect Reliying Party(RP)fh Kong을 구현하는데 사용

 

이 플러그인은 다음과 같은 유형의 자격 증명 지원

 - 표준화된 서명 알고리즘(JWA)가 있는 JWT 액세스 토큰 서명

 - Kong Oauth 2.0 플러그인 발행 토큰 또는 Token Introspection을 통해 발급된 서드파티 IdP가 있는 Opaque 액세스 토큰 (IdP가 이를 지원해야 함)

 - OAuth 2.0 암호 인가를 통한 클라이언트 ID 및 시크릿 (플러그인은 IdP의 토큰 엔드포인트를 호출하여 액세스 토큰으로 자격 증명을 자동으로 교환)

 - OpenID Connect 권한 Code 플로우를 사용할 때 클라이언트에서 검색할 수 있는 권한 코드

 - 플러그인이 클라이언트와 Kong간에 설정할 수 있는 세션 쿠키 Credential

 

ㅁ Kong과 타사 IdP간의 일반적인 통합 아키텍처

 

 

 

ㅁ 다양한 제공업체로 테스트된 OpenID Connect 

 

 - Auth0

 - Amazon. AWS Cognito

 - Conect2id

 - Dex

 - Gluu

 - Google

 - IdentityServer4

 - Keycloak

 - Microsoft Azure Active Direcotry v1

 - Microsoft Azure Active Directory v2

 - Microsoft Live Connect

 - Okta

 - OneLogin

 - OpenAM

 - Paypal

 - PingFederate

 - Salesforce

 - Yahoo!

 

ㅁ Kong과 외부 IdP와의 일반적인 인증 흐름

 

 

4.7 Scalability & Load Management

 

ㅁ Kong은 AWS t2.nano EC2(1 CPU, 512MB)로 테스트 시 4,792 TPS (타 솔루션은 8 CPU Core/16GB 메모리에서 실행시 동일 성능)

 ㅁ Latency 역시 타 솔루션보다 우수

 

ㅁ 동일한 데이터 스토어를 가리키는 추가 Kong 인스턴스/컨테이너를 시작하여 Kong Cluster를 수평으로 쉽게 확장 가능

 

8. Real Time 분석

 

ㅁ Kong Vital Analytics를 사용하여 Kong Enterprise는 실시간으로 API Gateway Traffic Insights를 시각화.

ㅁ Kong Vital은 Total Request, Upstream Latency, Kong 도입(?) Latency, Cache 성능에 대한 분석 정보 표시

Kong Vitals Analtics의 API Gateway Traffic Dashboard
Kong Enterprise Vitals Alaytics - time serises data points (real time)
Kong Enterprise Vitals Analytics - Real Time Cache Performance

 

Kong Enterprise Vitals Analytics - real time Proxy performance

9. Devloper Portal

 

ㅁ 주요 특징

- Kong Developer Portal은 모든 개발자가 서비스를 찾고, 액세스 하고, 사용할 수 있도록 해주는 단일 소스를 제공

- 문서에 대한 직관적인 컨텐츠 관리, - 간소화된 개발자 온보딩과 RBAC(역할 기반 액세스 컨트롤) 기능 제공

- 통합 개발자의 API 환경을 제공하기 위한 포괄적인 솔루션 제공을 통해 개발자의 역량을 한단계 끌어 올림

 

ㅁ 제공 기능

 

 ㅇ 완전한 커스터마이징 환경의 포탈 제공

 Kong Developer Portal은 모든 개발자 포털 설정이 오픈되어 모든 Developer Portal 설정과 함께 완벽히 커스터마이징 가능한 모양과 느낌을 제공하며 관리자가 개발자/파트너 워크플로우를 오케스트레이션 할 수 있다.

 

 

ㅇ API 문서에 대한 Quick-Start

 

 

 -  Kong Developer Portal은 Swagger/OpenAPI 사양에 따라 API Document를 자동으로 생성함

 - JavaScript, Shell, Python 및 Ruby와 같은 언어로 샘플 클라이언트 코드를 생성 후 개발자가 API Endpoint를 테스트하고 Request 및 Respons 메시지 포맷을 검사 가능

 

ㅇ 사용자 등록 및 인증 (Developer Onboarding)

 - 내/외부 개발자는 가입 페이지를 통해 Developer Portal에 가입 가능

 - API 플랫폼 관리자는 Kong Manager로부터 개발자 액세스 요청 확인 가능

 - 관리자 액세스 승인 후 개발자는 ID/PW를 통해 로그인 가능

 - Developer Portal은 OpenID Connect를 통해 타사 SSO 솔루션과의 통합 지원

 

ㅇ 애플리케이션 등록

 

- 개발자에게 애플리케이션으로 엔드 비스를  패키징하고 비스/API에 응용 프로그램을 독할 능을

- 애플리케이션 록을 용하는 명서(OAS/Swagger 양)를 비스에 Portal 용자가 명서 이지에서 로그램에 로그램 약을 록하고 탈로그 이지에서 록 열람 가능

 

ㅇ 서비스 계약 (Service Contract)

 

- 개발자는 Kong Developer Portal에서 애플리케이션을 만들 수 있다. 애플리케이션은 많은 서비스에 적용할 수 있다. 이것을 서비스 계약이라고 한다.

- 애플리케이션을 서비스에 대해 사용하려면 서비스 계약에 승인된 상태가 되어야 한다.

- 모든 새로운 서비스 계약에 대한 자동 승인을 지원하려면 포털 애플리케이션 등록 플러그인에서 자동 승인을 사용하도록 설정 

 

 

 ㅇ 기타 기능

  - 공용 Template Repo 제공

  - 고객 커뮤니티 기반 컴포넌트 제공

  - 클라우드 또는 온프렘 기반 제공