Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Kong Enterprise – Die Service Control Platform

28.5.2020 | 3 Minuten Lesezeit

Die bisherigen Blogposts zu Kong aus dem vergangenen Jahr haben sich dem API Gateway beschäftigt, welches als Open-Source-Produkt zur Verfügung gestellt wird. Seit Ende September / Anfang Oktober 2019 ist codecentric Go-To-Market-Partner in EMEA, vor allem aber in der DACH-Region. Als Go-To-Market-Partner beschäftigen wir uns auch mit Kong Enterprise, einer Plattform, die der Unterstützung des gesamten Lebenszyklus von APIs und Services dient.

Das Produkt besteht aus mehreren Komponenten, denen ich mich in einer neuen Blogpost-Serie nun widmen möchte. Die erste Komponente ist uns schon aus den bisherigen Blogposts bekannt: das Gateway. Es wird aktuell (Ende Mai 2020) bei Kong Enterprise mit der Versionsnummer 1.5 ausgeliefert. Hier zeigt sich ein großer Unterschied zum Open-Source-Produkt, welches schon seit März 2020 in der Version 2.0 verfügbar ist, und zeigt zugleich, wie wichtig Kong als Hersteller das Enterprise-Produkt ist, da neue Features des Open-Source-Produktes erst eine gewisse Reife erhalten, bevor diese dann ein Teil des Enterprise-Produktes werden. Die folgende Grafik stellt die einzelnen Komponenten schematisch dar.

(c) Kong Inc

Im Gegensatz zum Kong Gateway als Open-Source-Produkt fällt zu allererst die Möglichkeit der rollenbasierte Zugriffskontrolle (RBAC) für die Administration des Gateways auf. Obwohl sich die Teams einer Organisation denselben Kong-Cluster teilen können, ist es möglich, den Cluster in logische Gruppen mit beschränktem Zugang zu unterteilen. Diese Workspaces ermöglichen eine klarere Segmentierung des Traffics und der Entitäten. Der Zugriff jedes Teams kann auf seinen eigenen Workspace beschränkt werden, wodurch das Prinzip der geringsten Privilegien unterstützt wird.

Neben den Open-Source-Plugins bietet Kong Enterprise auch „Enterprise Plugins“ an. Diese werden in zukünftigen Blogposts durch entsprechende Use Cases vorgestellt.

Die Komponente „Kong Manager“ bildet das grafische User Interface der Plattform ab. Hier lassen sich dann auch durch Kong Vitals verschiedene Metriken grafisch direkt betrachten.

Zu guter Letzt ist auch ein Developer-Portal Teil des Funktionsumfangs von Kong Enterprise. Durch das Portal erhalten Entwickler die Möglichkeit, Services zu finden, auf diese zuzugreifen und auch zu nutzen.

Die beiden Module „Brain“ und „Immunity“ sind noch separat zu betrachten, da sie nicht direkt Teil von Kong Enterprise sind. Mit Brain lässt sich die Erstellung der API- und Service-Dokumentation automatisieren. Unterstützt durch Machine Learning hilft Immunity bei der Analyse von Traffic Pattern, um die Sicherheit des Gateway zu erhöhen.

Aufsetzen einer sicheren Entwicklungsumgebung

Nach Betrachtung einiger Komponenten von Kong Enterprise, möchte ich nun zeigen, wie man sich eine sichere lokale Umgebung erstellen kann. Durch Automatisierung lässt sich die Konfiguration auch später in eine produktive Umgebung übertragen.

Die Basis unserer lokalen Umgebungen stellt, wie schon vorher bei den Posts zu Kong Gateway, eine docker-compose-Datei dar.

version: "3"
networks: 
  kong-ent-net:
    driver: bridge

