使用已保存视图的安全性



在Dynamics CRM中定义了一个自定义实体,实体E。实体E包含两种类型的条目:公开可见的条目(种类PUBLIC)和私有条目(种类private。

CRM用户可以从E.检索这两种条目。另一方面,站点A(面向互联网)的用户只能检索E.的PUBLIC子集

以下步骤可以吗?

  • 为实体E创建一个保存的视图,名为PUBLIC_E_view
  • 创建具有PUBLIC_E_VIEW读取权限的安全角色
  • 将该安全角色分配给用户X
  • 来自站点A的所有请求都将使用"模拟"(X)针对crm web服务执行

提前感谢:)

不,我认为这不会达到你想要的。

Web服务调用不尊重用户的视图。例如,在web服务调用中未使用PUBLIC_E_VIEW。

要使PUBLIC_E_VIEW工作,用户X需要对E具有读取权限。这意味着任何web服务都会返回用户X可以看到的每个E记录——在本例中是所有记录。

例如,我认为在这种情况下,你需要使用业务单元来分离你的数据。

  • 两个业务单元—专用和公用、公用和专用用户
  • 私有是公有的父级
  • 所有私人用户都可以在其业务部门和子业务部门中阅读E
  • 所有公共用户都可以在其业务单元中阅读E
  • 将所有公用和专用E记录分配给正确的用户

这意味着,当您在公共单元中模拟X时,将不会在私有单元中返回记录。

我可能误解了你的问题,因为你的术语不清楚。

实体E包含两种条目:公开可见的条目。。。以及私人条目。

您的意思是您的"实体E"(CRM实体定义)包含可公开访问的属性和私有的属性(这是我所假设的),还是您的意思意味着"实体E"类型的一些记录是公共的和私有的?


我建议您研究CRM 2011"现场级安全"(FLS)概念。这允许您保护字段的子集,并使其仅对特定用户可用(即,它不与角色绑定)。这种安全性适用于CRM视图和表单,因此它应该适合您的场景,即所有基于web的请求都来自模拟用户。

FLS确实会对性能产生影响。在大容量场景中,您可能会考虑将"私有"属性移动到一个新实体,将其与原始公共实体关联,并单独确保对私有实体的访问。

最新更新