Kitle veri yayılımı çağında, sağlam bir Veri Lakehouse mimarisi kurmak artık yalnızca depolama kapasitesiyle ilgili değildir; temelde yönetim ve güvenilirdir. Organizasyonlar yüksek performanslı tablo formatı yetenekleri nedeniyle Apache Iceberg'i benimserken, sorgu esnekliğinden ödün vermeden sıkı, çok kiracılı güvenlik sınırlarını nasıl uygulayacakları konusunda kritik bir zorlukla sık sık karşılaşır.
Iceberg, mükemmel açık tablo standartları sağlasa da, karmaşık kurumsal ihtiyaçlar için dosya veya satır düzeyinde erişim kontrolünü yerel olarak işlemez. İşte burada Apache Ranger devreye girer. Ranger'ı merkezi güvenlik ilke yöneticisi olarak entegre ederek, çok kiracılı ortamlar için temel olan, granüler, sütun düzeyinde ve satır düzeyinde güvenlik desenlerini uygulayabilirsiniz. Bu yazı, bu entegrasyonu nasıl etkili bir şekilde mimari olarak tasarlayacağınızı incelemektedir.
Neden Ranger ve Iceberg? Güvenlik Açığı
Apache Iceberg, ACID işlemleri ve zaman yolculuğu sorguları konusunda mükemmel olsa da, erişim kontrolü için altta yatan depolama sistemlerine (HDFS, S3 veya Azure Blob gibi) dayanır. Çok kiracılı bir senaryoda, Kiracı A'nın asla (yanlışlıkla veya kötü niyetle) Kiracı B'nin hassas PII verilerine erişmemesi gerekir. S3 veya HDFS'deki standart POSIX izinleri genellikle çok kaba tanelidir. Ranger, HiveServer2, Presto veya Trino gibi hizmetler tarafından Iceberg tabloları sorgulandığında uygulanan, tanımlanabilen ilkeleri sağlamak için bu boşluğu doldurarak birleşik bir yönetim arayüzü sunar.
İlke Katmanının Mimarisi
Bu uygulamanın çekirdeği, veri gölünüzdeki belirli kaynaklara eşleşen ilkeleri tanımlamayı içerir. Ranger'da bir kaynak genellikle Hive Metastore'daki (Iceberg meta verilerini yöneten) bir veritabanını veya tabloyu temsil eder. Çok kiracılığı güvence altına almak için kaynaklarımızı hiyerarşik olarak yapılandırırız.
Tek bir Iceberg şemasını paylaşan birden fazla kiracınız olduğunu varsayalım. Tablo meta verilerinde veya bölüm yapılarında gömülü kiracı tanımlayıcılara göre erişimi filtreleyen Ranger ilkeleri oluşturabilirsiniz. Aşağıda, sütun düzeyinde görünürlüğe odaklanarak, bir ilkenin Ranger yönetici konsolunda veya REST API'si aracılığıyla nasıl yapılandırılabileceğine dair kavramsal bir örnek bulunmaktadır.
Sütun Düzeyinde Güvenlik Uygulama
En güçlü desenlerden biri, hassas sütunları belirli kullanıcılar veya roller için gizlemektir. Örneğin, İnsan Kaynakları çalışanları maaş verilerini görmeli, ancak pazarlama analistleri görmemelidir. Ranger'da bu, kısıtlı sütunlar dışındaki tüm sütunlar için "SELECT" erişimi verilerek sağlanır.
// Ranger İlkesi için Sahte Yapılandırma
{
"policyName": "iceberg_hr_table_masking",
"resource": {
"db": "sales_data",
"table": "customer_pii"
},
"accesses": {
"column": "SELECT"
},
"columns": [
{"column": "customer_id", "access": "ALLOW"},
{"column": "email", "access": "DENY"}, // Hassas
{"column": "ssn", "access": "DENY"}, // Çok Hassas
{"column": "region", "access": "ALLOW"}
],
"users": [
"marketing_analyst_group"
],
"options": {
"deny": true
}
}
Bu yapılandırmada, marketing_analyst_group grubundaki bir kullanıcı Presto gibi uyumlu bir motor aracılığıyla Iceberg tablosunu sorguladığında, Ranger isteği engeller. İstenmeyen sütunlara erişimi dinamik olarak yeniden yazar veya engeller, böylece temel Iceberg dosyalarının bu belirli alanlar için asla okunması sağlanır.
Gelişmiş: Etiketlerle Satır Düzeyinde Güvenlik
Sütun maskesinin ötesinde, çok kiracılık genellikle satır düzeyinde izolasyon gerektirir. Ranger'ın yerel ilke motoru kaynak tabanlı olsa da, Ranger'ı etiket tabanlı sınıflandırma ile birleştirerek satır düzeyinde güvenlik elde edebilirsiniz. Kiracı kimlikleriyle satırları etiketleyerek ve yalnızca kullanıcıların kendi kiracı etiketleriyle eşleşen satırlara erişmesine izin veren ilkeleri uygulayarak, gerçek izolasyonu simüle edebilirsiniz.
Alternatif olarak, sorgu motorunuz bunu destekliyorsa (örneğin Ranger eklentisi ile Presto), kullanıcı kimlik bilgilerine dayanarak sorgu planına filtreleme koşulları enjekte edebilirsiniz. Örneğin, bir ilke, 123 Kiracısına ait bir kullanıcı tarafından yürütülen herhangi bir sorguya otomatik olarak WHERE tenant_id = 'TENANT_123' ekleyebilir, böylece kullanıcılar filtreyi kaldırmaya çalışsa bile diğer kiracıların verilerini sorgulayamazlar.
Uygulama İçin En İyi Uygulamalar
- Tutarlı Meta Yönetimi: Hive Metastore'unuzun, Iceberg tablolarını Ranger'ın kaynak keşfi için standart tablolar olarak doğru şekilde işlediğinden emin olun.
- Üretim Dışı Verilerle Test Edin: Üretim yüklemelerine uygulamadan önce her zaman ilke uygulamasını bir ara ortamda doğrulayın.
- Audit Günlüklerini İzleyin: İlke ihlallerini ve erişim girişlerini izlemek için Ranger'ın denetim günlüklerini etkinleştirin; bu, temel bir uyumluluk izleme katmanı sağlar.
Sonuç
Bir Apache Iceberg veri gölünü güvence altına almak yalnızca dosya erişimini kısıtlamakla ilgili değildir; yönetimi sorgu katmanına entegre etmektir. Apache Ranger'ın esnek ilke motorundan yararlanarak, Iceberg formatının yüksek performanslı avantajlarını korurken hassas verileri koruyan karmaşık çok kiracılı güvenlik desenleri uygulayabilirsiniz. Veri gölünüz büyüdükçe, bu birleşik yaklaşımı benimsemek, güvenlik durumunuzun veri hacmiyle birlikte ölçeklenmesini sağlar.