注册表

在将模板、数据产品或其他资源添加到 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;
Copy