注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

受限视图

概述

权限标记角色提供了强大的访问控制,但某些情况下需要更细粒度的权限管理。例如,授予某种类型的所有对象访问权限可能是不充分或不合适的;某些对象类型可能需要向不同用户展示不同的对象,例如当公司限制其销售代表查看其指派分支的客户时。受限视图可以提供这一额外级别的访问控制。

用户在Foundry中与受限视图资源交互,受限视图由细粒度权限提供支持。受限视图将数据集访问限制为用户有权限查看的行。受限视图构建在一个基础数据集之上,不能用作变换的输入。受限视图的策略决定用户可以看到的具体行,通常由具有所有者角色的用户在创建受限视图时定义。创建后,受限视图可用作Ontology中某个对象类型的基础数据源。例如,如果受限视图中的一行由Ontology中的一个对象表示,则受限视图将根据其支持的对象类型控制用户可以看到的对象。

受限视图策略

策略是受限视图的核心。受限视图策略是一组规则和/或逻辑运算符,用于比较不同的用户属性、列和/或值,以确定用户可以看到的行。受限视图策略是灵活的,可以支持一系列比较和术语,例如:

  • 用户属性: 用户ID、用户名、组ID、组名、组织权限标记ID、权限标记、用户电子邮件等。
  • 列名: 受限视图基础数据集中的一列。
  • 特定值: 一个字符串、布尔值、数字或数组。

大多数(如果不是全部)策略将涉及至少一个与用户属性进行比较的术语。至少需要一个这样的术语来进行基于用户的权限管理。

restricted-view-data-lineage

设计受限视图策略

假设您想构建一个对象类型,以便向不同用户展示不同的对象。第一步是设计您的受限视图策略。考虑以下问题:

  • 您想如何限制Ontology中数据的访问?
  • 您可以在策略中使用哪些用户属性?
  • 您的策略可能依赖于数据中的哪些列?
  • 哪些权限标记在管道中传播,但在创建受限视图时可以取消标记?
  • 您将如何授予新用户对象权限?

在下面的示例中,受限视图策略包含两个可以应用的规则:

Restricted View policy editor

建议

我们建议在设计受限视图时遵循以下准则:

  • 保持简单: 在创建受限视图之前,写下您想要执行的策略。确定该策略所需的最小条件集。策略越复杂,管理和验证就越困难。
  • 确保策略列非空: 策略列中具有空值的行将对所有用户不可访问。策略列中的空值还会导致该表的Phonograph同步失败。
  • 利用管道: 为了减少不适合当前数据形态或字段的策略的复杂性,使用管道计算将使编写策略更简单的列。尽量在管道中处理复杂性,而不是在受限视图策略中。
  • 考虑使用专用策略列: 对基础数据集中引用的列进行的更改可能会破坏策略假设。为了保护策略免受此风险,考虑将决定策略的逻辑分离出来,并创建一个专用列(或列)供策略引用。
  • 使用属性: 基于属性的策略往往是最简单的选择。属性可以从SSO中提取或通过用户管理器发布。
  • 使用权限标记: 将权限标记应用于策略的基础数据集以保证其保护,并确保它仅对有权限标记访问的用户可见。由于受限视图已控制用户可以看到的行,可以停止在受限视图中继承权限标记。如果敏感数据在源头已被标记且权限标记已正确传播,则创建受限视图时不需要新的权限标记。

在确定您的受限视图策略设计后,进行任何管道和项目更改以支持它。拥有受限视图策略和管道后,您可以继续创建受限视图。

创建受限视图

具有所有者角色或必要权限的用户可以通过右键点击上下文操作在数据集下游创建受限视图:

Create a Restricted View by right-clicking a resource

受限视图创建对话框有以下步骤:

  1. 另存为: 选择受限视图在文件系统中存放的名称和位置。
  2. 撰写细粒度策略: 定义将决定用户在访问受限视图或对象时能够看到哪些行或对象的策略声明。
  3. 查看访问要求: 查看上游数据集和下游受限视图上的现有文件和事务级别的权限标记。拥有适当权限的情况下,您可以从受限视图中取消标记(移除)权限标记。
  4. 总结: 在创建和初始搭建受限视图之前查看您的选择。

另存为

