MS CRM 2011 Field Security Profile
CRM一直以来对于权限的控制都是使用security role,但security role是对entity读写等操作的权限控制。如果你要对entity上的某一个field进行权限的控制,就要使用field security profile了。注意:security profile只能对custom field进行控制。
假如在客户entity中,我们创建了一个field Bank Account。这里存储这用户的银行账户信息。我们想要设置,只有部分CRM用户有权限来读取该信息。也就是说,即便有的用户有权限读取客户entity,但是他没有权限来读取客户的Bank Account信息。注意,在创建Bank Account field的时候,要设置Field Security Enabled。
然后我们将该field放置到form中,可以看到该Bank Account旁边画着一把钥匙,表明该field为security field。
保存并publish customizations后,我们打开一个客户的表单。由于我使用的是system administrator用户,所以我拥有对Bank Account的读与写的权限。我为一个客户填写进他的Bank Account信息。
然后如果以另一个CRM用户登录的话,打开同一个客户,会看到什么呢?
可以看到,虽然有权限打开该客户,但是Bank Account的信息都被隐藏起来。我们再试着用Advanced Find来查看该客户的Bank Account。
Bank Account的信息是空的。所以如果没有赋予CRM用户权限来读取Bank Account field的话,即便该用户有权限读取该客户,但他也没有权限读取Account Bank field。那么如何赋予用户读写Bank Account 的权限呢? 这就要用到 Field Security Profile了。重新以system administrator的身份登录CRM。在System –> Administration –> Field Security Prifiles 中创建一个新的profile,命名它为Account Manager。
在Members/Users中添加你想要赋予权限的用户:
在Common/Field Permissions中,设置用户对security fields的权限。默认为Read、Update、Create都为No。我们将Read 改为Yes,Update和Create都为No。这样用户就对Bank Account信息拥有读取的权限,但不具有创建或更改的权限。
这次如果你再以Daisy Cabell的身份登录CRM,你会发现你可以看到Bank Account的信息了,并且该信息为只读的。
最后总结一下,如果想要在某些entity中保存一些保密的信息,可以创建enable security的field,并创建新的Field Security Profile来赋予用户对该field的权限。