Partilhar via


Gerenciar privilégios no Catálogo Unity

Este artigo explica como controlar o acesso a dados e outros objetos no Unity Catalog. Para saber como este modelo difere do controle de acesso no metastore do Hive, consulte Como utilizar o Unity Catalog e o metastore legado do Hive.

Quem pode gerir privilégios?

Inicialmente, os usuários não têm acesso aos dados em um metastore. Os administradores de conta do Azure Databricks, administradores de espaço de trabalho e administradores de metastore têm privilégios padrão para gerenciar o Catálogo Unity. Consulte Privilégios de Administrador no Unity Catalog.

Todos os objetos protegíveis no Unity Catalog têm um proprietário. Os proprietários de objetos têm todos os privilégios nesse objeto, incluindo a capacidade de conceder privilégios a outras entidades. Os proprietários podem conceder a outros usuários o privilégio de MANAGE no objeto, o que permite que os usuários gerenciem privilégios no objeto. Veja Gerir a propriedade dos objetos do Catálogo Unity.

Os privilégios podem ser concedidos por qualquer um dos seguintes:

  • Um administrador de metastore.
  • Um usuário com o privilégio MANAGE no objeto.
  • O proprietário do objeto.
  • O proprietário do catálogo ou esquema que contém o objeto.

Os administradores de conta também podem conceder privilégios diretamente em um metastore.

Privilégios do Catálogo do Espaço de Trabalho

Se seu espaço de trabalho foi habilitado para o Unity Catalog automaticamente, o espaço de trabalho é anexado a um metastore por padrão e um catálogo de espaço de trabalho é criado para seu espaço de trabalho no metastore. Os administradores de espaço de trabalho são os proprietários padrão do catálogo de espaço de trabalho. Como proprietários, eles podem gerenciar privilégios no catálogo do espaço de trabalho e todos os objetos filho.

Todos os usuários do espaço de trabalho recebem o privilégio USE CATALOG no catálogo do espaço de trabalho. Os utilizadores do espaço de trabalho também recebem os privilégios USE SCHEMA, CREATE TABLE, CREATE VOLUME, CREATE MODEL, CREATE FUNCTIONe CREATE MATERIALIZED VIEW no esquema default no catálogo.

Para obter mais informações, consulte Ativação automática do Unity Catalog.

Modelo de herança

Os objetos protegíveis no Unity Catalog são hierárquicos e os privilégios são herdados para baixo. O objeto de nível mais alto do qual os privilégios são herdados é o catálogo. Isso significa que conceder um privilégio em um catálogo ou esquema concede automaticamente o privilégio a todos os objetos atuais e futuros dentro do catálogo ou esquema. Por exemplo, se você conceder a um usuário o privilégio de SELECT em um catálogo, esse usuário poderá selecionar (ler) todas as tabelas e exibições nesse catálogo. Os privilégios concedidos em um metastore do Unity Catalog não são herdados.

Hierarquia de objetos do Unity Catalog

Os proprietários de um objeto recebem automaticamente todos os privilégios nesse objeto. Além disso, os proprietários de objetos podem conceder autorizações no próprio objeto e em todos os seus subobjetos. Isso significa que os proprietários de um esquema não têm automaticamente todos os privilégios nas tabelas no esquema, mas eles podem conceder a si mesmos privilégios nas tabelas no esquema.

Nota

Se você criou seu metastore do Unity Catalog durante a visualização pública (antes de 25 de agosto de 2022), talvez esteja em um modelo de privilégio anterior que não suporta o modelo de herança atual. Você pode atualizar para o Modelo de Privilégios versão 1.0 para obter herança de privilégios. Consulte Atualizar para herança de privilégios.

Mostrar, conceder e revogar privilégios

Você pode gerir privilégios para objetos de metastore usando comandos SQL, a CLI do Databricks , o fornecedor Databricks Terraform ou o Explorador de Catálogo.

Nos comandos SQL a seguir, substitua estes valores de marcador de posição:

  • <privilege-type> é um tipo de privilégio do Catálogo Unity. Consulte Tipos de privilégio.
  • <securable-type>: O tipo de objeto protegível, como CATALOG ou TABLE. Ver Objetos protegíveis
  • <securable-name>: O nome do securable. Se o tipo protegível for METASTORE, não forneça o nome protegível. Supõe-se que seja o metastore anexado ao espaço de trabalho.
  • <principal> é um utilizador, principal de serviço (representado pelo respetivo valor applicationId) ou grupo. Você deve incluir usuários, entidades de serviço e nomes de grupo que incluam caracteres especiais em backticks (` `). Ver Principal.

Mostrar permissões em objetos num metastore do Unity Catalog

Nota

Atualmente, os usuários com o privilégio MANAGE em um objeto não podem exibir todas as concessões para esse objeto no INFORMATION_SCHEMA. Em vez disso, INFORMATION_SCHEMA mostra apenas as suas próprias concessões sobre o objeto. Este comportamento será corrigido no futuro.

Os usuários com privilégio MANAGE podem exibir todas as concessões em um objeto usando comandos SQL ou o Gerenciador de Catálogos. Consulte Gerenciar privilégios no Catálogo Unity.