services: 

  api-service:
    build: ./api-service
    ports: 
      - 80:80

  kong-database:
    image: postgres:9.6
    restart: always
    networks: 
    - kong-ent-net
    container_name: kong-database
    environment:
    - POSTGRES_USER=kong
    - POSTGRES_PASSWORD=kong
    - POSTGRES_DB=kong
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  kong-migration:
    image: kong-docker-kong-enterprise-edition-docker.bintray.io/kong-enterprise-edition
    command: kong migrations bootstrap
    networks: 
      - kong-ent-net
    container_name: kong-migration
    restart: on-failure
    environment: 
    - KONG_PG_HOST=kong-database
    - KONG_PG_PASSWORD=kong
    - KONG_DATABASE=postgres
    - KONG_PG_DATABASE=kong
    - 'KONG_LICENSE_DATA=${KONG_LICENSE_DATA}'
    - KONG_PASSWORD=${KONG_PASSWORD}
    links:
      - kong-database
    depends_on: 
      - kong-database
  
  kong-ent:
    image: kong-docker-kong-enterprise-edition-docker.bintray.io/kong-enterprise-edition
    container_name: kong-ent
    depends_on:
      - kong-migration
      - kong-database
    restart: always
    networks:
      - kong-ent-net
    ports:
    - 8000:8000
    - 8001:8001
    - 8002:8002
    - 8003:8003 
    - 8004:8004
    - 8443:8443
    - 8444:8444
    - 8445:8445
    - 8446:8446
    - 8447:8447
    environment:
    - KONG_ENFORCE_RBAC=on
    - KONG_ADMIN_GUI_AUTH=basic-auth
    - KONG_ADMIN_GUI_SESSION_CONF=${KONG_ADMIN_GUI_SESSION_CONF}
    - KONG_AUDIT_LOG=on
    - KONG_LOG_LEVEL=debug
    - KONG_PORTAL_GUI_HOST=localhost:8003
    - KONG_PORTAL_GUI_PROTOCOL=http
    - KONG_PORTAL=on
    - KONG_PORTAL_AUTH=basic-auth
    - KONG_PORTAL_SESSION_CONF=${KONG_PORTAL_SESSION_CONF}
    - KONG_ADMIN_GUI_URL=http://localhost:8002
    - KONG_DATABASE=postgres
    - KONG_PG_PASSWORD=kong
    - KONG_PG_HOST=kong-database
    - KONG_PG_DATABASE=kong
    - 'KONG_LICENSE_DATA=${KONG_LICENSE_DATA}'
    - KONG_VITALS=on
    - KONG_ANONYMOUS_REPORTS=off
    - KONG_PROXY_ACCESS_LOG=/dev/stdout
    - KONG_ADMIN_ACCESS_LOG=/dev/stdout
    - KONG_PROXY_ERROR_LOG=/dev/stderr
    - KONG_ADMIN_ERROR_LOG=/dev/stderr
    - KONG_PROXY_LISTEN=0.0.0.1:8000, 0.0.0.1:8443 ssl
    - KONG_ADMIN_LISTEN=0.0.0.1:8001, 0.0.0.1:8444 ssl
    - KONG_ADMIN_GUI_LISTEN=0.0.0.0:8002, 0.0.0.0:8445 ssl
    - KONG_PORTAL_GUI_LISTEN=0.0.0.0:8003, 0.0.0.0:8446 ssl
    - KONG_PORTAL_API_LISTEN=0.0.0.0:8004, 0.0.0.0:8447 ssl
    healthcheck:
      test: ["CMD-SHELL","kong","health"]
      interval: 5s
      retries: 10

Das entsprechende Docker-Image von Kong Enterprise erhält man über einen kundenspezifischen Bintray-Zugang. Zusätzlich wird noch ein Lizenzschlüssel benötigt. Dieser muss nur in einer .env-Datei hinterlegt werden.

KONG_PASSWORD=CodeCentric2020!

KONG_ADMIN_GUI_SESSION_CONF={"secret":"secret","storage":"kong","cookie_secure":false}

KONG_PORTAL_SESSION_CONF={"cookie_name":"$cc2020k","secret":"super-secret","storage":"kong","cookie_secure":false}

KONG_LICENSE_DATA={}

Durch die Verwendung von KONG_PASSWORD wird der eingebaute Super Admin Account aktiviert, der unter anderem dafür sorgt, dass jeder Aufruf des Rest Admin API zusätzlich den Kong-Admin-Token als Parameter benötigt. Auf diese relativ einfache Art und Weise haben wir auch schon unsere Entwicklungsumgebung abgesichert. Und dies bildet nun auch den Ausgangspunkt für die folgenden Blogposts.

Weitere Informationen zu unserer Partnerschaft mit Kong sind hier zusammengefasst.

Beitrag teilen

Gefällt mir

1

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.