gerenciar privilégios no Unity Catalog

Este artigo explica como controlar o acesso a dados e outros objetos em Unity Catalog. Para saber como esse modelo difere do controle de acesso no Hive metastore, consulte Work with Unity Catalog and the legacy Hive metastore.

Quem pode gerenciar os privilégios?

Inicialmente, os usuários não têm acesso aos dados em um metastore. Databricks account Administradores, administradores do workspace e administradores do metastore têm privilégios do default para gerenciar o Unity Catalog. Consulte Privilégios de administrador no Unity Catalog.

Todos os objetos protegíveis no Unity Catalog têm um proprietário. Os proprietários do objeto têm todos os privilégios nesse objeto, incluindo a capacidade de conceder privilégios a outros principais. Consulte gerenciar a propriedade do objeto Unity Catalog .

Os privilégios podem ser concedidos por um administrador do metastore, pelo proprietário de um objeto ou pelo proprietário do catálogo ou esquema que contém o objeto. account os administradores também podem conceder privilégios diretamente em um metastore.

Privilégios do catálogo do espaço de trabalho

Se o seu workspace foi ativado para Unity Catalog automaticamente, o workspace é anexado a um metastore por default e um catálogo workspace é criado para o seu workspace no metastore. workspace Os administradores são os proprietários do catálogo default workspace . Como proprietários, eles podem gerenciar privilégios no catálogo workspace e em todos os objetos filhos.

Todos os usuários do workspace recebem o privilégio USE CATALOG no catálogo workspace. workspace Os usuários 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, 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 de baixo para cima. 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 dentro do catálogo ou esquema. Por exemplo, se o senhor 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 desse 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 desse objeto. Além disso, os proprietários de objetos podem conceder privilégios ao próprio objeto e a todos os seus objetos filhos. Isso significa que os proprietários de um esquema não têm automaticamente todos os privilégios nas tabelas do esquema, mas podem conceder a si mesmos privilégios nas tabelas do esquema.

Observação

Se o senhor criou seu metastore do Unity Catalog durante a visualização pública (antes de 25 de agosto de 2022), pode estar em um modelo de privilégio anterior que não é compatível com o modelo de herança atual. O senhor pode atualizar para a versão 1.0 do Privilege Model para obter a herança de privilégios. Consulte Upgrade para herança de privilégios.

Mostrar, conceder e revogar privilégios

O senhor pode gerenciar privilégios para objetos de metastore usando SQL comando, o Databricks CLI Databricks , o provedor Terraform ou o Catalog Explorer.

No comando SQL a seguir, substitua esses valores de espaço reservado:

  • <privilege-type> é um tipo de privilégio do Unity Catalog. Consulte Tipos de privilégios.

  • <securable-type>: O tipo de objeto securizável, como CATALOG ou TABLE. Consulte Objetos protegidos

  • <securable-name>: O nome do securizável. Se o tipo securizável for METASTORE, não forneça o nome securizável. Presume-se que seja o metastore anexado ao site workspace.

  • <principal> é um usuário, uma entidade de serviço (representada por seu valor applicationId) ou um grupo. Os nomes de usuários, entidades de serviço e grupos que incluam caracteres especiais devem ser colocados entre chaves ( ` ` ). Ver Principal.

Mostrar concessões em objetos em um metastore do Unity Catalog

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 do objeto.

  • Se o senhor não tiver as permissões acima, poderá view apenas suas próprias concessões no objeto.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Selecione o objeto, como um catálogo, esquema, tabela ou view.

  3. Acesse Permissions (Permissões ) tab.

Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL. O senhor pode mostrar as concessões em um principal específico ou todas as concessões em um objeto securizável.

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

Por exemplo, o comando a seguir mostra todas as concessões em um esquema chamado 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 Unity Catalog

Permissões necessárias: O senhor sempre pode view suas próprias concessões em um objeto.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Selecione o objeto, como um catálogo, esquema, tabela ou view.

  3. Acesse Permissions (Permissões ) tab. Se o senhor não for proprietário do objeto ou administrador do metastore, poderá view apenas suas próprias concessões no objeto.

Execute o seguinte comando SQL em um editor de consultas Notebook ou 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 ou o proprietário do catálogo ou esquema que contém o objeto.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Selecione o objeto, como um catálogo, esquema, tabela ou view.

  3. Acesse Permissions (Permissões ) tab.

  4. Clique em Conceder.

  5. Digite o endereço email de um usuário ou o nome de um grupo.

  6. Selecione as permissões a serem concedidas.

  7. Clique em OK.

Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL.

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

Por exemplo, o comando a seguir concede a um grupo chamado finance-team acesso para criar tabelas em um esquema chamado default com o catálogo pai chamado main:

  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 em um modelo, você deve usar GRANT ON FUNCTION. Por exemplo, para conceder ao grupo ml-team-acme o privilégio EXECUTE no modelo prod.ml_team.iris_model, você usaria:

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

Revogação de permissões em objetos em um metastore do Unity Catalog

Permissões necessárias: Administrador do metastore, o proprietário do objeto ou o proprietário do catálogo ou esquema que contém o objeto.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Selecione o objeto, como um catálogo, esquema, tabela ou view.

  3. Acesse Permissions (Permissões ) tab.

  4. Selecione um privilégio que tenha sido concedido a um usuário, entidade de serviço ou grupo.

  5. Clique em Revoke (Revogar).

  6. Para confirmar, clique em Revoke (Revogar).

Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL.

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

Por exemplo, o comando a seguir revoga o acesso de um grupo chamado finance-team para criar tabelas em um esquema chamado default com o catálogo pai chamado main:

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

Mostrar concessões em um metastore

Permissões necessárias: Administrador do Metastore ou account admin. O senhor também pode view suas próprias concessões em um metastore.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.

  3. Acesse Permissions (Permissões ) tab.

Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL. O senhor pode mostrar as 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 do Metastore ou account admin.

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.

  3. Em Permissions (Permissões ) tab, clique em Grant (Conceder).

  4. Digite o endereço email de um usuário ou o nome de um grupo.

  5. Selecione as permissões a serem concedidas.

  6. Clique em OK.

  1. Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL.

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

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

Revogação de permissões em um metastore

Permissões necessárias: Administrador do Metastore ou account admin..

  1. Em seu site Databricks workspace, clique em Ícone de catálogo Catalog.

  2. Ao lado do rótulo da página Catalog Explorer, clique no ícone ao lado do nome do metastore.

  3. Em Permissions (Permissões ) tab, selecione um usuário ou grupo e clique em Revoke (Revogar).

  4. Para confirmar, clique em Revoke (Revogar).

  1. Execute o seguinte comando SQL em um editor de consultas Notebook ou SQL.

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

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