Compartilhar via


Gerenciar privilégios no Catálogo do Unity

Esta página explica como controlar o acesso a dados e outros objetos no Catálogo do Unity. Para saber como esse modelo difere do controle de acesso no metastore do Hive, consulte Trabalhar com o metastore do Hive legado junto com o Catálogo do Unity.

Quem pode gerenciar privilégios?

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

Todos os objetos protegíveis no Catálogo do Unity 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 de segurança. Os proprietários podem conceder a outros usuários o MANAGE privilégio no objeto, o que permite que os usuários gerenciem privilégios no objeto. Consulta Gerenciar a propriedade do objeto do Catálogo do Unity.

Privilégios podem ser concedidos por qualquer um dos seguintes:

  • Um administrador de metastore.
  • Um usuário com os privilégios MANAGE sobre o 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 workspace

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

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

Para obter mais informações, confira Habilitação automática do Catálogo do Unity.

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 a concessão de um privilégio em um catálogo ou esquema concede automaticamente o privilégio a todos os objetos atuais e futuros no catálogo ou esquema. Por exemplo, se você conceder a um usuário o privilégio 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 Catálogo do Unity não são herdados.

Hierarquia de objeto de Unity Catalog

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

Observação

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

Acessar solicitações e configuração de destino

Importante

Esse recurso está em Visualização Pública.

Os usuários podem solicitar acesso aos objetos que podem descobrir, normalmente com o privilégio, por meio do BROWSE Gerenciador de Catálogos, pesquisa ou links diretos. Essas solicitações são enviadas para acessar destinos de solicitação que os proprietários de objetos configuram em objetos protegíveis. Os destinos podem incluir endereços de email, canais do Slack, canais do Microsoft Teams, webhooks ou uma URL de redirecionamento para o sistema de aprovação da sua organização.

Para habilitar solicitações de acesso, você deve configurar destinos. Os destinos são herdados por objetos filho. Para obter mais informações, consulte Gerenciar destinos de solicitação de acesso.

Mostrar, conceder e revogar privilégios

Você pode gerenciar privilégios para objetos metastore usando comandos SQL, a CLI do Databricks, o provedor Terraform do Databricks ou o Gerenciador de Catálogos.

Nos seguintes comandos SQL, substitua estes valores de espaço reservado:

  • <privilege-type> é um tipo de privilégio do Catálogo do Unity. Confira Tipos de privilégio.
  • <securable-type>: o tipo de objeto protegível, como CATALOG ou TABLE. Confira Objetos protegíveis
  • <securable-name>: o nome do protegível. Se o tipo protegível for METASTORE, não forneça o nome protegível. Supõe-se que ele seja o metastore anexado ao workspace.
  • <principal> é um usuário, uma entidade de serviço (representada pelo seu valor applicationId) ou um grupo. Você precisa incluir usuários, entidades de serviço e nomes de grupos com caracteres especiais entre acentos graves (` `). Consulte Entidade de segurança.

Mostrar concessões em objetos em um metastore do Catálogo do Unity

Observação

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, o INFORMATION_SCHEMA exibe apenas as próprias concessões para o objeto. Esse 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 Catalog Explorer. Consulte Gerenciar privilégios no Catálogo do Unity.

Permissões necessárias:

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

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.
  2. Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
  3. Acesse a guia Permissões.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL. Você pode mostrar concessões em uma entidade de segurança específica ou mostrar todas as concessões em um objeto protegível.

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

Por exemplo, o seguinte comando mostra todas as concessões em um esquema denominado default no catálogo pai chamado main:

  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 minhas concessões em objetos em um metastore do Catálogo do Unity

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

Explorador do Catálogo

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

SQL

Execute o seguinte comando SQL em um notebook ou editor de consultas SQL para exibir 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 Catálogo do Unity

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 esquema que contém o objeto.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.
  2. Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
  3. Acesse a guia Permissões.
  4. Clique em Conceder.
  5. Insira o endereço de email para um usuário ou o nome de um grupo.
  6. Selecione as permissões a serem concedidas.
  7. Clique em OK.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL.

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

Por exemplo, o comando a seguir concede acesso a um grupo chamado finance-team para criar tabelas em um esquema denominado 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`;

Observe que os modelos registrados são um tipo de função. Para conceder um privilégio a um modelo, é necessário usar GRANT ON FUNCTION. Por exemplo, para conceder ao grupo ml-team-acme o EXECUTE privilégio no modelo prod.ml_team.iris_model, você usaria:

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

Revogar permissões em objetos em um metastore do Catálogo do Unity

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 esquema que contém o objeto.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.
  2. Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
  3. Acesse a guia Permissões.
  4. Selecione um privilégio que tenha sido concedido a um usuário, entidade de serviço ou grupo.
  5. Clique em Revogar.
  6. Para confirmar, clique em Revogar.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL.

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

Por exemplo, o comando a seguir revoga o acesso a um grupo chamado finance-team para criar tabelas em um esquema denominado padrão com o catálogo pai chamado principal:

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

Uma instrução REVOKE é bem-sucedida mesmo que os privilégios especificados não tenham sido concedidos inicialmente. Ele garante que os privilégios não estejam presentes, independentemente de seu estado anterior.

Mostrar as concessões em um metastore

Permissões necessárias: administrador do metastore ou administrador da conta. Você também pode exibir suas concessões em um metastore.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.
  2. Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.
  3. Acesse a guia Permissões.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL. Você pode mostrar concessões em uma entidade de segurança específica ou mostrar todas as concessões em um metastore.

  SHOW GRANTS [principal] ON METASTORE

Conceder permissões em uma metastore

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

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.
  2. Ao lado do rótulo da página 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 email para 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 comando SQL a seguir em um notebook ou editor de consultas SQL.

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

    Quando você concede privilégios em um metastore, não inclui o nome do metastore, porque o metastore que está anexado ao seu espaço de trabalho foi assumido.

Revogar permissões em um metastore

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

Explorador do Catálogo

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

SQL

  1. Execute o comando SQL a seguir em um notebook ou editor de consultas SQL.

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

    Quando você revoga privilégios em um metastore, não inclui o nome do metastore, porque o metastore que está anexado ao seu workspace foi assumido.