Todos os produtos
Search
Central de documentação

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

Última atualização: Aug 21, 2026

Configure a autenticação baseada em tokens para um Kyuubi Gateway no EMR Serverless Spark. Os tokens vinculados a usuários RAM aplicam controle de acesso granular aos dados do catálogo Paimon no Data Lake Formation (DLF) e garantem que cada cliente consulte apenas os dados autorizados.

Casos de uso

Em cenários de análise de dados corporativos, diversos usuários ou aplicações acessam dados por meio de um gateway SQL unificado, como o Kyuubi Gateway. A segurança dos dados exige isolamento de acesso por identidade. Por exemplo, o Analista A consulta apenas relatórios de negócios, enquanto o Engenheiro de Dados B acessa conjuntos de dados brutos. Esta solução isola as permissões de dados em um ambiente multilocatário com autenticação de identidade de ponta a ponta.

image

Procedimento

Etapa 1: Preparar o ambiente e as permissões

  1. Prepare os recursos básicos.

  2. Configure as permissões do usuário RAM.

Etapa 2: Conceder permissões de tabela no DLF

Conceda ao usuário RAM acesso à tabela de destino no DLF. Também é necessário conceder a permissão Describe no banco de dados default para que o Kyuubi Gateway possa inicializar a sessão do Spark.

  1. Faça login no .

  2. Acesse o banco de dados e a tabela no catálogo de dados de destino.

  3. Selecione a tabela para a qual deseja conceder permissões e clique em na aba Permission.

  4. Clique em Add Permission.

    1. Principal: selecione DLF User.

    2. Select DLF User: selecione o usuário RAM de destino.

    3. Permission: selecione as permissões necessárias.

  5. Clique em OK.

    Nota

    Por padrão, o EMR Serverless Spark armazena em cache os metadados e dados do DLF. As alterações de permissão podem levar cerca de 10 minutos para entrar em vigor.

    Para aplicar as alterações de permissão imediatamente, adicione spark.sql.catalog.lakehouse.cache-enabled false à configuração do Spark no Kyuubi Gateway.

Etapa 3: Gerar um token do Kyuubi

  1. Na página Kyuubi Gateway, localize o gateway de destino e, na coluna Actions, clique em Token Management.

  2. Clique em Create Token. Na caixa de diálogo exibida, configure os seguintes parâmetros e clique em OK.

    Parâmetro

    Descrição

    Name

    Nome do novo token.

    Expired At

    Período de validade em dias. Mínimo: 1. Padrão: 365 dias.

    Assigned to

    Selecione o usuário RAM de destino.

  3. Copie as informações do token.

    Importante

    Copie o token imediatamente, pois ele não ficará visível novamente. Se o token expirar ou for perdido, crie um novo ou redefina o token existente.

Etapa 4: Conectar-se com o Beeline e verificar as permissões

  1. Monte o comando de conexão JDBC.

    beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;user=<UserName or RoleName>;httpPath=cliservice/token/<Token>"

    Parâmetros:

    Parâmetro

    Descrição

    <endpoint>

    Endpoint do Kyuubi Gateway.

    <port>

    443 para endpoints públicos, 80 para endpoints internos.

    <UserName or RoleName>

    Usuário RAM ou função RAM. Use o nome curto ou o nome completo. Exemplos:

    • Usuário RAM: agent ou agent@xxxx05398154xxxx.onaliyun.com

    • Função RAM: AliyunServiceRoleForDataworksEngine

    <Token>

    O token gerado para o usuário RAM na Etapa 3.

    [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. Verifique o controle de acesso.

    • Consulte uma tabela autorizada:

      SELECT * FROM <database_name>.<authorized_table_name> LIMIT 10;

      Saída esperada:

      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)
    • Consulte uma tabela não autorizada:

      SELECT * FROM <database_name>.<unauthorized_table_name> LIMIT 10;

      A consulta falha com um erro de permissão, como emr_test doesn't have privilege SELECT on TABLE. Exemplo de saída de erro:

      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)

Perguntas frequentes

P1: Por que ainda consigo consultar uma tabela não autorizada após conceder permissões? Possíveis causas:

  • Cache de metadados do DLF: o mecanismo Spark armazena em cache o esquema da tabela, o que pode ignorar as verificações de permissão. Solução: adicione spark.sql.catalog.lakehouse.cache-enabled false à sua configuração do Spark.

  • Latência de permissão: a sincronização de permissões do DLF pode apresentar um pequeno atraso, geralmente inferior a 10 segundos. Sugestão: aguarde e tente novamente ou verifique as permissões no console do DLF.

P2: O que devo fazer se perder um token? O token em texto simples é exibido apenas uma vez no momento da criação e o sistema não o armazena. Se o token for perdido ou vazado:

  • Na página Token Management, localize a entrada correspondente e clique em Reset Token.

  • O sistema invalida automaticamente o token antigo e gera uma nova credencial.

  • Atualize todas as configurações de cliente com o novo token.

P3: Por que é necessário conceder a permissão Describe no banco de dados default ao usuário RAM ao conectar-se ao Kyuubi Gateway? Ao estabelecer uma sessão do Spark, o Kyuubi Gateway carrega o banco de dados default como contexto inicial. Sem acesso a esse banco de dados, a inicialização da sessão falha e a conexão é encerrada. Isso se aplica mesmo que suas tabelas de negócios estejam em outros bancos de dados. Portanto, todos os usuários RAM que se conectam ao gateway devem ter a permissão DescribeDatabase no banco de dados default.

P4: Como usar um token do Kyuubi no DataWorks para controlar o acesso a dados do DLF no EMR Serverless Spark?

Ao enviar um job por meio de um nó Serverless Kyuubi do DataWorks, o sistema passa automaticamente a identidade de acesso padrão do recurso de computação para a conexão JDBC. Bind EMR Serverless Spark computing resources. Serverless Kyuubi node.

Apêndice: Proxy de identidade e fluxo de permissões

Os tokens do Kyuubi Gateway funcionam como credenciais de identidade. O sistema envia solicitações de acesso via proxy sob a identidade do usuário RAM proprietário do token e integra as permissões do DLF ao fluxo de trabalho de consultas do EMR Serverless Spark.

Fluxo de trabalho:

  1. Geração de token: gere um token para um usuário RAM no Kyuubi Gateway, vinculado exclusivamente à identidade desse usuário.

  2. Autenticação do cliente: o cliente (como o Beeline) inclui o token e o nome de usuário RAM na solicitação de conexão JDBC ao Kyuubi Gateway.

  3. Proxy de identidade: o Kyuubi Gateway valida o token e o mecanismo Spark assume a identidade do usuário RAM durante as consultas.

  4. Autorização do DLF: o mecanismo Spark envia solicitações ao DLF como o usuário RAM representado.

  5. Aplicação de permissões: o DLF autoriza a solicitação com base na política de acesso do usuário RAM.