安全性是任何Sitecore构建的重要组成部分。它可确保您的内容作者具有适当级别的访问权限,以管理他们拥有的内容,并授予他们访问不同Sitecore功能的权限。

Sitecore附带了许多提供功能访问的开箱即用角色。对于本文,我们将忽略开箱即用的角色以及对特定Sitecore功能的权限。相反,我们将专注于您通常需要创建自己的自定义角色并实现自定义安全性的区域,或者更具体地说,内容作者编辑内容所需的权限。

 
在Sitecore中,内容作者编辑内容的能力由3个关键领域决定: 
  1. 您尝试编辑的内容项的写访问权。这些项目是您站点中的页面,组件的数据源,媒体库中的媒体等。
  2. 语言写入您正在进行编辑的语言的访问权限
  3. 工作流程写入对当前项目的工作流程状态的访问权限

如果内容作者缺少任何这些权限,则他们无法编辑项目。 
 
作为最佳实践,我们将树的每个区域分别保护到我们创建的自定义角色。我们创建了一个内容项角色,一个语言访问角色(如果有多种语言在运行)和一个工作流访问角色。通过保持角色分离而不是保护单个角色的所有权限,我们可以创建一个非常精细的安全实现,尤其是随着构建复杂性的增加。例如,当您推出其他网站或开始将您的单个网站保护到所有权区域时,您可以创建其他内容项角色,当您开始支持站点中的多种语言时,您可以创建其他语言角色,并且随着工作流中状态的数量的增加,您可以创建其他工作流角色

这在实践中看起来像什么?这里是一个例子,说明使用上面的图表作为基础,对应于三个支柱中每个支柱的示例角色的实际实现可能是什么样的:

在这种情况下,假设您的内容树区域是安全的,以便只有属于人力资源部门的人员才能编辑内容。您可能需要更改编辑权限的分配以满足以下方案:

  • 场景#1:人力资源,仅限法语,在线编辑
  • 场景#2:人力资源,包括法语和英语,Web Publisher
  • 场景#3:人力资源,仅限英语,Web Publisher

以下是使用上述角色实现这些方案(以及更多)的方法,同时保留编辑内容所需的所有先决条件:

场景#1

场景#2

场景#3

如场景#2所示,您甚至可以从单个支柱添加多个角色来扩展该区域的权限。在这种情况下,我们通过使内容作者成为Content Author EnglishContent Author French角色的成员,为内容作​​者授予了对这两种语言的权限。 
 
我应该补充一点,虽然这种方法提供了精细的安全实现,但如果您有一个特定的安全方案在大量用户中重复,您可以通过创建超级角色来让您的生活更轻松。例如,对于场景#1,您可以创建一个自定义角色,该角色是所有三个人力资源,内容作者法语在线编辑器的成员角色。您可以简单地将用户分配给超级角色,而不是将所有三个角色分配给单个用户,并且将应用来自其他角色的所有权限。这种方法可以保持您的安全粒度,同时可以快速分配常见职责。 
 
正如您所看到的,此特定模型可以非常灵活,可以通过将安全性隔离到这些特定于柱的角色来帮助将来证明您的安全性。 

Sitecore安全性第1部分:自定义角色和权限的更多相关文章

  1. 在微服务系统开发部署中使用Azure RBAC自定义角色

    Azure的官方文档介绍了如何创建用于Azure基于角色的访问控制的自定义角色(RBAC Role). 我们也可以根据同样的原理把RBAC细粒度资源管理运用于微服务产品的开发部署中.(https:// ...

  2. Azure自定义角色实现RBAC

    简要说明: 当前Azure Portal上只能针对订阅或具体某一资源,实现访问控制,也就是对某一具体资源实现访问/使用/删除,但无法实现创建.例如:当前的需求为,新添加用户只具有对CDN服务的管理使用 ...

  3. SpringSecurity 自定义用户 角色 资源权限控制

    SpringSecurity 自定义用户 角色 资源权限控制 package com.joyen.learning.security; import java.sql.ResultSet; impor ...

  4. oracle管理角色和权限

    介绍 这一部分主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必需为其授予系统的权限:如果 ...

  5. ASP.NET MVC 基于角色的权限控制系统的示例教程

    上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...

  6. C#_MVC 自定义AuthorizeAttribute实现权限管理

    随笔- 28  文章- 31  评论- 16 MVC 自定义AuthorizeAttribute实现权限管理   在上一节中提到可以使用AuthorizeAttribute进行权限管理: [Autho ...

  7. MVC 自定义AuthorizeAttribute实现权限管理

    在上一节中提到可以使用AuthorizeAttribute进行权限管理: [Authorize] public ActionResult TestAuthorize() { return View() ...

  8. Membership角色与权限管理

    安全性:成员资格与角色:验证与授权. 一.建数据库:在VS工具中用DOS环境执行ASPNET_REGSQL 二.配置程序访问数据库: > 在web.config之中加入 <connecti ...

  9. ORACLE - 用户和角色的权限管理

    在ORACLE中,创建用户后需要授权才能使用. 一.用户管理 1. 用户和角色信息查询 --查询所有用户 SQL> select * from dba_users; --经授予的用户或角色的系统 ...

随机推荐

  1. 设置ItelliJ IDEA里修改jsp不重启tomcat

    设置ItelliJ IDEA里修改jsp不重启tomcat On Upate Action 与 On Frame Deactivation 这两个选项的设置,依赖于 项目的部署方式 是war包 还是 ...

  2. 获取Object对象属性的方法,Reflect.ownKeys, Object.getOwnPropertyNames,Object.getOwnPropertySymbols,Object.keys,for in

    let triangle={ a:1, b:2, c:3 } function coloTriangle(){ this.color='red'; } coloTriangle.prototype=t ...

  3. eclipse设置序列化忽略生成serialVersionUID警告

    java中的类想要序列化必须实现java.io.Serializable接口,一般实现接口都会用警告信息,提示生成serialVersionUID,虽然我觉得这个应该生成才合理.这里还是记录一下取消生 ...

  4. JS数据打印的几种方式

    /** * 在页面输出内容! */ document.write("This's Great!"); /** * 控制台打印: */ console.log("This ...

  5. 学Redis

    Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis ...

  6. leetcode4 Median of Two Sorted Arrays学习记录

    学习了扁扁熊的题解:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/4-xun-zhao-liang-ge- ...

  7. BeyondCorps

    This repository provides a short description of the BeyondCorp security model and resources for impl ...

  8. oneinstack——证书更新

    如果你安装好 oneinstack 你的定时任务就会自动添加 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh ...

  9. 没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限

    今天朋友在创建新栏目时出现了一个无法生成的错误,提示没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限,其实这个相对比较 ...

  10. 【反防盗链】img 标签 访问图片 返回403 forbidden问题

    解决方案,页面头添加 <meta name="referrer" content="no-referrer" /> 隐藏请求体中标注来源referr ...