1 of 25

Single Sign On

v Cloud Native prostředí

Ondřej Šika

Freelance & SikaLabs s.r.o.

ondrej@sika.io

@ondrejsika

KCD 2025, Bratislava 5.6.2025

2 of 25

Ondřej Šika

  • CEO & Founder @ SikaLabs
  • DevOps Architect & Engineer
  • DevOps lektor

Navrhnu a implementuji Vám na míru DevOps architekturu od verzování v Gitu po provoz Kubernetes v on-prem i v cloudu.

Dělám populární školení, kde své znalosti předávám tak, abyste si mohli vše udělat sami a bez zbytečných přešlapů a slepých cest.

3 of 25

Problémy které řešíme

  • rozdrobená autentifikace - každá aplikace má svoje účty
  • různá hesla
  • složitý onboarding a offboarding

Příklad z praxe: přístup pro nového kolegu

    • Kubernetes & kubeconfig
    • Grafana
    • VPN
    • ArgoCD (dex user, nemá lokální uživatele)

4 of 25

Co je Single Sign On (SSO)

Single Sign-On (SSO) je autentizační mechanismus, který umožňuje uživateli přihlásit se jednou a získat přístup k více aplikacím nebo službám bez opakovaného zadávání přihlašovacích údajů.

5 of 25

SSO Integrace v Cloud Native Světě

  • Kubernetes - OICD
  • ArgoCD - OIDC
  • Grafana - OAuth2
  • Vault - OIDC
  • VPN (Tailscale, Headscale) - OIDC
  • Gitlab - Oauth2
  • oauth2-proxy (pro aplikace, které nepodporují SSO)

6 of 25

Jak Single Sign On funguje

  1. Uživatel se pokusí přistoupit k aplikaci.
  2. Aplikace přesměruje uživatele na SSO provider (např. Keycloak).
  3. Uživatel se přihlásí (např. jméno + heslo, MFA…).
  4. SSO provider vrátí token
  5. Aplikace ověří token → uživatel je přihlášen.
  6. Při přístupu do dalších aplikací už je uživatel automaticky přihlášen

7 of 25

Oauth2 & OpenID Connect (OIDC)

Co je OAuth 2.0?

  • Standard pro autorizaci – říká, kdo smí k čemu přistupovat.
  • Umožňuje aplikacím přístup k API jménem uživatele, bez nutnosti znát jeho heslo.
  • Pracuje s tokeny (access token, refresh token).

Co je OIDC (OpenID Connect)?

  • Rozšíření OAuth 2.0 pro autentizaci – říká, kdo je přihlášen.
  • Vrací ID Token s informacemi o uživateli.
  • Standard pro Single Sign-On (SSO) mezi službami.

8 of 25

Možnosti SSO

  • Open Source
    • Keycloak (CNCF)
    • Dex (CNCF, dexidp.io)
  • Cloud Provider
    • Entrea ID (Microsoft)
    • Google SSO
  • SaaS
    • OKTA

9 of 25

Keycloak

Keycloak je open-source nástroj pro správu uživatelů a přihlášení, který podporuje SSO, OAuth2, OpenID Connect a umožňuje snadné zabezpečení aplikací.

10 of 25

Klíčové vlastnosti Keycloaku

  • Single Sign-On – Jediným přihlášením získáte přístup k více aplikacím
  • Standardní protokoly – OpenID Connect, OAuth 2.0 a SAML 2.0
  • Centralizovaná správa – Pro administrátory i uživatele
  • LDAP a Active Directory – Připojení k existujícím uživatelským adresářům
  • Identity Brokering – Přes OpenID Connect nebo SAML 2.0 poskytovatele
  • Vysoký výkon – Lehký, rychlý a škálovatelný
  • Přizpůsobení vzhledu a chování pomocí themes
  • GitOps ready - Terraform Provider

11 of 25

Keycloak a Terraform

Pokud chceme ještě zjednodušit správu keycloaku, můžeme jej spravovat pomocí Terraformu a GitOps.

12 of 25

Kubernetes + SSO

13 of 25

Konfigurace API Serveru

--oidc-issuer-url=https://sso.corp.com/realms/corp�--oidc-client-id=kubernetes�--oidc-username-claim=preferred_username�--oidc-groups-claim=groups

14 of 25

Konfigurace RBAC

15 of 25

Install kubelogin / oidc-login

https://github.com/int128/kubelogin

brew install kubelogin

or

kubectl krew install oidc-login

16 of 25

Kubelogin

17 of 25

Create Kubeconfig

user:� exec:� apiVersion: client.authentication.k8s.io/v1beta1� args:� - oidc-login� - get-token� - --oidc-issuer-url=https://sso.corp.com/realm/corp� - --oidc-client-id=example_client_id� - --oidc-client-secret=example_client_secret� command: kubectl� env: null� interactiveMode: IfAvailable� provideClusterInfo: false

18 of 25

Grafana SSO

19 of 25

ArgoCD SSO Config

20 of 25

VPN + SSO

21 of 25

Demo

22 of 25

Zítra bude�workshop

23 of 25

Díky za pozornost

24 of 25

Otázky?

25 of 25

Emailondrej@sika.io

Twitter

@ondrejsika

LinkedIn

/in/ondrejsika

Slides

sika.link/slides