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 ROLECREATE 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>",
)
Copy

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);
Copy