Snowflake Feature Store-Zugriffssteuerungsmodell¶
Bemerkung
Der Snowflake Feature Store API ist im Snowpark ML Python-Paket (snowflake-ml-python
) v1.5.0 und höher verfügbar.
Die vom Snowflake Feature Store geforderten Berechtigungen hängen von der Art des Benutzers ab.
Ersteller können Feature-Ansichten erstellen und mit ihnen arbeiten.
Verbraucher können Informationen über Feature-Ansichten und Entitäten im Feature Store lesen.
Normalerweise hat jeder Typ von Benutzer eine eigene Snowflake-Datenbankrolle mit den erforderlichen Berechtigungen. Feature Store-Rollen werden am natürlichsten über eine Rollenhierarchie konfiguriert.

Die Ersteller benötigen die folgenden Berechtigungen:
CREATE DYNAMIC TABLE, CREATE TAG und CREATE VIEW für das Feature Store-Schema
Bemerkung
Für von Snowflake verwaltete Feature-Ansichten (die von einer dynamischen Tabelle unterstützt werden) mit inkrementeller Aktualisierung muss in den Quelltabellen die Änderungsverfolgung aktiviert sein, oder der Benutzer muss OWNERSHIP dieser Tabellen so einstellen, dass die Änderungsverfolgung automatisch aktiviert wird, wenn die Feature-Ansicht erstellt wird.
CREATE TABLE und CREATE DATASET für das Feature Store-Schema und/oder das Zielschema beim Generieren von Datensets für das Training.
OPERATE auf die dynamischen Tabellen und Aufgaben m Schema des Feature Stores, um die Einstellungen für die Aktualisierung der Feature-Ansicht zu verwalten.
USAGE auf das Warehouse, das an den Feature Store-Initializer übergeben wurde.
CREATE SCHEMA ist optional, wenn das Schema des Feature Stores bereits existiert und die Ersteller die Berechtigung haben, es zu verwenden.
Alle unten aufgeführten Berechtigungen für Verbraucher.
Als Verbraucher benötigen Sie mindestens die folgenden Berechtigungen:
USAGE für die Feature Store-Datenbank und das Feature Store-Schema
SELECT und MONITOR für DYNAMIC TABLES im Feature Store-Schema
SELECT und REFERENCE für Ansichten im Feature Store-Schema
USAGE für das Warehouse, das an den Feature Store-Initialisierer übergeben wurde
Verbraucher können auch über die folgenden Berechtigungen verfügen, um die Daten des Feature Stores nutzen zu können:
CREATE TABLE und CREATE DATASET für das Feature Store-Schema und/oder das Zielschema zum Generieren von Datensets für das Training.
SELECT und REFERENCE für Tabellen im Feature Store oder für jedes Schema, das generierte Datensets enthält.
USAGE on DATASETs im Feature Store-Schema oder für jedes Schema, das generierte Datensets enthält.
Wenn Sie mehrere Feature Stores haben, werden Sie wahrscheinlich diese beiden Typen von Rollen für jeden einzelnen Feature Store oder für logische Gruppierungen von Feature Stores haben.
Bemerkung
Sie benötigen eine Rolle mit den Berechtigungen MANAGE GRANTS
, CREATE ROLE
und CREATE SCHEMA ON DATABASE <DB>
, um die erforderlichen Feature Store-Rollen und -Rechte zu konfigurieren. Sie können die integrierte Rolle ACCOUNTADMIN verwenden oder eine kundenspezifische Rolle mit diesen Berechtigungen verwenden.
Einrichtung der Zugriffssteuerung in Python¶
snowflake-ml-python
-Paket ab Version 1.6.3 enthält eine setup_feature_store
-Dienstprogramm-API für die Konfiguration eines neuen Feature Store mit Rollen und Berechtigungen für Ersteller und Verbraucher. Im folgenden Beispiel geben Sie die Namen der Datenbank, des Schemas, des Warehouse und der Ersteller- und Konsumentenrolle ein, wo dies angegeben ist.
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>",
)
Zugriffssteuerung mit SQL einrichten¶
Sie können die Rollen und Berechtigungen des Feature Store mit den folgenden SQL-Befehlen manuell konfigurieren. Beachten Sie, dass es im ersten Block mehrere SET-Befehle gibt, die dem Skript die Namen mitteilen, die Sie für Ihre Ersteller- und Verbraucher-Rollen verwenden möchten, sowie die Namen der Datenbank und des Schemas, in denen die Feature-Ansichten gespeichert werden sollen. Falls diese Objekte noch nicht vorhanden sind, werden sie erstellt.
-- 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);