Permissões necessárias:

  • Os administradores de metastore, os usuários com o privilégio de MANAGE no objeto, o proprietário do objeto ou o proprietário do catálogo ou esquema que contém o objeto podem ver todas as concessões no objeto.
  • Se você não tiver as permissões acima, poderá visualizar apenas suas próprias concessões no objeto.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone de Catálogo Catálogo.
  2. Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
  3. Vá para a guia Permissões .

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL. Você pode mostrar subsídios em um principal específico ou pode mostrar todos os subsídios em um objeto protegível.

  SHOW GRANTS [principal] ON  <securable-type> <securable-name>

Por exemplo, o comando a seguir mostra todas as concessões em um esquema chamado padrão no catálogo pai chamado principal:

  SHOW GRANTS ON SCHEMA main.default;

O comando retorna:

  principal     actionType     objectType objectKey
  ------------- -------------  ---------- ------------
  finance-team   CREATE TABLE  SCHEMA     main.default
  finance-team   USE SCHEMA    SCHEMA     main.default

Mostrar as minhas permissões em objetos num metastore do Unity Catalog

Permissões necessárias: você sempre pode exibir suas próprias concessões em um objeto.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone do Catálogo .
  2. Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
  3. Vá para a guia Permissões . Se você não for um proprietário de objeto ou administrador de metastore, poderá visualizar apenas suas próprias concessões no objeto.

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL para mostrar suas concessões em um objeto.

  SHOW GRANTS `<user>@<domain-name>` ON  <securable-type> <securable-name>

Conceder permissões em objetos em um metastore do Unity Catalog

Permissões necessárias: administrador do Metastore, o proprietário do objeto, o privilégio de MANAGE no objeto, ou o proprietário do catálogo ou do esquema que contém o objeto.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.
  2. Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
  3. Vá para a guia Permissões .
  4. Clique Conceder.
  5. Insira o endereço de e-mail de um usuário ou o nome de um grupo.
  6. Selecione as permissões a serem concedidas.
  7. Clique em OK.

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL.

  GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>

Por exemplo, o comando seguinte concede a um grupo chamado equipa de finanças acesso para criar tabelas num esquema chamado padrão com o catálogo pai chamado principal.

  GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;
  GRANT USE SCHEMA ON SCHEMA main.default TO `finance-team`;
  GRANT USE CATALOG ON CATALOG main TO `finance-team`;

Note que os modelos registados são um tipo de função. Para conceder um privilégio em um modelo, você deve usar GRANT ON FUNCTION. Por exemplo, para conceder ao grupo ml-team-acme o privilégio de EXECUTE no modelo prod.ml_team.iris_model, você deve usar:

  GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;

Revogar permissões em objetos em um metastore do Unity Catalog

Permissões necessárias: administrador do Metastore, o privilégio MANAGE no objeto, o proprietário do objeto ou o proprietário do catálogo ou do esquema que contém o objeto.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.
  2. Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
  3. Vá para a guia Permissões .
  4. Selecione um privilégio concedido a um usuário, entidade de serviço ou grupo.
  5. Clique Revogar.
  6. Para confirmar, clique Revogar.

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL.

  REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>

Por exemplo, o comando a seguir revoga a um grupo chamado equipe de finanças o acesso para criar tabelas em um esquema chamado padrão com o catálogo pai chamado principal:

  REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;

Mostrar concessões em um metastore

Permissões necessárias: administrador da Metastore ou administrador da conta. Você também pode visualizar suas próprias concessões em uma metastore.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.
  2. Ao lado do rótulo da página do Catalog Explorer, clique no ícone ao lado do nome do metastore.
  3. Vá para a guia Permissões .

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL. Você pode mostrar concessões em um principal específico ou pode mostrar todas as concessões em um metastore.

  SHOW GRANTS [principal] ON METASTORE

Conceder permissões em um metastore

Permissões necessárias: administrador da Metastore ou administrador da conta.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone Catálogo.
  2. Ao lado do rótulo da página do Catalog Explorer, clique no ícone ao lado do nome do metastore.
  3. Na guia Permissões , clique em Conceder .
  4. Insira o endereço de e-mail de um usuário ou o nome de um grupo.
  5. Selecione as permissões a serem concedidas.
  6. Clique em OK.

SQL

  1. Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL.

    GRANT <privilege-type> ON METASTORE TO <principal>;
    

    Ao conceder privilégios num metastore, não se inclui o nome do metastore, uma vez que se assume o metastore anexado ao seu espaço de trabalho.

Revogar permissões em um metastore

Permissões necessárias: administrador da Metastore ou administrador da conta..

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique no ícone do Catálogo Catálogo.
  2. Ao lado do rótulo da página do Catalog Explorer, clique no ícone ao lado do nome do metastore.
  3. Na guia Permissões, selecione um utilizador ou grupo e clique em Revogar.
  4. Para confirmar, clique Revogar.

SQL

  1. Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL.

    REVOKE <privilege-type> ON METASTORE FROM <principal>;
    

    Ao revogar privilégios num metastore, não inclua o nome do metastore, pois assume-se o metastore ligado ao seu espaço de trabalho.