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.

Funções de entidade que receberam essa função têm permissão para criar, alterar, ler, gravar e remover tabelas no catálogo.

Leitores de catálogo

Uma função que recebeu privilégios somente leitura para tabelas no catálogo.

Funções de entidade que receberam essa função têm permissão para ler 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 de entidade que receberam essa função têm permissão para executar operações de leitura e gravação em tabelas no 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.

Diagrama que mostra o modelo RBAC para o Open Catalog.

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.

Diagrama que mostra o modelo RBAC para o Open Catalog no nível de tabela ou namespace.

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
  • TABLE_FULL_METADATA
  • NAMESPACE_FULL_METADATA
  • VIEW_FULL_METADATA
  • TABLE_WRITE_DATA
  • TABLE_READ_DATA
  • CATALOG_READ_PROPERTIES
  • CATALOG_WRITE_PROPERTIES

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
  • TABLE_FULL_METADATA
  • NAMESPACE_FULL_METADATA
  • VIEW_FULL_METADATA
  • TABLE_WRITE_DATA
  • TABLE_READ_DATA
  • CATALOG_READ_PROPERTIES
  • CATALOG_WRITE_PROPERTIES

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.

Diagrama que mostra um exemplo de como o RBAC funciona no Open Catalog.