注册表¶
在将模板、数据产品或其他资源添加到 Collaboration 之前,您必须先在 注册表 中注册该资源。注册表是存储资源的账户级容器。资源注册后,账户中任何可以访问注册表的人都可以将其添加到 Collaboration 中。注册表不与特定的 Collaboration 相关联,但注册表中的资源可以链接到该账户中的零个或多个 Collaboration。
每个 Snowflake 账户都支持一个默认注册表。您可以为账户创建额外的自定义注册表。自定义注册表是对资源进行分组和管理访问权限的好方法。例如,您可以创建一个用于销售数据的自定义注册表,另一个用于支出数据的自定义注册表,然后通过 RBAC 角色授予相应用户对这些注册表的访问权限。
以下是关于注册表的主要规则:
每个自定义注册表支持单一资源类型(模板、数据产品等)。数据类型在您创建注册表时指定。默认注册表支持所有资源类型。
在一个账户中,您可以创建的自定义注册表数量没有限制。
当您注册资源时,可以使用可选的注册表名称参数来指定一个自定义注册表。如果您没有指定自定义注册表,该资源将被注册到该账户的默认注册表中。
所有用户都可以访问账户中的默认注册表。然而,自定义注册表最初对创建者是专用的,必须通过调用
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE显式授予其他用户访问权限。一个账户可以有多个存储相同资源类型的注册表。
注册表没有最大资源数量限制。
在该账户中,对于该类型的资源而言,一个资源在其所有注册表中必须具有唯一的名称。例如,您可以在同一个账户中拥有一个名为
sales的模板和一个名为sales的数据产品,但不能在同一个账户的相同或不同注册表中拥有两个名为sales的模板。资源名称被定义为规范中最高层级的name值。当您将资源链接到 Collaboration 中时,任何根据规范可以访问该资源的人都可以看到它。不需要对包含该资源的注册表拥有访问权限。
如果两个不同的账户注册了具有相同名称和类型的资源,这是允许的。Collaboration 规范将显示同名的资源,但系统会知道哪个是预期的资源(此资源使用的名称与将该资源添加到 Collaboration 的账户所用的名称相同)。
示例¶
此示例创建一个自定义注册表,在其中注册一个数据产品,并通过一个新角色授予对该注册表的读取访问权限。
-- 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;