Gerenciar privilégios no Catálogo do Unity
Este artigo explica como controlar o acesso a dados e objetos no Catálogo do Unity. Para saber mais sobre como esse modelo difere do controle de acesso no metastore do Hive, consulte Trabalhar com o Catálogo do Unity e o metastore herdado do Hive.
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. Consulta Gerenciar a propriedade do objeto do Catálogo do Unity.
Os privilégios podem ser concedidos por um administrador de metastore, o proprietário de um objeto ou 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 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.
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 você 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. Confira Atualizar para herança de privilégios.
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, comoCATALOG
ouTABLE
. Confira Objetos protegíveis<securable-name>
: o nome do protegível. Se o tipo protegível forMETASTORE
, 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
Permissões necessárias:
- Os administradores do Metastore, 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á exibir apenas suas próprias concessões no objeto.
Explorador do Catálogo
- No workspace do Azure Databricks, clique em
Catálogo.
- Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
- 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
- No workspace do Azure Databricks, clique em
Catálogo.
- Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
- Acesse a guia Permissões. Se você não for um proprietário do objeto ou administrador do metastore, poderá exibir apenas suas próprias concessões no objeto.
SQL
Execute o seguinte comando SQL em um notebook 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 Catálogo do Unity
Permissões necessárias: o acesso pode ser concedido por um administrador de metastore, pelo proprietário de um objeto ou pelo proprietário do catálogo ou esquema que contém o objeto.
Explorador do Catálogo
- No workspace do Azure Databricks, clique em
Catálogo.
- Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
- Acesse a guia Permissões.
- Clique em Conceder.
- Insira o endereço de email para um usuário ou o nome de um grupo.
- Selecione as permissões a serem concedidas.
- 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`;
Revogar permissões em objetos em um metastore do Catálogo do Unity
Permissões necessárias: o acesso pode ser concedido por um administrador de metastore, pelo proprietário de um objeto ou pelo proprietário do catálogo ou esquema que contém o objeto.
Explorador do Catálogo
- No workspace do Azure Databricks, clique em
Catálogo.
- Selecione o objeto, como um catálogo, um esquema, uma tabela ou uma exibição.
- Acesse a guia Permissões.
- Selecione um privilégio que tenha sido concedido a um usuário, entidade de serviço ou grupo.
- Clique em Revogar.
- 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> TO <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 TO `finance-team`;
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
- No workspace do Azure Databricks, clique em
Catálogo.
- Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.
- 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
- No workspace do Azure Databricks, clique em
Catálogo.
- Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.
- Na guia Permissões, clique em Conceder.
- Insira o endereço de email para um usuário ou o nome de um grupo.
- Selecione as permissões a serem concedidas.
- Clique em OK.
SQL
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
- No workspace do Azure Databricks, clique em
Catálogo.
- Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.
- Na guia Permissões, selecione um usuário ou grupo e clique em Revogar.
- Para confirmar, clique em Revogar.
SQL
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.