HomeLab için IAM: Authelia SSO

Neden evde SSO ihtiyacım oldu?

Daha önce bahsettiğim gibi 2023 yılından beri evimde self-hosted uygulamalar çalıştırıyorum ve şu anda 20’ye yakın authentication (kimlik doğrulama) gerektiren servis 7/24 aktif. Her biri için ayrı parola ve 2FA oluşturmak, sonra bunları parola yöneticisine kaydetmek tam bir işkenceye dönüşmeye başlamıştı.

Daha da önemlisi; her servisin kendi giriş paneline güvenmek, HomeLab’in saldırı yüzeyini gereksiz yere genişletiyordu. Kurumsal dünyada bu sorun yıllar önce SSO (Single Sign-On) ile çözüldü. Peki, bu “Enterprise” konforunu ve güvenliğini neden kendi laboratuvarıma getirmeyeyim?

Her servise aynı şifreyi koysaydın bu kadar uğraşmazdın – Umur’un Beyni

Günün sonunda kısa bir araştırmanın ardından, çözüm olarak Authelia servisini seçtim. Bu yazıda nasıl kurulduğundan bahsetmeyeceğim

OIDC (OpenID Connect)

Kısaca; OIDC, OAuth 2.0’ın üzerine inşa edilmiş modern bir kimlik katmanıdır. Aralarındaki fark şudur;

  • OIDC: Kimlik Doğrulama (Authentication) – “Bu kişi gerçekten Umur mu?”
  • OAuth 2.0: Yetkilendirme (Authorization) – “Bu kişinin bu servise erişim yetkisi var mı?”

HomeLab’imde native olarak OIDC protokolünü destekleyen Grafana, Portainer gibi servisleri direkt olarak Authelia’ya bağladım.
Sonuç olarak: Giriş ekranında kullanıcı adı/şifre yerine “Sign in with Authelia” butonu ile tek tıkla giriş yapabiliyorum.

OIDC Desteklemeyen servisler ?

Peki ya OIDC desteklemeyen veya hiç authentication desteği olmayan basit mikro servisler ne olacak?

“Bu servisler zaten yerel ağda (LAN), dışarı kapalı, bir şey olmaz” diyebilirdim. Ancak Zero Trust (Sıfır Güven) mimarisinde “iç ağ güvenlidir” diye bir varsayım yoktur. Bu servisleri savunmasız bırakmak, güvenlik zincirinde zayıf halka yaratır.

Burada devreye HAProxy giriyor. HAProxy ile “Forward Auth” mantığını kullandım:

  • Dışarıdan gelen istek önce HAProxy’ye uğrar.
  • HAProxy trafiği durdurur ve Authelia’ya sorar: “Bu arkadaşın giriş izni var mı?”
  • Eğer Authelia “Tanımıyorum” derse, kullanıcıyı login sayfasına yönlendirir.
  • Giriş başarılıysa, HAProxy trafiği asıl uygulamaya iletir.

Sonuç olarak authentication özelliği olmayan basit web uygulamalarını bile güvenle dışarıya açabiliyorum.

VPN Varken Neden SSO?

Birçok dostum şu soruyu sorabilir: “Zaten WireGuard VPN ile ev ağına güvenli erişim sağlıyorsun, neden bir de SSO katmanıyla uğraşıyorsun?”

Bu sorunun cevabı siber güvenliğin önemli bir kuralında saklı: Defense in Depth.

  1. VPN (L3): Tünel güvenliğini sağlar. Cihazımın ev ağıma girmesine izin verir. Ancak VPN, cihazın başındaki kişinin ben mi yoksa laptopumu çalan bir hırsız mı olduğunu bilmez.
  2. SSO (L7): Uygulama güvenliğini sağlar. Ağa giren kişinin gerçekten “Umur” olduğunu doğrular (MFA/2FA ile).

Eğer sadece VPN kullansaydım ve laptopum açıkken çalınsaydı, saldırgan tüm servislerime elini kolunu sallayarak girebilirdi. Ancak şu an VPN tünelini aşsa bile, Authelia’nın kimlik duvarına toslayacaktır.

Kısaca; Güvenlikte “Tek Nokta” (Single Point of Failure) yaratmamak adına, VPN evin dış kapısı, Authelia ise iç kapı kilidi.

Neden Authentik Değil de Authelia?

Self-Hosted dünyasında SSO denilnce akla gelen ilk iki servistir: Authentik ve Authelia
Authentik harika bir proje; gelişmiş bir arayüzü (UI) var ve yönetim paneli üzerinden her şeyi tıklayarak yapabiliyorsunuz. Ancak benim tercihimi Authelia‘dan yana kullanmamın iki temel teknik sebebi var:

Configuration as Code: Authentik büyük oranda UI üzerinden yönetilirken, Authelia tamamen YAML dosyaları ile yönetilir. Bir SysAdmin olarak konfigürasyonumu bir Git reposunda saklayabilmek ve versiyonlayabilmek benim için daha önemlidir.

Odak ve Hafiflik: Authentik tam kapsamlı bir Identity Provider olarak çok geniş özellikler sunuyor. Bu, öğrenme eğrisini ve sistem üzerindeki yükü artırıyor. Authelia ise “Do one thing and do it well” (Bir şeyi yap ve iyi yap) felsefesini benimser. Go diliyle yazılmış olması, Python/Django tabanlı rakibine göre daha düşük “Runtime” maliyeti ve daha hızlı açılış süreleri sunuyor.

Kapanış

Dostlarım, biraz daha konuşursam kahve makineme de OIDC entegrasyonu yapmaya kalkışacağım, o sebepten konuyu burada kapatiyorum. Authentication konusunu burda kapatsam da HomeLab muhabbeti burda bitmez.

Birdahaki yazıda veya videoda görüşene dek kendinize çok cici bakın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir