使用联系人¶
联系人是架构级对象,包含有关如何与用户或用户组通信的详细信息。例如,一位名为 data_stewards
的联系人可能包含电子邮件通讯组列表,而另一位名为 support_department
的联系人可能包含部门网站的 URL。
联系人可以与其他对象(例如数据库和表)相关联,以便用户可以联系到合适的人寻求有关这些对象的帮助。例如,表格上可能有一位联系人描述了要联系谁才能获得对该表的访问权限。联系人的目的不是联系人的财产,而是联系人与特定对象之间的关联。例如,同一个联系人可能为一个表格提供一般支持,同时为另一个表格提供访问批准。
一个对象可以有多个联系人,只要每个联系人的目的对该对象来说是唯一的。例如,一个表格可能有一个联系人授予对该表的访问权限,另一个联系人为该表格提供一般支持。当用户查看与对象关联的联系人时,他们会看到每个联系人的目的以及通信方式,因此他们知道出于特定原因与谁通信以及如何联系他们。
数据用户在使用 Snowsight 中的 Data 菜单浏览其数据库、架构和类似表格的对象时会看到这些联系人。
继承和覆盖联系人¶
联系人由后代对象继承。如果将某个联系人关联到一个作为父对象的对象上,那么子对象、孙对象等各级下级对象都会继承该联系人。例如,如果您将联系人与架构相关联,则默认情况下,架构中的所有表都会继承该联系人。
如果子对象具有相同目的的联系人,则联系人继承将被覆盖。例如,假设有人将以下两个联系人与包含 t1
表的 ac_sch
架构相关联:
联系人 |
目的 |
---|---|
|
管理员 |
|
批准者 |
现在,假设有人出于访问批准的目的将联系人 finance_dept
与 t1
关联。与 t1
关联的联系人现在如下:
联系人 |
目的 |
---|---|
|
管理员 |
|
批准者 |
负责 ac_schema
访问批准的联系人已替换为与 t1
直接关联的联系人,但 t1
将继续继承架构中的 data_stewards
联系人。
受支持对象¶
您可以将联系人与以下对象关联:
|
|
|
创建联系人¶
创建联系人时,您需要指定联系人的姓名以及他人应如何与该联系人通信。通信方法包括以下几种:
网站的 URL。
电子邮件地址,可以是通讯组列表。
Snowflake 用户列表。
您可以使用 |sf-web-interface|或 SQL 创建联系人。在专用架构中创建所有联系人可能会很有帮助。
- Snowsight:
登录 Snowsight。
选择 Data。
导航到要创建联系人的架构。
选择 Create » Contact。
指定联系人的姓名。
选择一种通信方式,然后指定数据用户在需要对象相关帮助时可联系的电子邮件地址、用户或 URL。
选择能够将联系人与对象关联的角色。联系人授予这些角色 APPLY 权限。
选择 Create。
- SQL:
您可以执行 CREATE CONTACT 命令来创建新联系人。
示例
为通过其网站联系的支持团队创建联系人。
CREATE CONTACT support_dept URL = 'http://internalsupport.example.com';
为财务团队创建一个通过电子邮件地址联系的联络方式,该邮箱将作为分发列表使用。
CREATE CONTACT finance_dept EMAIL_DISTRIBUTION_LIST = 'fd_dl@example.com';
为数据库管理员创建联系人,以其 Snowflake 用户对象的名称进行标识。
CREATE CONTACT db_admins USERS = ('ex_admin1', 'ex_admin2');
将联系人与对象关联¶
将联系人与对象关联时,需要指定联系人的姓名以及联系人和对象之间关联的目的。当用户查看与某个对象关联的所有联系人时,他们将能够根据每个联系人的目的决定与谁通信。
将联系人与对象关联的目的可以是以下其中之一:
目的 |
描述 |
SQL 值 |
---|---|---|
管理员 |
提供有关数据的准确性、一致性和可靠性的信息。 |
|
支持 |
提供与数据集相关的技术支持。 |
|
批准者 |
批准或拒绝访问数据的请求。 |
|
修改现有对象或创建新对象时,您可以关联联系人并定义其目的。
将联系人与现有对象关联¶
- Snowsight:
登录 Snowsight。
选择 Data » Databases。
导航到其中一个 支持的对象。
选择 Details 选项卡。
找到 Assigned Contacts 部分并选择 Edit 图标。
为一个或多个目的选择联系人。例如,如果您从 Approver 下拉列表中选择联系人,则数据用户将在需要访问该对象时联系该联系人。
选择 Save。
- SQL:
现有对象的 ALTER ... SET CONTACT 命令允许您关联联系人并指定该对象的联系目的。关联联系人的语法对所有可关联联系人的对象都相同:
ALTER <object_type> <object_name> SET CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ]
purpose
必须是 预定义的目的 之一,用于描述联系人与对象的关系。当用户查看对象的联系人时,他们使用目的来确定要与哪些联系人通信。示例
将
finance_dept
联系人与表格关联,以便用户知道在需要访问表格时应与谁通信:ALTER TABLE t1 SET CONTACT ACCESS_APPROVAL = finance_dept;
将
internal_support
联系人与数据库关联,这样用户就知道在数据库中的表需要一般支持时该与谁通信:ALTER DATABASE my_db SET CONTACT SUPPORT = internal_support;
将
data_stewards
联系人与架构关联,这样用户就架构中表的对象标记知道该与谁通信:ALTER SCHEMA sch1 SET CONTACT STEWARD = data_stewards;
备注
如果要对现有 Iceberg 表、外部表或动态表设置联系人,则必须使用 ALTER TABLE 命令。
创建新对象时关联联系人¶
CREATE ... WITH CONTACT 命令允许您将联系人与新对象相关联。对于所有可以与联系人关联的对象,WITH CONTACT 子句的语法是相同的:
WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] )
purpose
必须是 预定义的目的 之一,用于描述联系人与对象的关系。当用户查看对象的联系人时,他们使用目的来确定要与哪些联系人通信。
对于表和类似表的对象,WITH CONTACT 子句在列定义之后指定。
示例¶
将 finance_dept
联系人与新表格相关联,以便用户知道在需要访问表格时应与谁通信:
CREATE TABLE t1 (col1 VARCHAR, col2 INT) WITH CONTACT (ACCESS_APPROVAL = finance_dept);
将 internal_support
联系人与新数据库关联,这样用户就知道当他们需要对数据库中的表提供一般支持时该与谁通信:
CREATE DATABASE my_db WITH CONTACT (SUPPORT = internal_support);
将 data_stewards
联系人与新架构相关联,以便用户知道在架构中表的对象标记方面应与谁通信;将 finance_dept
联系人与新架构相关联,以便用户知道在需要访问时应与谁通信:
CREATE SCHEMA sch1 WITH CONTACT (STEWARD = data_stewards, ACCESS_APPROVAL = finance_dept);
将联系人与对象分离¶
- Snowsight:
登录 Snowsight。
选择 Data » Databases。
导航到对象。
选择 Details 选项卡。
找到 Assigned Contacts 部分并选择 Edit 图标。
找到您要分离的联系人的目的(例如 Approver),然后使用下拉列表选择 None。
选择 Save。
- SQL:
ALTER ... UNSET CONTACT 命令允许您将联系人与对象分离。对于所有可以与联系人关联的对象,分离联系人的语法是相同的:
ALTER <object_type> <object_name> UNSET CONTACT <purpose>
您可以通过指定联系人和对象之间的关联目的来确定要分离的联系人,而不是通过联系人姓名。有关可以指定用于分离联系人的可能目的的列表,请参阅 预定义的目的。
例如,要分离作为表中 STEWARD 添加的联系人,请执行:
ALTER TABLE t1 UNSET CONTACT STEWARD;
备注
如果要对现有 Iceberg 表、外部表或动态表取消设置联系人,则必须使用 ALTER TABLE 命令。
查看对象的联系人¶
- Snowsight:
当您导航到 Snowsight 中的某个对象时,与该对象关联的联系人会显示在 Details 选项卡上。
- SQL:
对某个对象具有至少一项权限的用户可以使用 GET_CONTACTS 表格功能查看与该对象关联的联系人。该函数为与该对象关联的每个联系人返回一行。
例如,要列出表
t1
中的联系人,至少具有一项权限的用户可以执行以下操作:SELECT * FROM TABLE(SNOWFLAKE.CORE.GET_CONTACTS('t1', 'TABLE'));
对于每个联系人,该函数列出了以下内容:
联系的目的。
联系人的通信方式。
联系人是直接与对象关联还是继承自父对象。
治理联系人及其关联¶
- Snowsight:
要列出在架构中创建的联系人并深入了解特定联系人的详细信息,请执行以下操作:
登录 Snowsight。
使用 Data » Databases 菜单导航到架构。
选择 Contacts 选项卡。
如果要查看联系人的详细信息,包括与之关联的对象,请选择该联系人。
- SQL:
ACCOUNT_USAGE 架构提供以下视图来帮助管理联系人:
CONTACTS 视图 – 列出账户中的所有联系人。
CONTACT_REFERENCES 视图 – 列出与联系人关联的对象。
访问控制权限¶
以下内容总结了用户使用联系人所需的权限。
任务 |
所需权限 |
---|---|
以下两项兼具:
|
|
以下任一内容:
|
|
对象的任意权限。 |
|
以下任一内容:
|
|
以下任一内容:
|
|
联系人的 OWNERSHIP |