Controle de acesso¶
Esta seção fornece informações sobre como funciona o controle de acesso para o Snowflake Open Catalog.
O Open Catalog usa um modelo de controle de acesso baseado em funções (RBAC) no qual o administrador do Open Catalog atribui privilégios de acesso às funções de catálogo e, em seguida, concede acesso a recursos para entidades de serviço, atribuindo funções de catálogo às funções de entidade.
Estes são os principais conceitos para entender o controle de acesso no Open Catalog:
Objeto protegível
Função principal
Função de catálogo
Privilégio
Objeto protegível¶
Um objeto protegível é um objeto ao qual o acesso pode ser concedido. O Open Catalog possui os seguintes objetos protegíveis:
Catálogo
Namespace
Tabela Iceberg
Exibição
O modelo RBAC para o Open Catalog é detalhado, de modo que é possível conceder privilégios em todo o catálogo ou em um namespace, tabela ou exibição dentro do catálogo. Se você estiver concedendo privilégios em um namespace, você tem a opção de também proteger as tabelas agrupadas sob ele e quaisquer namespaces filho ou tabelas aninhadas sob ele.
Função principal¶
Uma função de entidade é um recurso no Open Catalog que você pode usar para agrupar logicamente os principais serviço do Open Catalog e conceder privilégios em objetos protegíveis.
O Open Catalog oferece suporte a um relacionamento de muitos para um entre entidades de serviço e funções de entidade. Por exemplo, para conceder os mesmos privilégios a várias entidades de serviço, você pode conceder uma única função de entidade a essas entidades de serviço. Uma entidade de serviço pode receber uma função de entidade. Ao registrar uma conexão de serviço, o administrador do Open Catalog especifica a função de entidade concedida à entidade do serviço.
Não é possível conceder privilégios diretamente a uma função de entidade. Em vez disso, você configura permissões de objeto no nível de função de catálogo e, em seguida, concede funções de catálogo a uma função de entidade.
A tabela a seguir mostra exemplos de funções de entidade que você possa configurar no Open Catalog:
Nome da função de entidade |
Descrição |
---|---|
Data_engineer |
Uma função concedida a várias entidades de serviço para executar trabalhos de engenharia de dados. |
Data_scientist |
Uma função concedida a várias entidades de serviço para executar ciência de dados ou trabalhos de AI. |
Função de catálogo¶
Uma função de catálogo pertence a um recurso de catálogo específico no Open Catalog e especifica um conjunto de permissões para ações no catálogo ou objetos no catálogo, como namespaces ou tabelas de catálogo. É possível criar uma ou mais funções de catálogo para um catálogo.
Você concede privilégios a uma função de catálogo e, em seguida, concede a função de catálogo a uma função de entidade para conceder os privilégios a uma ou mais entidades de serviço.
Observação
Se você atualizar os privilégios concedidos a uma entidade de serviço, as atualizações não entrarão em vigor por até uma hora. Isso significa que se você revogar ou conceder alguns privilégios para um catálogo, os privilégios atualizados não entrarão em vigor em nenhuma entidade de serviço com acesso a esse catálogo por até uma hora.
O Open Catalog também oferece suporte a um relacionamento muitos para muitos entre funções de catálogo e funções de entidade. Você pode conceder a mesma função de catálogo a uma ou mais funções de entidade. Da mesma forma, uma função de entidade pode receber uma ou mais funções de catálogo.
A tabela a seguir exibe exemplos de funções de catálogo que você pode configurar no Open Catalog:
Exemplo de função de catálogo |
Descrição |
---|---|
Administradores de catálogo |
Uma função que recebeu vários privilégios para emular acesso total ao catálogo. |
Leitores de catálogo |
Uma função que recebeu privilégios somente leitura para tabelas no catálogo. |
Contribuidor do catálogo |
Uma função que recebeu privilégios de acesso de leitura e gravação para todas as tabelas que pertencem ao catálogo. |
Funções do usuário¶
Um usuário é alguém que efetua login na interface da Web do Open Catalog para gerenciar a conta do Open Catalog. Entretanto, antes que um usuário possa gerenciar a conta, ele deve receber pelo menos uma função de usuário. As funções de usuário disponíveis para serem concedidas a um usuário são administrador de serviço e administrador de catálogo.
Função de administrador de serviço¶
A função de administrador de serviço permite que um usuário gerencie a conta inteira, com algumas exceções.
Permissões concedidas¶
Um usuário com privilégios de administrador de serviço é um administrador de serviço. Um administrador de serviço pode executar as seguintes tarefas na conta:
Criar conexões de serviço
Usar políticas de rede.
Gerenciar usuários: Criar e remover usuários, conceder funções a usuários e revogar funções de usuários.
Criar catálogos e gerenciar catálogos criados por ele.
Quando um administrador de serviço cria um catálogo, ele também recebe automaticamente a função de administrador de catálogo no catálogo. O administrador de serviço pode fazer o seguinte em um catálogo no qual ele tem privilégios de administrador de catálogo:
Conceder a outro usuário a função de administrador do catálogo. Como resultado, ambos os usuários podem acessar o catálogo.
Revogar seus próprios privilégios de administrador de catálogo, perdendo assim o acesso ao catálogo. No entanto, antes de revogar seus privilégios de administrador de catálogo, eles devem primeiro conceder a outro usuário privilégios de administrador de catálogo para esse catálogo.
Permissões não concedidas¶
Um usuário com privilégios de administrador de serviço não pode executar as seguintes tarefas na conta:
Acessar ou gerenciar um catálogo que não foi criado por ele.
Conceder privilégios de administrador de catálogo a um catálogo que o administrador de serviço não criou.
Função de administrador de catálogo¶
A função de administrador de catálogo permite que um usuário gerencie um catálogo na conta. A função de administrador de catálogo deve ser concedida a cada catálogo individual.
Permissões concedidas¶
A função de administrador de catálogo concede ao usuário permissões para acessar e gerenciar um catálogo, da seguinte forma:
Acesse o catálogo.
Crie namespaces no catálogo.
Crie uma função de catálogo no catálogo e conceda privilégios a ela.
Conceda uma função de catálogo a uma função de entidade, que concede à entidade de serviço os privilégios concedidos à função de catálogo.
Permissões não concedidas¶
Um usuário com apenas privilégios de administrador de catálogo não pode executar as seguintes tarefas na conta:
Criar uma conexão de serviço.
Acessar ou gerenciar catálogos para os quais não foi concedida a função de administrador de catálogo.
Criar ou remover um catálogo.
Usar políticas de rede.
Gerenciar usuários.
Modelo RBAC¶
O diagrama a seguir ilustra o modelo RBAC usado pelo Open Catalog. Para cada catálogo, o administrador do catálogo Open Catalog atribui privilégios de acesso às funções do catálogo e, em seguida, concede às entidades de serviço acesso aos recursos atribuindo funções de catálogo às funções de entidade. O Open Catalog oferece suporte a um relacionamento de muitos para um entre entidades de serviço e funções de entidade.
Também é possível conceder privilégios de controle de acesso no nível de tabela ou namespace. Por exemplo, o diagrama a seguir descreve a concessão de privilégios em um namespace e tabela dentro do catálogo.
Privilégios de controle de acesso¶
Esta seção descreve os privilégios disponíveis no modelo de controle de acesso do Open Catalog. Privilégios são concedidos a funções de catálogo, funções de catálogo são concedidas a funções de entidade e funções de entidade são concedidas a entidades de serviço para especificar as operações que as entidades de serviço podem executar em objetos no Open Catalog.
Para conceder o conjunto completo de privilégios (descartar, listar, ler, gravar etc.) em um objeto, é possível usar a opção privilégio total.
Privilégios de catálogo¶
Privilégio |
Descrição |
---|---|
CATALOG_MANAGE_CONTENT |
Permite o gerenciamento completo do conteúdo do catálogo. Este privilégio abrange os seguintes privilégios:
|
CATALOG_MANAGE_METADATA |
Permite o gerenciamento completo do catálogo, de funções de catálogo, de namespaces e de tabelas. |
CATALOG_READ_PROPERTIES |
Permite listar catálogos e ler propriedades do catálogo. |
CATALOG_WRITE_PROPERTIES |
Permite configurar as propriedades do catálogo. |
NAMESPACE_CREATE |
Permite a criação de um namespace em um catálogo. |
NAMESPACE_DROP |
Permite remover o namespace do catálogo. |
NAMESPACE_FULL_METADATA |
Concede todos os privilégios de namespace. |
NAMESPACE_LIST |
Permite listar qualquer objeto no namespace, incluindo namespaces e tabelas aninhados. |
NAMESPACE_READ_PROPERTIES |
Habilita a leitura de todas as propriedades do namespace. |
NAMESPACE_WRITE_PROPERTIES |
Permite configurar propriedades de namespace. |
TABLE_CREATE |
Permite registrar uma tabela no catálogo. |
TABLE_DROP |
Permite descartar uma tabela do catálogo. |
TABLE_FULL_METADATA |
Concede todos os privilégios de tabela, exceto TABLE_READ_DATA e TABLE_WRITE_DATA, que precisam ser concedidos individualmente. |
TABLE_LIST |
Permite listar todas as tabelas no catálogo. |
TABLE_READ_DATA |
Permite a leitura de dados da tabela recebendo credenciais de armazenamento somente leitura de curta duração do catálogo. |
TABLE_READ_PROPERTIES |
Concede propriedades de leitura da tabela. |
TABLE_WRITE_DATA |
Permite gravar dados na tabela recebendo credenciais de armazenamento de leitura+gravação de curta duração do catálogo. |
TABLE_WRITE_PROPERTIES |
Habilita a configuração de propriedades para a tabela. |
VIEW_CREATE |
Permite registrar uma exibição no catálogo. |
VIEW_DROP |
Permite descartar uma exibição do catálogo. |
VIEW_FULL_METADATA |
Concede todos os privilégios de exibição. |
VIEW_LIST |
Permite listar todas as exibições no catálogo. |
VIEW_READ_PROPERTIES |
Habilita a leitura de todas as propriedades de exibição. |
Privilégios de namespace¶
Privilégio |
Descrição |
---|---|
CATALOG_MANAGE_CONTENT |
Permite o gerenciamento completo do conteúdo do namespace, de todas as tabelas agrupadas sob ele e de todos os namespaces e tabelas aninhados sob o namespace, se aplicável. O privilégio não é concedido a todo o catálogo. Este privilégio abrange os seguintes privilégios:
|
CATALOG_MANAGE_METADATA |
Permite o gerenciamento completo do namespace, funções de catálogo e quaisquer tabelas agrupadas sob ele ou quaisquer namespaces ou tabelas filho aninhados sob ele. |
NAMESPACE_CREATE |
Permite criar um namespace filho a partir do namespace. |
NAMESPACE_DROP |
Permite remover o namespace do catálogo. |
NAMESPACE_FULL_METADATA |
Concede todos os privilégios de namespace no namespace. |
NAMESPACE_LIST |
Permite listar qualquer objeto no namespace, incluindo namespaces e tabelas aninhados. |
NAMESPACE_READ_PROPERTIES |
Habilita a leitura de todas as propriedades do namespace. |
NAMESPACE_WRITE_PROPERTIES |
Permite configurar propriedades de namespace. |
TABLE_CREATE |
Permite registrar uma tabela com o namespace. |
TABLE_DROP |
Permite remover uma tabela do namespace. |
TABLE_FULL_METADATA |
Concede todos os privilégios de tabela para tabelas agrupadas no namespace, exceto TABLE_READ_DATA e TABLE_WRITE_DATA, que precisam ser concedidos individualmente. |
TABLE_LIST |
Permite listar todas as tabelas no namespace. |
TABLE_READ_DATA |
Permite a leitura de dados de qualquer tabela agrupada no namespace, recebendo credenciais de armazenamento somente leitura de curta duração do catálogo. |
TABLE_READ_PROPERTIES |
Habilita as propriedades de leitura de qualquer tabela agrupada sob o namespace. |
TABLE_WRITE_DATA |
Permite gravar dados em qualquer tabela agrupada no namespace, recebendo credenciais de armazenamento de leitura+gravação de curta duração do catálogo. |
TABLE_WRITE_PROPERTIES |
Permite configurar propriedades para qualquer tabela agrupada sob o namespace. |
VIEW_CREATE |
Permite registrar uma exibição com o namespace. |
VIEW_DROP |
Permite descartar uma exibição do namespace. |
VIEW_FULL_METADATA |
Concede todos os privilégios de exibição para todas as exibições no namespace. |
VIEW_LIST |
Permite listar todas as exibições no namespace. |
VIEW_READ_PROPERTIES |
Habilita a leitura de todas as propriedades de exibição para todas as exibições no namespace. |
VIEW_WRITE_PROPERTIES |
Permite configurar propriedades de exibição para qualquer exibição no namespace. |
Privilégios de tabela¶
Privilégio |
Descrição |
---|---|
TABLE_DROP |
Permite descartar a tabela do catálogo. |
TABLE_FULL_METADATA |
Concede todos os privilégios de tabela, exceto TABLE_READ_DATA e TABLE_WRITE_DATA, que precisam ser concedidos individualmente. |
TABLE_LIST |
Permite listar todas as tabelas no catálogo. |
TABLE_READ_DATA |
Permite a leitura de dados da tabela recebendo credenciais de armazenamento somente leitura de curta duração do catálogo. |
TABLE_READ_PROPERTIES |
Concede propriedades de leitura da tabela. |
TABLE_WRITE_DATA |
Permite gravar dados na tabela recebendo credenciais de armazenamento de leitura+gravação de curta duração do catálogo. |
TABLE_WRITE_PROPERTIES |
Habilita a configuração de propriedades para a tabela. |
VIEW_READ_PROPERTIES |
Habilita a leitura de todas as propriedades de exibição. |
Privilégios de exibição¶
Privilégio |
Descrição |
---|---|
VIEW_CREATE |
Permite registrar uma exibição no catálogo. |
VIEW_DROP |
Permite descartar uma exibição do catálogo. |
VIEW_LIST |
Permite listar todas as exibições no catálogo. |
VIEW_READ_PROPERTIES |
Habilita a leitura de todas as propriedades de exibição. |
VIEW_WRITE_PROPERTIES |
Permite configurar as propriedades de exibição. |
VIEW_FULL_METADATA |
Concede todos os privilégios de exibição. |
Exemplo de RBAC¶
O diagrama a seguir ilustra como RBAC funciona no Open Catalog no nível do catálogo e inclui os seguintes usuários:
Alice: Uma administradora de serviço que se inscreve no Open Catalog. Alice pode criar entidades de serviço. Ela também pode criar catálogos e namespaces e configurar o controle de acesso para recursos do Open Catalog.
Observação
A entidade de serviço para Alice não está visível na interface do usuário do Open Catalog.
Bob: Um engenheiro de dados que usa o Snowpipe Streaming (no Snowflake) e conexões Apache Spark para interagir com o Open Catalog.
Alice criou uma entidade de serviço para Bob. Foi concedida a função de entidade Data_engineer, que por sua vez recebeu as seguintes funções de catálogo: colaborador de catálogo e administrador de dados (para os catálogos de zona Silver e Gold no diagrama a seguir).
A função de colaborador do catálogo concede permissão para criar namespaces e tabelas no catálogo da zona Bronze.
As funções de administrador de dados concedem direitos administrativos completos ao catálogo da zona Silver e ao catálogo da zona Gold.
Mark: Um cientista de dados que usa os serviços da AI Snowflake para interagir com o Open Catalog.
Alice criou uma entidade de serviço para Mark. Foi concedida a função de entidade Data_scientist, que por sua vez recebeu a função de catálogo nomeada Catalog reader.
A função de leitor de catálogo concede acesso somente leitura para um catálogo nomeado catálogo da zona Gold.