Tüm Ürünler
Search
Belge Merkezi

E-MapReduce:Use Kyuubi tokens to control access to Data Lake Formation data in EMR Serverless Spark

Son Güncelleme:Oct 08, 2026

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.

image

Yordam

1. Adım: Ortamı ve izinleri hazırlayın

  1. Temel kaynakları hazırlayın.

  2. RAM kullanıcı izinlerini yapılandırın.

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.

  1. nda oturum açın.

  2. Hedef veri kataloğundaki veritabanına ve tabloya gidin.

  3. İzin vermek istediğiniz tabloyu seçin ve Permission sekmesine tıklayın.

  4. Add Permission seçeneğine tıklayın.

    1. Principal: DLF User seçeneğini belirleyin.

    2. Select DLF User: Hedef RAM kullanıcısını seçin.

    3. Permission: Gerekli izinleri seçin.

  5. OK seçeneğine tıklayın.

    Not

    EMR 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 false parametresini ekleyin.

3. Adım: Bir Kyuubi belirteci oluşturun

  1. Kyuubi Gateway sayfasında hedef ağ geçidini bulun ve İşlemler sütununda Token Management seçeneğine tıklayın.

  2. 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.

  3. Belirteç bilgilerini kopyalayın.

    Önemli

    Belirteci 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

  1. 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çin 80.

    <UserName or RoleName>

    RAM kullanıcısı veya RAM rolü. Kısa adı veya tam adı kullanın. Örnekler:

    • RAM kullanıcısı: agent veya agent@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>
  2. 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 TABLE gibi 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 false parametresini 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ışı:

  1. 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.

  2. İ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.

  3. 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.

  4. DLF yetkilendirmesi: Spark motoru, taklit edilen RAM kullanıcısı olarak DLF'ye istek gönderir.

  5. İzin uygulaması: DLF, isteği RAM kullanıcısının erişim ilkesine göre yetkilendirir.