上期提到的安全角色除了直接可以分配给用户以外,还可以分配给团队。本期将为大家介绍 Dataverse 中的团队概念。
在介绍团队之前需要先跟大家说明另外一个概念,记录所有权/所有者
记录所有权
我们在第三章就提到过表的所有权,当时提到创建表时有两种所有权可以选择,分别是【组织】,【用户或团队】。在上一期讲完安全角色后,我们再回头来看这两种所有权的区别,就可以更加清晰。
组织
组织:当表的所有权选择完组织后,该表中的记录只能设置两种访问级别,None Selected 和 Organization 。以下图的组织表为例,我们就可以看出来,彩色圆圈默认是空的表示 None Selected ,鼠标点一下就变成实心绿圈,表示 Organization 。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648194723-120163-4e01bb481eeb335892a02f9db861f976.png)
用户或团队
而选择用户或团队后,表中的记录可以支持设置上期介绍的5种不同访问级别。
下图的两张表分别是【用户或团队】,【组织】两种所有权的表。大家可以发现在创建表后两种表都会自动创建很多默认的列,但明显区别是【用户或团队】多了4列,分别是 Owner , Owner Business Unit , Owing Team , Owing User 。这四列就是用来记录每一行数据的所有人是谁,是哪个用户或者是哪个业务部门,哪个团队。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648194738-754265-4ea5b9542c2491ad67bc63d9dfe547cc.png)
只有表中的数据记录了这些数据(也就是选择了【用户或团队】)才能让 Dataverse 搭配安全角色来区分用户可以操作哪些数据。而反观组织表,他只有 Organization ID ,所以只能让组织中的所有人操作该记录,而不能区分业务部门,团队和用户。
业务部门之前已经在第十六章介绍过了,本期将会为大家介绍用户和团队。
用户
默认情况下组织中的所有用户都会被自动添加到环境里(新用户会有一定延迟),除此之外也可以通过手动添加的方式将指定用户加到环境中。在这之前需要为用户授予相应的许可证。之后就可以为环境中的用户分配所属业务部门和相关安全角色。
当我们在用户有对应安全角色,同时所有权为【用户或团队】表中创建记录时,会把当前用户作为 Owner 添加到该记录中。这样才可以配合安全角色来控制用户可以操作哪些记录。
如果用户希望让其他用户也看到数据时,可以采用两种方法(同时也是上期提到的8种操作中的2种):共享和分配
共享
可以将该记录共享给指定用户或者团队,记录被共享后,Owner 保持不变。可以设置被共享的用户或团队针对该记录有哪些操作权限。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195088-727368-bbfde1b0f88950e4178954ef2d305679.png)
分配
分配操作会将该记录的 Owner 设置为指定的用户或团队。而自己会自动成为当前记录被共享的用户。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195162-555818-66826f435379207a4dcdda5b8e59e62d.png)
团队
单独给每个用户分配安全角色不太现实,所以Dataverse 推出了团队功能。团队是一种可以将多个用户放在一起统一管理权限,同时让他们可以成为记录的所有者的管理方法,一个用户可以属于多个团队,团队中的用户可以来自不同的业务部门。
我们在创建业务部门时会系统会自动创建一个默认的团队,其中会包含该业务部门中的所有用户。我们是不能在默认团队中添加或删除用户的,因为默认团队的用户都是由系统管理的。除默认团队之外在 Dataverse 中还会涉及到 3 种不同的团队类型。
Owner Team
Owner Team :所有者团队,是 Dataverse 中一种默认的团队类型,团队成员可以拥有被分配给用户自己的安全角色,以及分配给该团队的安全角色,同时会将记录的 Owner 设置为该团队。
所有者团队的特点
用户和团队可以同时拥有安全角色,可以很方便的为多个用户同时设置安全角色,但这同样会导致用户的权限变的复杂, Dataverse 在计算这名用户的权限时,既要考虑他本身的安全角色又要去计算他所属团队的安全角色,尽量避免在系统中使用过多的所有者团队。
Access Team
Access Team :访问者团队,在 Dataverse 中后来推出的一种团队类型,目的是解决 Owner Team 的复杂安全机制,当我们希望让其他成员介入项目,而又不希望让他成为记录的所有者时,可以使用访问者团队。
比如一个项目管理的系统,项目的所有者会负责完成项目的相关操作,但同时又需要有其他部门的同事做一些项目支持的工作,这个时候从安全角度出发可以将他添加到访问者团队,这样的话可以保证项目的所有者不变,同时又能让该同事一起参与项目的相关工作。
访问者团队的特点
不能将安全角色分配给访问者团队,访问者团队不能作为记录的所有者(也就是说不能将记录分配给访问者团队)。但是可以将记录共享给访问者团队。同时支持团队中不同成员对记录设置不同的访问权限。
当团队数量不固定,可能有很多的团队,同时这些用户来自不同业务部门时,可以使用访问者团队。
Azure AD Group Team
实际上就是 Azure AD 组相关的所有者团队,管理员可以直接在 Dataverse 的环境中创建和 Azure AD 组关联的 Azure AD Group Team ,然后直接给 Group Team 分配安全角色。
这样做的好处是,当有新用户被添加到组织时,组织的管理员只需要把该用户分配给对应的Azure AD 组(同时该用户需要有许可证),用户就可以直接访问 Dataverse ,而不需要再让 Dataverse 的管理员去手动给用户分配安全角色,同时当用户在Azure AD 组中删除时,也会马上失去相应的 Dataverse 安全角色(相当于整个过程自动化了,减少了 Dataverse 管理员的操作)。
Azure AD Group 团队的特点
直接与 Azure AD Security Group 和 Office Group 相关联
一个 AD Group 只能对应一个 Azure AD Group Team
当希望直接利用 AD Group 分配安全角色时,及团队成员全部来自一个 AD Group 时,可以使用 Azure AD Group Team
创建团队
介绍完三种团队类型后,我们一起看一下如何创建团队。
进入管理中心的环境设置界面,展开用户和权限,点击团队。
点击 New 即可打开新建团队的界面。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195641-910720-758d5d9cf3f1a17e5f290f2f7ed06e78.png)
可以看到新建团队,实际就是在 Dataverse 中的 Team 表里创建一条记录。
我们可以在安全角色中配置哪些角色可以创建团队。
我们看一下创建团队过程中的配置信息。
Team Name : 团队名称
Business Unit : 团队所属业务部门,团队只能属于一个业务部门。
Administrator : 团队管理员,团队管理员可以管理团队记录,同时他不会显示为团队成员。
Team Type : 团队类型,对应刚才提到的 3种类型,只不过 Azure AD Group 分为 Security Group 和 Office Group。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195671-34721-1d218f538883fdd95526028262f9e3fa.png)
Azure AD Object ID for a group : 当团队类型设置为 Azure AD Group 时,需要填写该 Group 的 ID ,可以从 Azure Portal 中找到对应的 Group ID 。(这里相当于就是用业务规则实现的效果,只有选择 AAD 相关选项时,才会将 AD ID 的字段解锁,从而让用户填写内容)
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195680-619421-9ab73c381de1eff2fd6b6e1c4146f4f9.png)
访问团队模板
最后我们再介绍一下团队模板,之前提到的访问者团队实际上除了手动创建以外,也可以由系统自动创建,而系统自动创建就需要用到访问团队模板。
在团队模板中可以由管理员配置该团队对于指定表拥有哪些权限。比如我设置一个针对班级表的访问团队模板,并将他的权限设置为只读。这个时候用户可以直接在指定记录的表单中添加要共享的用户。这些用户会被自动添加到一个访问团队中(该团队由系统自动根据模板创建),同时会按照模板中设置的权限进行统一配置。
由于访问团队模板是针对每个表设置的不同权限,所以需要在创建团队模板之前,首先对指定表启用“自动创建访问团队”。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195692-555487-3e313c7beb215ac2b5a47beb6ab7cb8f.png)
之后需要设置访问团队模板,进入到环境设置界面 - 展开模板,点击访问团队模板。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195702-285234-ab5add2057e5d3561ab502630c0bd514.png)
点击 New 添加一个访问团队模板。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195709-285138-b659639bfe6357322c9555f31843458e.png)
Name :用来设置团队模板名称
Entity : 模板绑定的表,这里只能选择开启了【自动创建访问团队】的表。
Access Rights : 用来定义使用该团队模板创建的访问团队拥有哪些权限。
比如我们可以通过模板创建一个对班级记录只读的团队
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195717-927187-205ca536c8593d50169b424835d1d7f7.png)
当设置完访问模板团队后,需要在对应的表单窗体中增加一个子网格才能让用户直接在记录中向访问团队(系统根据模板自动创建的访问团队)添加用户。
回到 Power Apps ,编辑班级表的Main 窗体,然后切换到经典模式编辑(只有在经典模式才能看到访问团队模板)。
在 Insert 中插入一个 Sub Grid 子网格,然后将其 DataSource 按照下图设置。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195727-488582-1c697508f906f4fa5c3980e6807b6e42.png)
之后保存并发布该窗体。发布完成后,打开班级的记录,即可在窗体中看到一个 Access Team 的功能区域,可以在这里直接向 Access Team 添加用户,被添加的用户自动拥有模板中设置的共享权限。
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195742-206049-65165b40e335d3e0a71860c58f841ca3.png)
![](https://forum.power-platform.cn/assets/files/2022-03-25/1648195746-686248-58c2ada53d8e5c76c381cbd61484709a.png)