动态数据掩蔽策略层次结构 - Amazon Redshift

动态数据掩蔽策略层次结构

在附加多个掩蔽策略时,请注意以下事项:

  • 您可以将多个屏蔽策略附加到单个列。

  • 当多个屏蔽策略适用于一个查询时,附加到每个相应列的最高优先级策略适用。考虑以下示例。

    ATTACH MASKING POLICY partial_hash ON credit_cards(address, credit_card) TO ROLE analytics_role PRIORITY 20; ATTACH MASKING POLICY full_hash ON credit_cards(credit_card, ssn) TO ROLE auditor_role PRIORITY 30; SELECT address, credit_card, ssn FROM credit_cards;

    运行 SELECT 语句时,同时具有分析和审计角色的用户会看到应用了 partial_hash 屏蔽策略的地址列。他们会看到应用了 full_hash 掩蔽策略的信用卡和 SSN 列,因为 full_hash 策略在信用卡列上的优先级更高。

  • 如果在附加屏蔽策略时未指定优先级,则默认为优先级为 0。

  • 您不能将两个具有相同优先级的策略附加到同一列。

  • 您不能将两个策略附加到用户和列或角色和列的相同组合。

  • 当多个掩蔽策略适用于同一 SUPER 路径,同时附加到同一用户或角色时,只有优先级最高的掩蔽策略才会生效。考虑以下示例。

    第一个示例显示两个掩蔽策略附加在同一路径上,优先级较高的策略生效。

    ATTACH MASKING POLICY hide_name ON employees(col_person.name) TO PUBLIC PRIORITY 20; ATTACH MASKING POLICY hide_last_name ON employees(col_person.name.last) TO PUBLIC PRIORITY 30; --Only the hide_last_name policy takes effect. SELECT employees.col_person.name FROM employees;

    第二个示例显示两个掩蔽策略附加到同一 SUPER 对象中的不同路径,这两个策略之间没有冲突。这两个掩蔽策略将同时适用。

    ATTACH MASKING POLICY hide_first_name ON employees(col_person.name.first) TO PUBLIC PRIORITY 20; ATTACH MASKING POLICY hide_last_name ON employees(col_person.name.last) TO PUBLIC PRIORITY 20; --Both col_person.name.first and col_person.name.last are masked. SELECT employees.col_person.name FROM employees;

要确认哪个掩蔽策略适用于给定的用户和列或角色和列组合,具有 sys:secadmin 角色的用户可以在 SVV_ATTACHED_MASKING_POLICY 系统视图中查找列/角色或列/用户对。有关更多信息,请参阅 动态数据掩蔽系统视图