Snowflake Feature Store 액세스 제어 모델¶
참고
Snowflake Feature Store API는 Snowpark ML Python 패키지(snowflake-ml-python
) v1.5.0 이상에서 사용할 수 있습니다.
Snowflake Feature Store에 필요한 권한은 사용자 유형에 따라 달라집니다.
제작자 는 기능 뷰를 생성하고 작업할 수 있습니다.
컨슈머 는 기능 스토어에서 기능 뷰와 엔터티에 대한 정보를 읽을 수 있습니다.
일반적으로 각 사용자 유형에는 필요한 권한이 있는 고유 Snowflake 데이터베이스 역할 이 있습니다. 기능 스토어 역할은 역할 계층 구조 를 사용하여 가장 자연스럽게 구성됩니다.

작성자에게는 다음과 같은 권한이 필요합니다.
기능 스토어 스키마에 대한 CREATE DYNAMIC TABLE, CREATE TAG 및 CREATE VIEW.
참고
증분 새로 고침이 있는 Snowflake 관리 기능 뷰(동적 테이블로 지원됨)의 경우, 기능 뷰가 생성될 때 자동으로 변경 추적을 활성화 하려면 소스 테이블에 변경 추적이 활성화되어 있거나 사용자가 이러한 테이블에 대한 OWNERSHIP 권한이 있어야 합니다.
훈련을 위한 데이터 세트 생성 시 기능 스토어 스키마 및/또는 대상 스키마에 대한 CREATE TABLE 및 CREATE DATASET.
기능 보기 새로 고침 설정을 관리하기 위한 기능 스토어 스키마에서 동적 테이블 및 작업에 대한 OPERATE.
기능 스토어 이니셜라이저에 전달된 웨어하우스에 대한 USAGE.
기능 스토어 스키마가 이미 존재하고 제작자에게 사용 권한이 있는 경우 CREATE SCHEMA는 선택 사항입니다.
아래에 나열된 모든 컨슈머 권한.
컨슈머에게는 최소한 다음과 같은 권한이 필요합니다.
기능 스토어 데이터베이스 및 스키마에 대한 USAGE.
기능 스토어 스키마에서 DYNAMIC TABLES에 대한 SELECT 및 MONITOR.
기능 스토어 스키마의 뷰에 대한 SELECT 및 REFERENCE.
기능 스토어 이니셜라이저에 전달된 웨어하우스에 대한 USAGE.
컨슈머는 또한 기능 스토어 데이터를 사용할 수 있는 다음과 같은 권한을 가질 수 있습니다.
훈련을 위한 데이터 세트를 생성하기 위한 기능 스토어 스키마 및/또는 대상 스키마에 대한 CREATE TABLE 및 CREATE DATASET.
기능 스토어의 테이블 또는 생성된 데이터 세트가 포함된 스키마에 대한 SELECT 및 REFERENCE.
기능 스토어 스키마 또는 생성된 데이터 세트를 포함하는 모든 스키마의 DATASETs에 대한 USAGE.
여러 기능 스토어를 사용하는 경우 각 개별 기능 스토어 또는 기능 스토어의 논리적인 그룹에 대해 이러한 두 가지 유형의 역할이 있을 가능성이 높습니다.
참고
필요한 Feature Store 역할 및 권한을 구성하려면 MANAGE GRANTS
, CREATE ROLE
및 CREATE SCHEMA ON DATABASE <DB>
권한이 있는 역할이 필요합니다. ACCOUNTADMIN 기본 제공 역할을 사용하거나 이러한 권한이 있는 사용자 지정 역할을 사용할 수 있습니다.
Python의 액세스 제어 설정¶
snowflake-ml-python
패키지 버전 1.6.3 이상에는 생산자 및 컨슈머 역할과 권한으로 새 기능 스토어를 구성할 수 있는 setup_feature_store
유틸리티 API가 포함되어 있습니다. 다음 예에서 데이터베이스, 스키마, 웨어하우스, 작성자 및 컨슈머 역할의 이름을 표시된 곳에 입력합니다.
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>",
)
SQL의 액세스 제어 설정¶
다음 SQL 명령을 사용하여 기능 스토어 역할 및 권한을 수동으로 구성할 수 있습니다. 첫 번째 블록에는 프로듀서 및 컨슈머 역할에 사용할 이름과 기능 뷰가 저장될 데이터베이스 및 스키마의 이름을 스크립트에 알려주는 SET 명령이 여러 개 있습니다. 이러한 모든 오브젝트는 존재하지 않으면 생성됩니다.
-- 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);