레지스트리¶
템플릿, 데이터 오퍼링 또는 기타 리소스를 협업에 추가하려면 먼저 *레지스트리*에 리소스를 등록해야 합니다. 레지스트리는 리소스를 저장하는 계정 수준 컨테이너입니다. 리소스가 등록된 후에는 레지스트리에 액세스할 수 있는 계정의 모든 사용자가 협업에 리소스를 추가할 수 있습니다. 레지스트리는 특정 협업에 연결되지 않지만, 레지스트리의 리소스는 해당 계정의 0개 이상의 협업에 연결할 수 있습니다.
각 Snowflake 계정은 기본 레지스트리를 지원합니다. 계정에 대한 추가 사용자 지정 레지스트리를 생성할 수 있습니다. 사용자 지정 레지스트리는 리소스에 대한 액세스를 그룹화하고 관리하는 좋은 방법입니다. 예를 들어, 판매 데이터를 위한 사용자 지정 레지스트리와 지출 데이터를 위한 다른 사용자 지정 레지스트리를 생성한 다음, RBAC 역할을 통해 적절한 사용자에게 이러한 레지스트리에 대한 액세스 권한을 부여할 수 있습니다.
레지스트리에 대한 주요 규칙은 다음과 같습니다.
각 사용자 지정 레지스트리는 단일 리소스 유형(템플릿, 데이터 오퍼링 등)을 지원합니다. 데이터 타입은 레지스트리를 생성할 때 지정됩니다. 기본 레지스트리는 모든 리소스 유형을 지원합니다.
계정에서 생성할 수 있는 사용자 지정 레지스트리 수에는 제한이 없습니다.
리소스를 등록할 때 선택적 레지스트리 이름 매개 변수를 사용하여 사용자 지정 레지스트리를 지정할 수 있습니다. 사용자 지정 레지스트리를 지정하지 않으면 리소스가 계정의 기본 레지스트리에 등록됩니다.
모든 사용자는 계정의 기본 레지스트리에 액세스할 수 있습니다. 그러나 사용자 지정 레지스트리는 처음에 생성자에게 비공개이며 추가 사용자에게는 ``GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE``을 호출하여 명시적으로 액세스 권한을 부여해야 합니다.
계정에는 동일한 리소스 유형을 저장하는 여러 레지스트리가 있을 수 있습니다.
레지스트리에는 최대 리소스 수가 없습니다.
리소스의 이름은 해당 유형의 리소스에 대해 해당 계정의 모든 레지스트리에서 고유해야 합니다. 예를 들어, 동일한 계정에 이름이
sales``인 템플릿 및 이름이 ``sales``인 데이터 오퍼링이 있을 수 있지만, 동일한 계정에서 동일하거나 동일하지 않은 레지스트리에 이름이 ``sales``인 두 개의 템플릿이 있을 수는 없습니다. 리소스 이름은 사양에서 최상위 수준 ``name값으로 정의됩니다.리소스를 협업에 연결하면 사양에 따라 리소스에 액세스할 수 있는 모든 사용자가 리소스를 볼 수 있습니다. 포함하는 레지스트리에 액세스할 필요가 없습니다.
두 개의 서로 다른 계정이 동일한 이름과 유형의 리소스를 등록하는 경우는 허용됩니다. 협업 사양에는 동일한 이름의 리소스가 표시되지만, 시스템은 의도된 리소스를 알 수 있습니다. 즉, 해당 이름의 리소스는 협업에 리소스를 추가한 계정에서 사용됩니다.
예¶
이 예제에서는 사용자 지정 레지스트리를 생성하고, 여기에 데이터 오퍼링을 등록하고, 새 역할을 통해 해당 레지스트리에 대한 읽기 액세스 권한을 부여합니다.
-- Create a custom registry that can hold data offerings.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.CREATE_REGISTRY(
'SALES',
'DATA_OFFERING'
);
-- Add a data offering to the custom registry.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_DATA_OFFERING(
'SALES',
$$
api_version: 2.0.0
spec_type: data_offering
version: v1
name: FL_SALES
datasets:
- alias: customers_1
data_object_fqn: SALES_DB.PUBLIC.FL_DATA
allowed_analyses: template_only
schema_and_template_policies:
company_name:
category: passthrough
total_sales:
category: passthrough
$$
);
-- Create a role and grant it access to the registry.
CREATE ROLE MARKETING_USERS;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE(
'READ',
'REGISTRY',
$collaboration_name,
'MARKETING_USERS'
);
-- Grant access to the registry for a user by assigning the role.
GRANT ROLE MARKETING_USERS to USER willy_loman;