Conceitos do modelo de permissõesUnity Catalog
Esta página explica os conceitos fundamentais do modelo de permissões Unity Catalog , incluindo o modelo de objetos, privilégios, propriedade e herança.
Para uma referência geral de todos os privilégios Unity Catalog , consulte PrivilégiosUnity Catalog e objetos protegíveis. Para obter instruções sobre como conceder e revogar privilégios, consulte Exibir, conceder e revogar privilégios.
Objetos protegíveis
No Unity Catalog, os dados e metadados residem em um contêiner de nível superior chamado metastore. Dentro deste metastore, os dados são representados como objetos em um namespace de três níveis: catalog.schema.table. Essa estrutura hierárquica também fornece a base para o controle de acesso no Unity Catalog.

Todos os objetos nessa hierarquia são objetos protegíveis . O controle de acesso no Unity Catalog funciona concedendo privilégios, como SELECT, MODIFY ou USE SCHEMA, nesses objetos protegíveis. Este modelo proporciona um controle preciso sobre quem pode acessar e gerenciar dados em toda a sua organização.
Para obter uma lista completa dos objetos protegíveis e os privilégios aplicáveis a cada um, consulte Privilégios e objetos protegíveisUnity Catalog.
Objetos de contêiner
Alguns objetos protegíveis no Unity Catalog são objetos contêineres , o que significa que contêm objetos filhos dentro da hierarquia. Os objetos contêineres desempenham um papel especial no modelo de permissões, pois os privilégios concedidos a eles podem afetar seus filhos por meio de herança.
Os seguintes são objetos contêineres no Unity Catalog:
- Catálogos: O nível superior do espaço de nomes de três níveis. Os catálogos contêm esquemas como filhos diretos.
- Esquemas: O nível intermediário do espaço de nomes de três níveis. Os esquemas contêm tabelas, visualizações, volumes e funções como filhos diretos.
Os objetos contêineres possuem diversas características importantes:
Característica | Descrição |
|---|---|
Herança de privilégios | Ao conceder um privilégio a um objeto contêiner, esse privilégio se aplica automaticamente a todos os objetos filhos atuais e futuros. Por exemplo, conceder |
Privilégios de utilização | O acesso a objetos filhos requer o privilégio |
Capacidade de gerenciar objetos filhos | Ao possuir um objeto contêiner, você automaticamente obtém a capacidade de gerenciar todos os objetos filhos, mesmo que não seja o proprietário direto desses filhos. Ver Propriedade. |
Privilégios de criação | Os objetos de contêiner suportam privilégios que permitem aos usuários criar objetos filhos dentro deles, como |
Objetos que não são contêineres, como tabelas, visualizações, volumes e funções, não contêm objetos filhos.
Privilégios
Os privilégios determinam quais ações um usuário ou grupo pode executar em um objeto protegível. Os privilégios comuns incluem:
SELECTLer dados de tabelas ou visualizações.MODIFYEscreva dados em tabelas ou visualizações.USE CATALOGAcessar um catálogo (requer privilégios adicionais para trabalhar com objetos filhos)USE SCHEMAAcessar um esquema (requer privilégios adicionais para trabalhar com objetos filhos)CREATE TABLECriar tabelas dentro de um esquema
Um usuário ou grupo deve receber explicitamente a permissão para executar uma ação. Unity Catalog nega o acesso por default.
As seções a seguir descrevem privilégios especiais importantes no Databricks. Para obter uma referência completa de todos os privilégios, consulte PrivilégiosUnity Catalog e objetos protegíveis.
Privilégios de utilização
USE CATALOG e USE SCHEMA são privilégios de uso. Geralmente, são necessários privilégios de uso para interagir com um objeto e seus objetos filhos na hierarquia.
Para trabalhar com qualquer objeto em um catálogo, você precisa do privilégio USE CATALOG no catálogo. Para trabalhar com qualquer objeto em um esquema, você precisa do privilégio USE SCHEMA no esquema.
Por exemplo, para executar a maioria das operações em tabelas, visualizações, volumes ou funções, você precisa de:
USE CATALOGno catálogo principalUSE SCHEMAno esquema pai- O privilégio específico para as operações (como
SELECT,MODIFYouEXECUTE)
Os três são obrigatórios. Ter apenas o privilégio SELECT em uma tabela não é suficiente para lê-la se você não tiver USE CATALOG ou USE SCHEMA em seus objetos pai.
Os privilégios de utilização fornecem um importante mecanismo de controle de acesso para administradores de nível superior. Por exemplo, mesmo que o proprietário de uma tabela queira compartilhar sua tabela com outros usuários, esses usuários não podem acessar a tabela sem os privilégios USE CATALOG e USE SCHEMA nos objetos pai. Como apenas os proprietários do catálogo e do esquema ou os usuários com o privilégio MANAGE podem conceder esses privilégios de uso, isso impede que os proprietários da tabela concedam acesso fora dos limites aprovados.
A tabela a seguir mostra as operações comuns e as permissões necessárias para cada uma delas:
Operação | Privilégios necessários |
|---|---|
Ler dados de uma tabela |
|
Escrever dados em uma tabela |
|
Criar um esquema em um catálogo |
|
Criar uma tabela em um esquema |
|
Executar uma função |
|
Ler arquivos de um volume |
|
ComportamentoALL PRIVILEGES
ALL PRIVILEGES Implica todos os privilégios aplicáveis a um tipo de objeto específico. Aqui, "implica" significa que os privilégios são concedidos implicitamente, e o Databricks não concede explicitamente cada privilégio individual. Por exemplo:
ALL PRIVILEGESem uma tabela implicaSELECT,MODIFYeAPPLY TAG.ALL PRIVILEGESem um volume implicaREAD VOLUME,WRITE VOLUMEeAPPLY TAG.ALL PRIVILEGESTer acesso a um esquema implica ter acesso a todos os privilégios em nível de esquema.ALL PRIVILEGESTer acesso a um catálogo implica ter todos os privilégios de nível de catálogo.
Quando você executa um comando SHOW GRANTS para um usuário com ALL PRIVILEGES, apenas ALL PRIVILEGES é retornado, não os privilégios implícitos individuais como SELECT ou MODIFY.
Para evitar exfiltração acidental de dados ou escalonamento de privilégios, ALL PRIVILEGES não inclui os privilégios EXTERNAL USE SCHEMA, EXTERNAL USE LOCATION ou MANAGE .
Quando ALL PRIVILEGES é revogado, tanto a concessão ALL PRIVILEGES quanto quaisquer privilégios individuais implícitos por ela são removidos. Os privilégios EXTERNAL USE SCHEMA, EXTERNAL USE LOCATION e MANAGE não são afetados.
Para manter a compatibilidade com versões anteriores, ALL PRIVILEGES é avaliado no momento em que as verificações de permissões são feitas. Isso significa que, à medida que o Databricks lança novos privilégios e objetos protegíveis, uma concessão ALL PRIVILEGES existente inclui automaticamente quaisquer novos privilégios aplicáveis ao objeto protegível e a todos os objetos filhos novos e existentes.
O privilégio MANAGE
O privilégio MANAGE permite que os usuários gerenciem privilégios, transfiram a propriedade e excluam um objeto sem serem o proprietário. Para exercer esses privilégios, os usuários com MANAGE ainda precisam de privilégios de uso no nível do objeto e de todos os seus objetos pai. Por exemplo, para exercer o privilégio MANAGE em um esquema, você também precisa de USE SCHEMA no esquema e USE CATALOG no catálogo pai.
Usuários com MANAGE não recebem automaticamente todos os privilégios no objeto. Cada privilégio específico deve ser concedido a eles separadamente. Usuários com MANAGE podem conceder explicitamente a si mesmos esses privilégios.
Se você conceder a um usuário o privilégio MANAGE em um objeto contêiner, esse usuário também receberá privilégios MANAGE em todos os objetos filhos. Por exemplo, conceder o privilégio MANAGE em um catálogo também concede explicitamente MANAGE em todos os esquemas e tabelas filhos. Esse comportamento é consistente com a herança de privilégios no Unity Catalog.
O privilégio BROWSE
O privilégio BROWSE é uma permissão especial que permite aos usuários descobrir e view metadados sobre objetos sem conceder acesso aos dados subjacentes. Usuários com BROWSE podem:
- Verifique se o objeto existe.
- Veja o nome, a descrição e tags
- Solicitar acesso a ele
BROWSE Só pode ser concedido ao nível do catálogo. BROWSE permite descobrir e view todos os objetos dentro desse catálogo, mas não aparecerá explicitamente como um privilégio herdado ao visualizar permissões em esquemas e objetos filhos no Explorador de Catálogo.
Usuários com BROWSE não precisam de privilégios de uso como USE CATALOG ou USE SCHEMA para descobrir e view metadados.
A Databricks recomenda conceder BROWSE nos catálogos ao grupo All account users para tornar os dados detectáveis em toda a sua organização. Isso permite que os usuários encontrem dados e solicitem acesso sem exigir que os administradores concedam permissões antecipadamente.
Propriedade
Todo objeto que pode ser protegido no Unity Catalog tem um proprietário. O proprietário pode ser um usuário, uma entidade de serviço ou um grupo. O indivíduo que cria um objeto torna-se seu proprietário inicial.
O conceito de propriedade tem uma conotação especial no Unity Catalog. Os proprietários dos objetos podem executar automaticamente todas as funcionalidades nos objetos que possuem. No entanto, o Databricks não concede explicitamente o privilégio ALL PRIVILEGES ao proprietário. Isso significa que você não verá ALL PRIVILEGES retornado quando executar um comandoSHOW GRANTS.
A propriedade não é herdada por instâncias inferiores no Unity Catalog. No entanto, os proprietários dos objetos têm automaticamente a capacidade de gerenciar todos os objetos filhos. Por exemplo, se você possui um catálogo, você não possui automaticamente os esquemas filhos dentro do catálogo, mas pode gerenciar todos os esquemas filhos. Assim como os proprietários têm todas as capacidades em seu objeto sem ter explicitamente ALL PRIVILEGES, o Databricks também não concede explicitamente o privilégio MANAGE neste caso.
Os proprietários dos objetos podem realizar outras operações importantes no objeto, incluindo conceder e revogar permissões, transferir a propriedade e excluir o objeto.
Em resumo, o proprietário de um objeto pode fazer o seguinte:
Capacidade | Descrição |
|---|---|
Todas as capacidades do objeto | Os proprietários têm automaticamente todas as funcionalidades sobre o objeto que possuem. Isso é funcionalmente o mesmo que ter |
objetos filhos | Os proprietários obtêm automaticamente a capacidade de gerenciar todos os objetos filhos. Isso é funcionalmente o mesmo que ter o privilégio |
Conceder e revogar permissões | Os proprietários podem conceder e revogar privilégios sobre o objeto para usuários e grupos. |
Transferir a propriedade | Os proprietários podem transferir a propriedade de seu objeto para outro titular. |
Soltar objetos | Os proprietários podem excluir os objetos que possuem. |
Para obter mais informações sobre propriedade e como transferi-la, consulte Gerenciar propriedade de objetos Unity Catalog.
Propriedade versus privilégio MANAGE
O privilégio MANAGE concede a um usuário a capacidade de conceder e revogar privilégios no objeto. Isso não concede ao usuário todos os privilégios sobre o objeto. No entanto, os usuários com MANAGE podem conceder explicitamente a si mesmos privilégios de acesso a dados, como SELECT.
Em contrapartida, os proprietários dos objetos têm todas as funcionalidades em seus objetos por default. Como a propriedade não é herdada automaticamente para os objetos filhos, os proprietários ainda precisam de concessões explícitas nesses objetos filhos.
Usuários com o privilégio MANAGE requerem a permissão de uso apropriada no nível do objeto, se aplicável, e em todos os objetos contêineres pai. Por exemplo, para exercer o privilégio MANAGE em um esquema, você precisa de USE SCHEMA no esquema e USE CATALOG no catálogo pai. Para conceder permissões em uma tabela, você deve ter MANAGE na tabela, USE CATALOG no catálogo pai e USE SCHEMA no esquema pai.
A tabela a seguir resume as key diferenças entre propriedade e o privilégio MANAGE :
Capacidade | Proprietário |
|
|---|---|---|
Todas as capacidades do objeto | Sim, todas as funcionalidades estão implícitas . Isso é diferente de ter explicitamente | Não, os privilégios devem ser concedidos separadamente. Usuários com |
Conceder e revogar privilégios sobre o objeto | Sim | Sim |
Transferir a propriedade | Sim | Sim |
Solte o objeto | Sim | Sim |
Capacidade de gerenciar objetos filhos | Sim, as capacidades de gerenciamento em objetos filhos estão implícitas . Ver Propriedade. | Sim, o privilégio |
Requer privilégios de utilização. | Não | Sim, requer os privilégios |
Número de diretores | Apenas uma entidade principal (usuário, entidade de serviço ou grupo) | Pode ser concedido a vários titulares. |
Para evitar a escalada acidental de privilégios, o privilégio ALL PRIVILEGES não inclui o privilégio MANAGE .
Herança de privilégios
A herança de privilégios é um recurso key do modelo de permissões Unity Catalog . Ao conceder um privilégio a um objeto pai, esse privilégio se aplica automaticamente a todos os objetos filhos atuais e futuros. Isso simplifica o gerenciamento de acesso, reduzindo o número de concessões individuais que você precisa fazer.
Os privilégios são herdados de cima para baixo na hierarquia do modelo de objetos:
- Um privilégio concedido em um catálogo aplica-se a todos os esquemas nesse catálogo, bem como a todas as tabelas, visualizações, volumes e funções nesses esquemas.
- Um privilégio concedido em um esquema se aplica a todas as tabelas, visualizações, volumes e funções desse esquema.
Por exemplo, se você conceder a um usuário o privilégio SELECT em um catálogo, esse usuário poderá ler todas as tabelas e visualizações nesse catálogo (com os privilégios de uso USE CATALOG e USE SCHEMA apropriados).
Os privilégios concedidos em um metastore não são herdados pelos objetos filhos. As concessões de nível de metastore controlam operações com escopo de metastore, como CREATE CATALOG e CREATE EXTERNAL LOCATION, não o acesso a dados dentro do metastore.
A propriedade não é herdada por instâncias inferiores no Unity Catalog. Como proprietário de um objeto, você recebe automaticamente todos os privilégios referentes apenas a esse objeto. Você não assume automaticamente a propriedade de objetos filhos criados sob o seu objeto. No entanto, você obtém automaticamente o privilégio MANAGE em todos os objetos filhos novos e existentes.
Exemplos de herança
Suponha que você conceda SELECT, USE CATALOG e USE SCHEMA no nível do catálogo ao grupo finance_team :
GRANT USE CATALOG, USE SCHEMA, SELECT ON CATALOG sales TO finance_team;
Esta concessão permite ao grupo finance_team :
- Acesse o catálogo
sales - Acesse todos os esquemas no catálogo.
- Leia os dados de todas as tabelas atuais e futuras e visualize-os no catálogo.
Suponha que você conceda CREATE TABLE, USE CATALOG e USE SCHEMA no nível do catálogo ao grupo data_engineers :
GRANT USE CATALOG, USE SCHEMA, CREATE TABLE ON CATALOG analytics TO data_engineers;
Esta concessão permite ao grupo data_engineers :
- Acesse o catálogo
analytics - Acesse todos os esquemas no catálogo.
- Crie tabelas em qualquer esquema atual ou futuro no catálogo.
Para obter instruções sobre como conceder e revogar privilégios, consulte Exibir, conceder e revogar privilégios.