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 FUNCTION
e 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.
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, comoCATALOG
ouTABLE
. Ver Objetos protegíveis -
<securable-name>
: O nome do securable. Se o tipo protegível forMETASTORE
, 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
- No seu espaço de trabalho do Azure Databricks, clique no ícone de Catálogo Catálogo.
- Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
- 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
- No seu espaço de trabalho do Azure Databricks, clique no ícone do Catálogo .
- Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
- 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
- No seu espaço de trabalho do Azure Databricks, clique Catálogo.
- Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
- Vá para a guia Permissões .
- Clique Conceder.
- Insira o endereço de e-mail de um usuário ou o nome de um grupo.
- Selecione as permissões a serem concedidas.
- 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
- No seu espaço de trabalho do Azure Databricks, clique Catálogo.
- Selecione o objeto, como um catálogo, esquema, tabela ou exibição.
- Vá para a guia Permissões .
- Selecione um privilégio concedido a um usuário, entidade de serviço ou grupo.
- Clique Revogar.
- 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
- No seu espaço de trabalho do Azure Databricks, clique Catálogo.
- Ao lado do rótulo da página do
Catalog Explorer, clique no ícone ao lado do nome do metastore. - 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
- No seu espaço de trabalho do Azure Databricks, clique .
- Ao lado do rótulo da página do
Catalog Explorer, clique no ícone ao lado do nome do metastore. - Na guia Permissões , clique em Conceder .
- Insira o endereço de e-mail de um usuário ou o nome de um grupo.
- Selecione as permissões a serem concedidas.
- Clique em OK.
SQL
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
- No seu espaço de trabalho do Azure Databricks, clique no ícone do Catálogo Catálogo.
- Ao lado do rótulo da página do
Catalog Explorer, clique no ícone ao lado do nome do metastore. - Na guia Permissões, selecione um utilizador ou grupo e clique em Revogar.
- 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 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.