EMR Serverless Spark'te bir Kyuubi Ağ Geçidi için belirteç tabanlı kimlik doğrulamayı yapılandırın. RAM kullanıcılarına bağlı belirteçler, Data Lake Formation (DLF) içindeki Paimon katalog verileri üzerinde ayrıntılı erişim kontrolü uygular ve her istemcinin yalnızca yetkili verilere sorgu göndermesini sağlar.
Kullanım senaryoları
Kurumsal veri analizinde, birden fazla kullanıcı veya uygulama Kyuubi Ağ Geçidi gibi birleşik bir SQL ağ geçidi üzerinden verilere erişir. Veri güvenliği, erişimin kimlik bazında yalıtılmasını gerektirir; örneğin Analist A yalnızca iş raporlarını sorgularken Veri Mühendisi B ham veri kümelerine erişir. Bu çözüm, uçtan uca kimlik doğrulama ile çok kiracılı bir ortamda veri izinlerini yalıtır.
Yordam
1. Adım: Ortamı ve izinleri hazırlayın
-
Temel kaynakları hazırlayın.
Bir çalışma alanı oluşturun. Çalışma alanlarını yönetin.
Çalışma alanında bir Kyuubi Ağ Geçidi oluşturun ve başlatın. Kyuubi Ağ Geçitlerini yönetin.
Gerekli veritabanı ve tablolarla birlikte DLF'de bir veri kataloğu oluşturun.
-
RAM kullanıcı izinlerini yapılandırın.
EMR Serverless Spark izinleri: RAM kullanıcısına izin verin.
Çalışma alanı izinleri: RAM kullanıcısını çalışma alanına ekleyin ve bir rol atayın. Kullanıcıları ve rolleri yönetin.
2. Adım: DLF'de tablo izinleri verin
RAM kullanıcısına DLF'deki hedef tabloya erişim izni verin. Ayrıca, Kyuubi Ağ Geçidi'nin Spark oturumunu başlatabilmesi için default veritabanı üzerinde de Describe izni vermeniz gerekir.
nda oturum açın.
Hedef veri kataloğundaki veritabanına ve tabloya gidin.
İzin vermek istediğiniz tabloyu seçin ve Permission sekmesine tıklayın.
-
Add Permission seçeneğine tıklayın.
Principal: DLF User seçeneğini belirleyin.
Select DLF User: Hedef RAM kullanıcısını seçin.
Permission: Gerekli izinleri seçin.
-
OK seçeneğine tıklayın.
NotEMR Serverless Spark, DLF meta verilerini ve verilerini varsayılan olarak önbelleğe alır. İzin değişikliklerinin etkili olması yaklaşık 10 dakika sürebilir.
İzin değişikliklerinin hemen uygulanması için Kyuubi Ağ Geçidi Spark yapılandırmasına
spark.sql.catalog.lakehouse.cache-enabled falseparametresini ekleyin.
3. Adım: Bir Kyuubi belirteci oluşturun
Kyuubi Gateway sayfasında hedef ağ geçidini bulun ve İşlemler sütununda Token Management seçeneğine tıklayın.
-
Create Token seçeneğine tıklayın. Görüntülenen iletişim kutusunda aşağıdaki parametreleri yapılandırın ve OK seçeneğine tıklayın.
Parameter
Description
Name
Yeni belirtecin adı.
Expired At
Gün cinsinden son kullanma süresi. Minimum: 1. Varsayılan: 365 gün.
Assigned to
Hedef RAM kullanıcısını seçin. -
Belirteç bilgilerini kopyalayın.
ÖnemliBelirteci hemen kopyalayın; tekrar görüntülenemez. Belirtecin süresi dolarsa veya kaybolursa yeni bir tane oluşturun ya da mevcut belirteci sıfırlayın.
4. Adım: Beeline ile bağlanın ve izinleri doğrulayın
-
JDBC bağlantı komutunu oluşturun.
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;user=<UserName or RoleName>;httpPath=cliservice/token/<Token>"Parametreler:
Parameter
Description
<endpoint>Kyuubi Ağ Geçidi uç noktası.
<port>Genel uç noktalar için
443, dahili uç noktalar için80.<UserName or RoleName>RAM kullanıcısı veya RAM rolü. Kısa adı veya tam adı kullanın. Örnekler:
-
RAM kullanıcısı:
agentveyaagent@xxxx05398154xxxx.onaliyun.com -
RAM rolü:
AliyunServiceRoleForDataworksEngine
<Token>3. Adımda RAM kullanıcısı için oluşturduğunuz belirteç.
[root@master-1-1(xxx) ~]# beeline -u "jdbc:hive2://kyuubi-cn-hangzhou-internal.spark.emr.aliyuncs.com:80;transportMode=http;user=emr_test;httpPath=cliservice/token/j2xxx" xxx SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apps/HIVE/hive-3.1.3-hadoop3.1-1.0.9/lib/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/apps/HADOOP-COMMON/hadoop-3.2.1-1.3.5-alinux3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Connecting to jdbc:hive2://kyuubi-cn-hangzhou-internal.spark.emr.aliyuncs.com:80;transportMode=http;user=emr_test;httpPath=cliservice/token/j2xxx Connected to: Spark SQL (version 3.5.2-emr) Driver: Hive JDBC (version 3.1.3) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 3.1.3 by Apache Hive 0: jdbc:hive2://kyuubi-cn-hangzhou-internal.s> -
-
Erişim kontrolünü doğrulayın.
-
Yetkili bir tabloyu sorgulayın:
SELECT * FROM <database_name>.<authorized_table_name> LIMIT 10;Beklenen çıktı:
2025-10-24 16:55:45.008 INFO nioEventLoopGroup-7-1 org. nnelInactive! +-----+----------+ | id | name | +-----+----------+ | 1 | Alice | | 2 | Bob | | 3 | Charlie | +-----+----------+ 3 rows selected (5.079 seconds) -
Yetkisiz bir tabloyu sorgulayın:
SELECT * FROM <database_name>.<unauthorized_table_name> LIMIT 10;Sorgu,
emr_test doesn't have privilege SELECT on TABLEgibi bir izin hatasıyla başarısız olur. Örnek hata çıktısı:Caused by: org.apache.paimon.rest.exceptions.ForbiddenException: Forbidden: User acs:ram::xxx:user/emr_test doesn't have privilege SELECT on TABLE default.paimon_tbl requestId:xxx at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:59) at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:35) at org.apache.paimon.rest.HttpClient.exec(HttpClient.java:156) at org.apache.paimon.rest.HttpClient.get(HttpClient.java:69) at org.apache.paimon.rest.RESTApi.getTable(RESTApi.java:465)
-
SSS
S1: İzin verdikten sonra neden hala yetkisiz bir tabloyu sorgulayabiliyorum?Olası nedenler:
DLF meta veri önbelleği: Spark motoru tablo şemasını önbelleğe alır ve bu durum izin kontrollerini atlayabilir.Çözüm: Spark yapılandırmanıza
spark.sql.catalog.lakehouse.cache-enabled falseparametresini ekleyin.İzin gecikmesi: DLF izin senkronizasyonunda kısa bir gecikme olabilir, genellikle 10 saniyeden azdır.Öneri: Bekleyip yeniden deneyin veya izinleri DLF konsolunda doğrulayın.
S2: Bir belirteç kaybolursa ne yapmalıyım?Düz metin belirteç yalnızca oluşturma sırasında bir kez gösterilir. Sistem bunu saklamaz. Belirteç kaybolur veya sızarsa:
Token Management sayfasında ilgili girişi bulun ve Reset Token seçeneğine tıklayın.
Eski belirteç otomatik olarak geçersiz kılınır ve yeni bir kimlik bilgisi oluşturulur.
Tüm istemci yapılandırmalarını yeni belirteçle güncelleyin.
S3: Kyuubi Ağ Geçidi'ne bağlanırken neden bir RAM kullanıcısına default veritabanı Describe izni verilmelidir?Kyuubi Ağ Geçidi bir Spark oturumu kurduğunda, başlangıç bağlamı olarak default veritabanını yükler. Bu veritabanına erişim olmadan oturum başlatma başarısız olur ve bağlantı sonlandırılır. İş tablolarınız başka veritabanlarında olsa bile bu kural geçerlidir; bu nedenle ağ geçidine bağlanan tüm RAM kullanıcılarının default veritabanı üzerinde DescribeDatabase iznine sahip olması gerekir.
S4: EMR Serverless Spark için DLF verilerine erişimi kontrol etmek amacıyla DataWorks'te Kyuubi belirtecini nasıl kullanabilirim?
Bir DataWorks Serverless Kyuubi düğümü aracılığıyla iş gönderdiğinizde, DataWorks hesaplama kaynağının varsayılan erişim kimliğini otomatik olarak JDBC bağlantısına iletir. EMR Serverless Spark hesaplama kaynaklarını bağlayın. Serverless Kyuubi düğümü.
Ek: Kimlik vekilliği ve izin akışı
Kyuubi Ağ Geçidi belirteçleri kimlik kimlik bilgisi olarak hizmet eder. Erişim istekleri, belirteç sahibinin RAM kullanıcısı kimliği altında vekil olarak yapılır ve DLF izinleri EMR Serverless Spark sorgu iş akışına entegre edilir.
İş akışı:
Belirteç oluşturma: Kyuubi Ağ Geçidi'nde bir RAM kullanıcısı için bir belirteç oluşturulur ve bu belirteç o kullanıcının kimliğine benzersiz şekilde bağlanır.
İstemci kimlik doğrulaması: İstemci (örneğin Beeline), Kyuubi Ağ Geçidi'ne yönelik JDBC bağlantı isteğine belirteci ve RAM kullanıcı adını ekler.
Kimlik vekilliği: Kyuubi Ağ Geçidi belirteci doğrular ve Spark motoru sorgular sırasında RAM kullanıcısının kimliğini taklit eder.
DLF yetkilendirmesi: Spark motoru, taklit edilen RAM kullanıcısı olarak DLF'ye istek gönderir.
İzin uygulaması: DLF, isteği RAM kullanıcısının erişim ilkesine göre yetkilendirir.