Gerenciar privilégios no Catálogo do Unity

Esta página explica como conceder, revogar e inspecionar privilégios em objetos protegíveis do Catálogo do Unity e como gerenciar a propriedade do objeto. Para obter informações conceituais sobre o modelo de permissões, herança de privilégio e propriedade, consulte os conceitos de modelo de permissões do 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. Consulte Gerenciar a propriedade do objeto.

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

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

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.

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 um objeto

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 um objeto

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 um objeto

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 um objeto

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. Na parte superior do painel Catálogo , clique no ícone Engrenagem. Ícone de engrenagem e selecione Metastore.
  3. Clique na 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. Na parte superior do painel Catálogo , clique no ícone Engrenagem. Ícone de engrenagem e selecione 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. Na parte superior do painel Catálogo , clique no ícone Engrenagem. Ícone de engrenagem e selecione 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.

Gerenciar a propriedade do objeto

Exibir o proprietário de um objeto

Você pode usar o Catalog Explorer ou instruções SQL para exibir o proprietário de um objeto.

Permissões necessárias: Qualquer usuário com o privilégio BROWSE no objeto ou um pai do objeto pode exibir o proprietário do objeto.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

  2. Selecione o objeto, como catálogo, esquema, tabela, visualização, volume, local externo ou credencial de armazenamento.

    Como navegar até o objeto depende do objeto. Catálogos, esquemas e o conteúdo dos esquemas (como tabelas e volumes) podem ser selecionados no painel Catálogo à esquerda. Você pode encontrar outros objetos, como locais externos ou compartilhamentos Delta Sharing, clicando no ícone de engrenagem. ícone de engrenagem acima do painel Catálogo e selecionando a categoria de objeto do menu.

    Para a maioria dos objetos, o proprietário será exibido na guia Visão geral da página de detalhes do objeto. Para alguns objetos, como locais externos, ele será exibido na parte superior da página de detalhes do objeto.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL. Substitua os valores de espaço reservado:

  • <securable-type>: o tipo de elemento protegível, como CATALOG ou TABLE.
  • <catalog>: O catálogo pai se você estiver visualizando um esquema ou o conteúdo de um esquema.
  • <schema>: O esquema pai se você estiver exibindo o conteúdo de um esquema, como uma tabela ou visão.
  • <securable-name>: o nome do objeto protegível.
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;

Transferir propriedade

Você pode usar instruções SQL ou Gerenciador de Catálogos para transferir o proprietário de um objeto.

Permissões necessárias: você pode transferir a propriedade do objeto se for o proprietário atual, um administrador metastore, o proprietário do contêiner (o catálogo de um esquema, o esquema de uma tabela) ou um usuário com o MANAGE privilégio no objeto. Os objetos de compartilhamento Delta são uma exceção: somente um administrador do metastore pode transferir a propriedade do compartilhamento.

Para evitar escalonamentos de privilégios, somente um administrador de metastore pode transferir a propriedade de uma exibição, função ou modelo para qualquer usuário, entidade de serviço ou grupo na conta. Os proprietários e usuários atuais com o MANAGE privilégio estão restritos a transferir a propriedade para seu nome de usuário ou para um grupo do qual eles são membros.

Dica

Transferir a propriedade de uma exibição ou exibição de métrica para um grupo permite a edição colaborativa. Quando um grupo possui uma exibição ou exibição de métrica, todos os membros do grupo podem editar sua definição enquanto o acesso a dados permanece limitado ao que o grupo tem permissão para ver. Para obter diretrizes detalhadas, consulte Habilitar edição colaborativa.

Observação

Exibições materializadas e tabelas de streaming criadas com o Databricks SQL podem ter a propriedade transferida. Para obter detalhes, consulte Alterar o proprietário de uma exibição materializada e alterar o proprietário de uma tabela de streaming.

Exibições materializadas e tabelas de streaming criadas com o Lakeflow Spark Declarative Pipelines não podem ter sua propriedade transferida diretamente. Em vez disso, altere o usuário de execução do pipeline que possui os conjuntos de dados. Com a próxima atualização, o proprietário será atualizado para o usuário em execução. Consulte Definir o usuário com permissão de execução.

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

  2. Selecione o objeto, como um catálogo, esquema, tabela, exibição, local externo ou credencial de armazenamento.

    Como navegar até o objeto depende do objeto. Catálogos, esquemas e o conteúdo dos esquemas (como tabelas e volumes) podem ser selecionados no painel Catálogo à esquerda. Você pode encontrar outros objetos, como locais externos ou compartilhamentos Delta Sharing, clicando no ícone de engrenagem. ícone de engrenagem acima do painel Catálogo e selecionando a categoria de objeto do menu.

    Para a maioria dos objetos, o proprietário será exibido na guia Visão geral da página de detalhes do objeto. Para alguns objetos, como locais externos, ele será exibido na parte superior da página de detalhes do objeto.

  3. Clique no ícone de edição ícone Editar ao lado de Proprietário.

  4. Procure e selecione um grupo, usuário ou entidade de serviço.

  5. Clique em Salvar.

SQL

Execute o comando SQL a seguir em um notebook ou editor de consultas SQL. Substitua os valores de espaço reservado:

  • <securable-type>: o tipo de objeto protegível, como CATALOG ou TABLE. METASTORE não tem suporte como um objeto protegível neste comando.
  • <securable-name>: o nome do protegível. Se estiver modificando um esquema ou o conteúdo de um esquema, será necessário usar o namespace completo de três níveis (catalog.schema.object), a menos que já tenha especificado o catálogo e/ou esquema pai.
  • <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.
ALTER <securable-type> <securable-name> OWNER TO <principal>;

Por exemplo, para transferir a propriedade da tabela orders para o grupo accounting:

ALTER TABLE mycatalog.myschema.orders OWNER TO `accounting`;