命名您的受限视图并选择保存位置。通常,您会希望将受限视图保存在与输入数据集不同的项目中,以便使用受限视图的用户可以在下游项目上获得查看权限。或者,您可以将受限视图保存在与输入数据集相同的项目中,并利用权限标记来保护输入数据集

Name and save your Restricted View

撰写细粒度策略

您可以使用以下术语创建基于规则的策略:

  • 用户属性: 用户ID、用户名、组ID、组名、组织权限标记ID、权限标记、用户电子邮件等。
  • 列名: 受限视图基础数据集中的一列。
  • 特定值: 一个字符串、布尔值、数字或数组。

在引用用户、组或组织时,策略要求在策略列和策略定义中使用唯一标识符(UUID)。为防止重命名相关问题,不支持指定名称而不是ID。

Compose a Restricted View policy

查看访问要求

仅应通过受限视图访问敏感数据的用户不应访问上游数据集。在此步骤中,您可以查看您正在创建的数据集和受限视图的访问要求。如果您拥有适当的权限标记权限,您可以从受限视图中移除继承的权限标记和/或将权限标记应用于上游数据集。

Review access requirements of your Restricted View

总结

总结展示了数据集和受限视图的最终拟议访问控制。如果您对总结结果满意,请点击创建以开始受限视图的初始搭建。

当受限视图被创建后,一个搭建计划将在后台自动创建,任何时候输入数据集更新时都会重新搭建。

Summary of Restricted View

查看管理文档,了解如何使用受限视图支持对象类型。

创建基于权限标记的受限视图

您可以基于具有权限标记列的数据集创建受限视图。每行仅对具有必要权限标记访问的用户可见。例如,在下面的受限视图中,用户需要同时具有A1和A2才能查看第一行,并且需要B1才能查看第二行。

数据权限标记
行 1[A1, A2]
行 2[B1]

按照以下步骤创建基于权限标记的受限视图:

  1. 准备一个具有一个或多个权限标记列的数据集,该数据集将被安全地作为受限视图。每个单元格必须包含一个字符串权限标记ID或一个字符串数组的权限标记ID。了解更多关于上游数据集的预期格式
  2. 通过进入数据集预览界面的列选项卡,选择列,点击“添加类型类”,并输入marking_type.mandatory来注释每个权限标记列。此步骤对于细粒度权限的运作不是必要的,但Foundry中的某些界面使用这个提示来更恰当地呈现列。

type-class-rv

  1. 在数据集上创建受限视图。策略规则的左侧应为“用户的权限标记”。对于右侧,选择“列”并选择权限标记列。如果您有多个列,请为每个列创建一个规则,并根据需要用AND或OR规则组合它们。

marking-org-policy

上游数据集的预期格式

用于创建受限视图的数据集必须包含一个权限标记ID列。

  • 这些ID是全局唯一标识符(UUID)。
  • 列的类型必须是字符串(并且每个单元格有一个权限标记ID)或字符串数组(并包含权限标记ID列表)。
  • 您可以有多个权限标记ID列。
  • 您可以在同一列中混合权限标记和组织。

例如,以下数据集每行包含一个安全权限标记:

数据权限标记
行 1zy345123-6789-1234-5678-123451234567
行 2st999999-8888-7777-6666-555555555555

再例如,这个数据集包含权限标记列表。下面的CSV示例可以直接上传到Foundry,不过您需要通过进入详细信息 > 模式手动修改推断的模式,并将"type": "STRING"更改为"type": "ARRAY, "arraySubtype": { "type": "STRING" }。

数据权限标记
行 1[ab888888-7777-6666-5555-123456789012, gh111111-2222-3333-4444-555566667777]
行 2[cd345678-1111-2222-3333-123456789102, jk765432-1111-2222-3333-345678912345]

将受限视图添加到市场产品

将受限视图包含在市场产品中处于测试阶段。

使用Foundry DevOps将您的受限视图包含在市场产品中供其他用户安装和重用。了解如何创建您的第一个产品。

支持的功能

仅支持字符串布尔值常量。常量只能与字段(列)或“用户的组”用户属性进行比较。目前市场不支持使用相同字段的多字段-常量比较条件。

将受限视图添加到产品中

要将受限视图添加到产品中,首先创建一个产品,然后选择如下所示的受限视图内容类型。

add restricted view

将受限视图添加到产品中会打包受限视图的策略,而不是数据。