Modelo de controle de acesso à Snowflake Feature Store¶
Nota
A API do Snowflake Feature Store está disponível no pacote Snowpark ML Python (snowflake-ml-python
) v1.5.0 e posterior.
Os privilégios exigidos pela Snowflake Feature Store dependem do tipo de usuário.
Produtores podem criar e operar em exibições de recurso.
Os consumidores podem ler informações sobre exibições de recurso e entidades no repositório de recursos.
Normalmente, cada tipo de usuário terá sua própria função de banco de dados Snowflake com os privilégios necessários. As funções do repositório de recursos são configuradas mais naturalmente usando uma hierarquia de função.

Os produtores precisam dos seguintes privilégios:
CREATE DYNAMIC TABLE, CREATE TAG e CREATE VIEW no esquema do repositório de recursos
Nota
Para exibições de recurso gerenciadas pelo Snowflake (apoiadas por uma tabela dinâmica) com atualização incremental, as tabelas de origem devem ter o rastreamento de alterações habilitado, ou o usuário deve ter OWNERSHIP de uma dessas tabelas para habilitar automaticamente o rastreamento de alterações quando a exibição de recurso for criada.
CREATE TABLE e CREATE DATASET no esquema de repositório de recursos e/ou no esquema de destino ao gerar conjuntos de dados para treinamento.
OPERATE nas tabelas e tarefas dinâmicas no esquema do repositório de recursos para gerenciar as configurações de atualização da exibição de recursos.
USAGE no warehouse passado ao inicializador do repositório de recursos.
CREATE SCHEMA é opcional se o esquema do repositório de recursos já existir e os produtores tiverem privilégios de uso nele.
Todos os privilégios de consumidor listados abaixo.
Os consumidores precisam, no mínimo, dos seguintes privilégios:
USAGE no banco de dados e esquema do repositório de recursos.
SELECT e MONITOR em DYNAMIC TABLES no esquema do repositório de recursos.
SELECT e REFERENCE em exibições no esquema do repositório de recursos.
USAGE no warehouse passado ao inicializador do repositório de recursos.
Os consumidores também podem ter os seguintes privilégios para permitir que eles usem os dados do repositório de recursos:
CREATE TABLE e CREATE DATASET no esquema de repositório de recursos e/ou no esquema de destino para gerar conjuntos de dados para treinamento.
SELECT e REFERENCE em tabelas no repositório de recursos ou em quaisquer esquemas que contenham conjuntos de dados gerados.
USAGE em DATASETs no esquema do repositório de recursos ou em quaisquer esquemas que contenham conjuntos de dados gerados.
Com vários repositórios de recursos, você provavelmente terá esses dois tipos de funções para cada repositório de recursos individual ou para agrupamentos lógicos de repositórios de recursos.
Nota
Uma função com os privilégios MANAGE GRANTS
, CREATE ROLE
e CREATE SCHEMA ON DATABASE <DB>
são necessários para configurar as funções e privilégios necessários do Feature Store. Você pode usar a função interna ACCOUNTADMIN ou uma função personalizada com esses privilégios.
Configuração de controle de acesso em Python¶
A versão do pacote snowflake-ml-python
1.6.3 e posterior inclui uma API do utilitário setup_feature_store
para configurar um novo repositório de recursos com funções e privilégios de produtor e consumidor. No exemplo a seguir, preencha os nomes do banco de dados, esquema, warehouse e função de produtor e consumidor, onde indicado.
from snowflake.ml.feature_store import setup_feature_store
setup_feature_store(
session=session,
database="<FS_DATABASE_NAME>",
schema="<FS_SCHEMA_NAME>",
warehouse="<FS_WAREHOUSE>",
producer_role="<FS_PRODUCER_ROLE>",
consumer_role="<FS_CONSUMER_ROLE>",
)
Configuração de controle de acesso em SQL¶
É possível configurar manualmente as funções e privilégios da Feature Store usando os seguintes comandos SQL. Observe que no primeiro bloco, há vários comandos SET que informam ao script os nomes que você deseja usar para suas funções de produtor e consumidor, bem como os nomes do banco de dados e do esquema onde as exibições de recurso de recurso serão armazenadas. Todos esses objetos são criados se não existirem.
-- Initialize variables for usage in SQL scripts below
SET FS_ROLE_PRODUCER = '<FS_PRODUCER_ROLE>';
SET FS_ROLE_CONSUMER = '<FS_CONSUMER_ROLE>';
SET FS_DATABASE = '<FS_DATABASE_NAME>';
SET FS_SCHEMA = '<FS_SCHEMA_NAME>';
SET FS_WAREHOUSE = '<FS_WAREHOUSE>';
-- Create schema
SET SCHEMA_FQN = CONCAT($FS_DATABASE, '.', $FS_SCHEMA);
CREATE SCHEMA IF NOT EXISTS IDENTIFIER($SCHEMA_FQN);
-- Create roles
CREATE ROLE IF NOT EXISTS IDENTIFIER($FS_ROLE_PRODUCER);
CREATE ROLE IF NOT EXISTS IDENTIFIER($FS_ROLE_CONSUMER);
-- Build role hierarchy
GRANT ROLE IDENTIFIER($FS_ROLE_PRODUCER) TO ROLE SYSADMIN;
GRANT ROLE IDENTIFIER($FS_ROLE_CONSUMER) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
-- Grant PRODUCER role privileges
GRANT CREATE DYNAMIC TABLE ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
GRANT CREATE VIEW ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
GRANT CREATE TAG ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
GRANT CREATE DATASET ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
GRANT CREATE TABLE ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);
-- Grant CONSUMER role privileges
GRANT USAGE ON DATABASE IDENTIFIER($FS_DATABASE) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT USAGE ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT SELECT, MONITOR ON FUTURE DYNAMIC TABLES IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT SELECT, MONITOR ON ALL DYNAMIC TABLES IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT SELECT, REFERENCES ON FUTURE VIEWS IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT SELECT, REFERENCES ON ALL VIEWS IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT USAGE ON FUTURE DATASETS IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
GRANT USAGE ON ALL DATASETS IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
-- Grant USAGE ON WAREHOUSE to CONSUMER
GRANT USAGE ON WAREHOUSE IDENTIFIER($FS_WAREHOUSE) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);