在前几章中,我们提到的安全性实际上都是行级安全性,也可以叫基于记录的安全性。这种安全性是用来定义指定用户角色是否可以对表中的哪些行进行操作。本期,我们将为大家介绍另外一种安全模型,列级安全性。
什么是列级安全性
行级安全性指的是让每个人只能查看与之对应的数据行,这种安全性虽然已经很强大,但是有些场景可能需要更强大的安全模型。
比如在订单的场景里,销售人员在创建订单的时候,里面会包含很多信息,比如列,合同等等。而这些信息是不希望仓库人员看到的,所以就需要能在订单交给仓库人员后,对仓库人员隐藏部分字段。
为了解决这种需求,就需要列级安全性,去限制用户对某一列的操作权限。
如何设置列级安全性
首先需要在指定列中开启列安全性,这个在第四章中提到过。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692128-564620-f10eab07e1929a519ff3f19785b9d88d.png)
接下来需要创建一个安全配置文件
在 Power Apps 门户中,进入高级设置。
然后再高级设置界面找到系统设置中的安全设置。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692137-256586-057ec1774397f57de3e0a5d2ad238ee0.png)
接下来找到字段安全配置文件 Field Security Profiles
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692145-261237-2ec6d14e5dd2ff0054612109d3711379.png)
点击 New 新建一个配置文件。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692151-605790-165467eb1dffe8c90e46ece484be6925.png)
除了 Name 和描述以外,我们重点需要配置 Field Permissions 。
所以需要写个名字,然后点保存。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692159-362089-b8cf0b25671f314a50f077339ed798d7.png)
之后切换到 Common 下边的 Field Permissions 。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692167-958576-4d18359973740a848b2a4dd6c6d21229.png)
在该界面我们只能看到所有启用了列安全性的字段,比如刚刚看起列安全性的班级表中的年龄列。
选中年龄,然后点 Edit 编辑。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692175-500000-55270ebaf153eb91f564a997d649b367.png)
这里可以分别对该字段的读取,更新和创建操作进行权限配置。
比如可以设置为,只能读取,其他操作都不能执行。或者保持默认连读取都不行。
配置完字段的权限后,下一步需要设置有哪些用户和团队成员可以拥有我们配置的字段级权限。默认情况下就算设置了字段级安全性,系统管理员也可以看到所有字段。但是其他用户如果没有字段读取权限的话,就看不到数据了,都配置完成后,可以将当前配置文件保存并关闭就可以生效了。
![](https://forum.power-platform.cn/assets/files/2022-03-31/1648692189-214349-df8958c6ba83af619099d55fd7a67bf7.png)
举个例子:比如我希望限制总经理对联系人手机号有完全控制权限,而销售经理只可以看到联系人手机号,但不能更改。其他用户都不能看到联系人手机号的话,可以创建两个字段配置文件。
总经理配置文件:将总经理加到用户中。然后设置字段权限,把联系人的手机号字段三个权限都设置为 Yes 。
销售经理配置文件:将销售经理添加到用户中,然后设置字段权限,只勾选读取权限,其他权限都设置为否。
按照上面的方法创建两个配置文件后,其他用户都看不到手机号数据了,只有销售经理和总经理能看到,并且只有总经理能更改。(系统管理员除外)
列级安全性限制
以下字段不能开启列安全性:
ownerid、processid、stageid、accountid、contactid
createdby、modifiedby、OwningTeam、OwningUser
createdon、EntityImage_Timestamp、modifiedon、OnHoldTime、overriddencreatedon
statecode、statuscode