Apache Ecosystem

Apache Superset: Güvenli Çok Kiracılı Analitik İçin Satır Düzeyli Güvenlik ve SSO Uygulaması

Veri odaklı kuruluşlar büyüdükçe, görselleştirme platformlarında güvenli ve granüler erişim kontrolüne olan ihtiyaç kritik hale gelir. Apache Superset güçlü ve modern bir veri keşif ve görselleştirme platformudur, ancak kutudan çıktığı haliyle tüm kullanıcıları standart RBAC rolleriyle ele alır. SaaS sağlayıcılarının farklı müşterilere hizmet verdiği veya farklı bölgesel ekipleri olan kurumsal ortamlar gibi çok kiracılı ortamlar için, yalnızca "görüntülenebilir" veya "düzenlenebilir" izinlerinden fazlasına ihtiyacınız var. Satır Düzeyli Güvenlik (RLS)'i, Tek Oturum Açma (SSO) aracılığıyla güvenli kimlik yönetimiyle birleştirmeniz gerekir.

Bu kılavuz, orta düzeyden ileri düzey geliştiricileri, veri izolasyonunu ve merkezi kimlik doğrulamayı sağlamak için bu özelliklerin pratik uygulamasından geçirir.

Mimariyi Anlama

Superset'in güvenlik modeli roller ve izinler etrafında şekillenmiştir. RLS, belirli bir veri seti içinde bir kullanıcının görebileceği veri satırlarını kısıtlamanıza olanak tanır. SSO, Superset'i kurumsal kimlik sağlayıcınızla (Keycloak, Okta veya Azure AD gibi) entegre ederek kimlik doğrulamayı harici olarak yönetmenizi sağlar, bu da şifre dağınıklığını azaltır ve güvenlik duruşunu iyileştirir.

Tek Oturum Açma (SSO) Yapılandırması

Superset, OpenID Connect (OIDC) en yaygın olan olmak üzere çeşitli SSO protokollerini destekler. SSO'yu uygulamak için superset_config.py dosyasını yapılandırmanız gerekir. Aşağıda, bir OIDC sağlayıcısı kullanılarak pratik bir örnek verilmiştir.

# superset_config.py

AUTH_TYPE = "oid"
OAUTH_REMOTE_APP = {
    "client_id": "your-client-id",
    "client_secret": "your-client-secret",
    "auth_uri": "https://your-idp.example.com/auth",
    "token_uri": "https://your-idp.example.com/token",
    "api_base_url": "https://your-idp.example.com/",
    "userinfo_uri": "https://your-idp.example.com/userinfo",
    "request_token_params": {},
    "access_token_params": {},
    "authorize_params": {"scope": "openid profile email"},
    "client_kwargs": {"verify_ssl": True},
}

# Harici grupları Superset rollerine eşleyin
OAUTH_TO_ROLE = {
    "admin-group": "Admin",
    "analyst-group": "Alpha",  # 'Alpha', Superset'te oluşturduğunuz bir roldür
    "viewer-group": "Public",
}

Bunu ayarladıktan sonra Superset örneğinizi yeniden başlatın. Kullanıcılar artık giriş yapmak için IdP'nize yönlendirilecek ve Superset rolleri, IdP'deki grup üyeliklerine göre otomatik olarak atanacaktır.

Satır Düzeyli Güvenlik (RLS) Uygulaması

RLS, çok kiracılı veri izolasyonunun çekirdeğidir. Kullanıcı özniteliklerine dayalı olarak sorgulara uygulanan SQL filtrelerini tanımlamanıza olanak tanır. Superset'te RLS kuralları arayüzde tanımlanır, ancak CI/CD hatlarında tutarlılık için programatik olarak da yönetilebilir.

Bir sales tablosunun ve bu tablonun bir region sütununun olduğunu varsayalım. alpha rolünün yalnızca 'US' bölgesinden gelen verileri görmesini istiyoruz.

1. Veritabanları > Veritabanı Seç > Satır Düzeyli Güvenlik yolunu izleyin.

2. Aşağıdaki ayarlarla yeni bir kural oluşturun:

  • Rol: Alpha seçin.
  • Veri Seti: sales veri setinizi seçin.
  • Filtre SQL İfadesi: region = 'US'

Dinamik, kullanıcıya özgü RLS için (örneğin, kullanıcılar yalnızca kendi departmanlarının verilerini görebilir), SSO sağlayıcınızdan veya özel başlıklardan gelen kullanıcı özniteliklerine erişmek için filtre ifadesinde Jinja2 şablonlamayı kullanabilirsiniz.

# Örnek Dinamik RLS Filtresi
# 'department', kullanıcının JWT'sinden veya profilinden çıkarıldığını varsayar
{{ current_user.attributes.get('department', 'unknown') }}

Çok Kiracılı Ortamlar İçin En İyi Uygulamalar

  1. Rol Ayrımı: Her kiracı veya departman için ayrı Superset rolleri oluşturun (örneğin, Tenant_A_Verified, Tenant_B_Verified). Tek bir genel "User" rolüne güvenmeyin.
  2. RLS'yi Kapsamlı Test Edin: RLS kurallarını her zaman bir test ortamında doğrulayın. Yanlış yapılandırılmış bir filtre, veri sızıntısına veya boş panolara yol açabilir.
  3. SSO Grup Eşlemesini Kullanın: Yeni kullanıcıları devreye alırken manuel yönetici hatalarını önlemek için rol atamasını SSO grup eşlemesiyle otomatikleştirin.
  4. Denetim Kayıtları: Uyumluluk ve güvenlik adli bilimi için kimin hangi veri setlerine eriştiğini izlemek üzere Superset'in denetim kaydını etkinleştirin.

Sonuç

Apache Superset'te Satır Düzeyli Güvenlik ve SSO uygulaması, onu basit bir BI aracından sağlam, kurumsal düzeyde bir analitik platformuna dönüştürür. Kimlik doğrulamayı harici bir IdP'ye ayırarak ve veritabanı düzeyinde granüler veri filtrelemesi uygulayarak, her kullanıcının yalnızca görüntülemeye yetkili olduğu verileri görmesini sağlarsınız. Bu yaklaşım yalnızca güvenliği artırmakla kalmaz, aynı zamanda karmaşık, çok kiracılı ortamlarda kullanıcı yönetimini de basitleştirir.

SSO entegrasyonunuzu yapılandırarak başlayın, ardından en hassas veri setleriniz için RLS kurallarını ekleyin. Bu iki temel yerinde olduğunda, Superset örneğiniz kuruluşunuzla birlikte güvenli bir şekilde ölçeklenmeye hazırdır.

Share: