使用 External Tokenization

本主题提供有关如何将 Snowflake 中的 External Tokenization 与合作伙伴集成结合使用以及如何创建自定义 External Tokenization 集成的说明。

Snowflake 支持在 AWS、Microsoft Azure 和 Google Cloud Platform 上支持 External Tokenization。

请注意,可以将 External Tokenization 掩码策略分配给标签,以提供基于标签的 External Tokenization。有关为标签分配掩码策略的详细信息,请参阅 基于标签的掩码策略

重要

External Tokenization 需要 编写外部函数,这些函数包含在 Snowflake Standard Edition 中,并且您可以将外部函数与令牌化提供程序搭配使用。

但是,如果您选择将令牌化提供程序 Snowflake External Tokenization 进行集成,您必须升级到 Enterprise Edition 或更高版本。

如需咨询升级事宜,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。

External Tokenization 合作伙伴集成

以下合作伙伴促进了 Snowflake 中的 External Tokenization。要使用这些合作伙伴集成,请按照合作伙伴文档中的说明进行操作,或联系合作伙伴以开始配置过程:

  • ALTR (https://www.altr.com/snowflake-cloud-integration)

  • Baffle (https://baffle.io/snowflake/)

  • Comforte (https://insights.comforte.com/how-to-protect-data-on-snowflake)

  • Fortanix (https://support.fortanix.com/hc/en-us/articles/4407049792148-Using-Data-Security-Manager-with-Snowflake)

  • MicroFocus CyberRes Voltage (https://www.microfocus.com/en-us/cyberres/partners/snowflake)

  • Protegrity (https://www.protegrity.com/snowflake-partnership)

  • Privacera (https://privacera.com/partners/snowflake/)

  • SecuPI (https://www.secupi.com/solution/data-access-governance/)

  • Skyflow (https://info.skyflow.com/snowflake-partner-skyflow)

  • Spring Labs (https://springlabs.com/spring-labs-snowflake)

  • Thales (https://thalesdocs.com/ctp/ig/snowflake/index.html)

创建自定义 External Tokenization 集成

完成以下步骤来创建 External Tokenization 的自定义集成:

第 1 步:创建外部函数

在 Snowflake 中创建外部函数,并配置您的云提供商环境与外部函数进行通信。有关详细信息,请参阅:

第 2 步:授予自定义角色掩码策略权限

安全或隐私官 应担任掩码策略管理员(即自定义角色:MASKING_ADMIN),并应具有掩码策略的定义、管理和应用到列的权限。

Snowflake 为列级安全掩码策略提供以下可授予安全或隐私官的权限:

权限

描述

CREATE MASKING POLICY

此架构级权限控制谁可以创建掩码策略。

APPLY MASKING POLICY

此账户级权限控制谁可以在列上设置和取消设置掩码策略,并且默认授予 ACCOUNTADMIN 角色。. 此权限仅允许将掩码策略应用于列,并且 提供 访问控制权限 中描述的任何其他表权限。

APPLY ON MASKING POLICY

可选。策略所有者可以使用此策略级权限,将在列上设置和取消设置给定掩码策略的操作分散给对象所有者(即具有对象的 OWNERSHIP 权限的角色)。. Snowflake 支持 自主访问控制,其中对象所有者也视为数据管理员。. 如果策略管理员信赖对象所有者是受保护列的数据管理员,则策略管理员可以使用此权限来分散策略设置和取消设置操作的应用。

以下示例创建 MASKING_ADMIN 角色,并向该角色授予掩码策略权限。

创建掩码策略管理员自定义角色:

use role useradmin;
CREATE ROLE masking_admin;
Copy

masking_admin 角色授予权限:

use role securityadmin;
GRANT CREATE MASKING POLICY on SCHEMA <db_name.schema_name> to ROLE masking_admin;
GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
Copy

允许 table_owner 角色设置或取消设置 ssn_mask 掩码策略(可选):

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
Copy

其中:

  • db_name.schema_name

    指定应为其授予权限的架构的标识符。

有关更多信息,请参阅:

第 3 步:向用户授予自定义角色

MASKING_ADMIN 自定义角色授予充当安全或隐私官的用户。

use role useradmin;
grant role masking_admin to user jsmith;
Copy

第 4 步:创建掩码策略

在此代表性示例中,具有 ANALYST 自定义角色的用户可查看去令牌化的电子邮件值。没有 ANALYST 自定义角色的用户可查看令牌化值。

去令牌化电子邮件值的外部函数是 de_email()

-- create masking policy

create or replace masking policy email_de_token as (val string) returns string ->
  case
    when current_role() in ('ANALYST') then de_email(val)
    else val
  end;
Copy

小技巧

如果您想要更新现有的掩码策略,并需要查看该策略的当前定义,请调用 GET_DDL 函数或运行 DESCRIBE MASKING POLICY 命令。

第 5 步:将掩码策略应用到表或视图列

这些示例假定在创建表时未将掩码策略应用于表列,在创建视图时也未应用于视图列。在使用 CREATE TABLE 语句创建表,或者在使用 CREATE VIEW 语句创建视图时,可以根据需要将掩码策略应用于表列或视图列。

执行以下语句,以将策略应用于表列或视图列。

-- apply masking policy to a table column

alter table if exists user_info modify column email set masking policy email_de_token;

-- apply the masking policy to a view column

alter view user_info_v modify column email set masking policy email_de_token;
Copy

第 6 步:查询 Snowflake 中的数据

在 Snowflake 中执行两个不同的查询(一个查询使用 ANALYST 自定义角色和另一个查询使用不同角色),以验证没有 ANALYST 自定义角色的用户是否看到令牌化值。

-- using the ANALYST custom role

use role ANALYST;
select email from user_info; -- should see plain text value

-- using the PUBLIC system role

use role public;
select email from user_info; -- should see tokenized value
Copy

External Tokenization 最佳实践

  • 同步系统。在 AWS 上,将组织身份提供商 (IdP) 中的用户和角色与 Snowflake 和 Protegrity 同步是很有帮助的。如果不同步用户和角色,可能会出现意外行为、错误消息,以及与外部功能、API 集成、掩码策略和令牌化策略有关的复杂故障排除。一种方法是使用 SCIM 使用户和角色与您的 IdP 和 Snowflake 保持同步。

  • 错误的根本原因。由于 External Tokenization 需要协调多个系统(例如 IdP、Snowflake、Protegrity、AWS、Azure 和 GCP),始终验证权限、当前限制、外部函数,Snowflake 中的集成、掩码策略以及具有 External Tokenization 掩码策略的列。始终验证权限、当前限制、外部函数、API 集成、掩码策略以及在 Snowflake 中具有 External Tokenization 掩码策略的列。要帮助确定根本原因,请参阅:

后续主题:

语言: 中文