如何将列中的每一行设置为等于特定字符串?
How do I set every row in a column equal to a specific string?
我有一些要设置为字符串 'redacted' 的列,因为它们包含个人信息。
目前我正在通过 select 语句从原始表在雪花中创建视图如何将指定的字符串添加到特定列?
原创
name number
john | 1
mary | 2
nikhil | 3
理想状态
name number
Redacted | 1
Redacted | 2
Redacted | 3
实现视图的当前代码
CREATE OR REPLACE SECURE VIEW "DB"."Schema"."Table"
AS
SELECT
Column1,
Column2,
Column3,
FROM "DB"."Schema"."Table"
Snowflake 允许动态屏蔽 PII。
一般来说你必须:
1:将屏蔽策略权限授予自定义角色
-- create a masking policy administrator custom role
CREATE ROLE masking_admin;
-- grant privileges to masking_admin role.
GRANT CREATE MASKING POLICY on SCHEMA <schema_name> to ROLE masking_admin;
GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
-- allow table_owner role to set or unset the ssn_mask masking policy (optional)
GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
2:创建屏蔽策略
create or replace masking policy email_mask as (val string) returns string ->
case
when current_role() in ('ANALYST') then val
else '*********'
end;
3:将屏蔽策略应用于 Table 或查看列
-- apply masking policy to a table column
alter table if exists user_info modify column email set masking policy email_mask;
-- apply the masking policy to a view column
alter view user_info_v modify column email set masking policy email_mask;
在我完全从 this page 复制的上面的示例中,我们为屏蔽规则的安全管理员创建了一个角色,然后使用该角色创建了一个屏蔽策略,允许 ANALYST 角色查看列的值,但向不属于 ANALYST 角色的其他所有人显示星号,然后将该屏蔽规则应用于 table 和视图的电子邮件列。
这样做的好处是,您可以定义一种一致的方法来隐藏此类信息(通过策略),并且您不必 hard-code 更改您的视图。
我想你想要这个,只需在视图中将 name
定义为常量即可:
CREATE OR REPLACE SECURE VIEW "DB"."Schema"."Table"
AS
SELECT
'redacted' name,
number
FROM "DB"."Schema"."Table"
(但您为视图提供的代码与预期结果不符)
我有一些要设置为字符串 'redacted' 的列,因为它们包含个人信息。
目前我正在通过 select 语句从原始表在雪花中创建视图如何将指定的字符串添加到特定列?
原创
name number
john | 1
mary | 2
nikhil | 3
理想状态
name number
Redacted | 1
Redacted | 2
Redacted | 3
实现视图的当前代码
CREATE OR REPLACE SECURE VIEW "DB"."Schema"."Table"
AS
SELECT
Column1,
Column2,
Column3,
FROM "DB"."Schema"."Table"
Snowflake 允许动态屏蔽 PII。
一般来说你必须:
1:将屏蔽策略权限授予自定义角色
-- create a masking policy administrator custom role
CREATE ROLE masking_admin;
-- grant privileges to masking_admin role.
GRANT CREATE MASKING POLICY on SCHEMA <schema_name> to ROLE masking_admin;
GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
-- allow table_owner role to set or unset the ssn_mask masking policy (optional)
GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
2:创建屏蔽策略
create or replace masking policy email_mask as (val string) returns string ->
case
when current_role() in ('ANALYST') then val
else '*********'
end;
3:将屏蔽策略应用于 Table 或查看列
-- apply masking policy to a table column
alter table if exists user_info modify column email set masking policy email_mask;
-- apply the masking policy to a view column
alter view user_info_v modify column email set masking policy email_mask;
在我完全从 this page 复制的上面的示例中,我们为屏蔽规则的安全管理员创建了一个角色,然后使用该角色创建了一个屏蔽策略,允许 ANALYST 角色查看列的值,但向不属于 ANALYST 角色的其他所有人显示星号,然后将该屏蔽规则应用于 table 和视图的电子邮件列。
这样做的好处是,您可以定义一种一致的方法来隐藏此类信息(通过策略),并且您不必 hard-code 更改您的视图。
我想你想要这个,只需在视图中将 name
定义为常量即可:
CREATE OR REPLACE SECURE VIEW "DB"."Schema"."Table"
AS
SELECT
'redacted' name,
number
FROM "DB"."Schema"."Table"
(但您为视图提供的代码与预期结果不符)