SharePoint 安全性基础知识入门 / 避免常见的陷阱

更新 12/18/07: 请参阅删除或修改默认的组名的一些技术的后果 Paul Liebrand 文章 (见他下面的评论以及).

概述:

SharePoint 安全是易于配置和管理. 不过, 它已被证明是真的包装他们的手在它附近一些第一次管理员难以. 不只如此, 我见过一些管理员来到一个完美的理解,在周一只把它丢了周五因为他们没有做任何配置在这段时间. (我承认对这一问题我自己). 这篇博客希望提供一个有用的 SharePoint 安全引子和指向一些安全配置的最佳实践.

重要说明:

这种描述基于开箱即用 SharePoint 安全. 我个人的经验被面向各地苔藓,所以可能会有一些苔藓的具体东西在这里, 但我相信它是准确的 WSS. 我希望看到的任何错误或遗漏的任何人都将点,在评论中或 电子邮件通知我. 我会改正后匆忙.

基础知识:

为施行本概述, 有四个基本方面对安全: 用户/用户组, 安全对象, 权限级别和继承.

用户和组 打破降到:

  • 个人用户: 从活动目录或创建在 SharePoint 中直接拉.
  • 团体: 从 active directory 直接映射或在创建 SharePoint. 组是用户的集合. 组是全球化的站点集合中. 他们永远不会"绑" 到特定的安全对象.

安全对象 打破降到最少:

  • 网站
  • 文档库
  • 列表和文档库中的各个项
  • 文件夹
  • 各种 BDC 设置.

那里其他安全对象, 但是你图片.

权限级别: 捆绑的颗粒 / 在列表中包含诸如创建/读取/删除条目的低级别的访问权限.

继承: 默认情况下从其包含的对象实体继承安全设置. 子网站从其父项继承权限. 继承他们网站的文档库. 等等等等等等.

涉及通过继承和权限级别的安全对象的用户和组.

最重要的安全规则,来理解, 曾经 🙂 :

  1. 组是简单的用户的集合.
  2. 组是全球网站集内 (e 小节. 没有这种东西在站点级别上定义的一个组).
  3. 不耐的组名称, 团体却不, 本身, 有任何特定的安全水平.
  4. 组在某一特定的安全对象的上下文中具有安全.
  5. 可将不同的权限级别分配给每个安全对象的同一组.
  6. Web 应用程序策略胜过所有这一切 (请参阅下面的).

安全管理员迷失在海上的组和用户列表可以始终依靠这些公理来管理和了解他们的安全配置.

常见的陷阱:

  • 组名虚假地暗示的权限: 开箱即用, SharePoint 定义一组组名字暗示了固有的安全级别. 考虑"参与者"组. 一个熟悉 SharePoint 安全性可能会看看那名字,假设,那组的任何成员可以"作出贡献" 对任何网站/列表/库在门户中. 这可能是真的,但并不是因为该集团的名字恰巧是"讨论参与者". 这是唯一真正开箱即用,因为该集团提供了权限级别,使它们能在根站点添加/编辑/删除内容. 通过继承, "参与者" 集团也可能在每个分站点添加/编辑/删除内容. 一个可以"打破" 继承链和更改权限级别的子站点这种所谓的"参与者的成员" 组不能作出贡献, 但只读取 (例如). 这不会是一个好主意, 很明显, 因为它将是非常令人困惑.
  • 组不在站点级别定义. 它很容易被混淆的用户界面. Microsoft 提供了方便的链接到用户/组管理通过每个站点的"人和组" 链接. 很容易相信,当我在网站"xyzzy" 我创建一个组通过 xyzzy 的人和团体联系起来,我只是在 xyzzy 创建只存在一组. 这不是个案. 我实际上已经创造了一群为整个网站集.
  • 组成员资格不会由站点不同 (e 小节. 它是一样到处都使用组): 考虑"所有者组" 和两个站点, "HR" 和"物流". 它会正常想两个独立的个体将会拥有这些网站 — HR 所有者和物流所有者. 用户界面轻松安全管理员责难这种情况下. 如果我不知道更好, 我可能会访问的用户和用户组的链接,通过人力资源网站, 选择"业主" 组并向该组添加我的 HR 主人. 一个月后, 物流上线. 访问从物流站点中的用户和用户组, 添加"业主拉起" 集团. 我看到那里 HR 所有者和删除她, 我在消除她从所有者在物流网站的思考. 事实上, 我在消除她从全球的所有者组. 接着而来的欢乐.
  • 对基于特定的角色的名称组失败: "审批者" 组是一个完美的例子. 什么可以这组批准成员? 他们在那里能批准它? 我真的想人物流部门能够批准人事相关文件吗? 当然不是. 始终命名组基于其在组织内的角色. 这将减少风险的组分配特定的安全对象所需的权限级别. 基于其预期角色名称组. 在前面的 HR/物流场景, 我应创建两个新的组: "HR 业主" 与"物流业主" 和分配每个明智的权限级别和对这些用户做他们的工作所需的最低金额.

其他有用的引用:

如果您做了它这远:

请让我知道你的想法通过评论或给我发电子邮件. 如果你知道其他有益的参考, 请这样做!

Technorati 标签:

快速、 方便: 创建数据视图 Web 部件 (DVWP)

有丰富的 WSS 伟大信息 3.0 数据视图 Web 部件 (DVWP) 从几个来源网上. 不过, 我发现它是出奇地难以找到非常基本的第一步的信息. 这里是另一篇文章中的"快速和容易" 要解决这系列.

请按照以下步骤创建数据视图 web 部件 (DVWP). 它们基于"公告" web 部件, 不过,适用于大多数列表.

  1. 创建通知 web 部件并将其添加到站点.
  2. 在 SharePoint 设计器中打开网站.
  3. 打开该网站 default.aspx.
  4. 选择通知 web 部件,然后右键单击.
  5. 从上下文菜单, 选择"转换到 XSLT 数据视图".

SharePoint 设计器会通知您,这个网站现在从其网站定义自定义. 这不一定不好, 但有重要的影响 (性能, 升级, 其他人) 这是超出了这个小小"快速和容易的范围" 条目. 要获取关于此主题的详细信息, 我推荐两书 在这里 和你最喜欢的互联网搜索.

确认你做到正确:

  1. 关闭并重新打开 web 浏览器 (为了避免意外地重复发布原始的"添加新的 web 部件").
  2. 选择 web 部件的箭头下拉列表,然后选择"修改共享 Web 部件" 从菜单中.
  3. 工具面板打开向右.
  4. 小组已从其惯常的 set 选项更改为此:
图像

“不能从 SharePoint 列表中获取列表架构列属性” — 描述-变通

这一周, 我们最后转载的问题,报告了由远程用户: 当她试图导出为 excel 列表的内容, 事情似乎开始工作, 但然后 Excel 会弹出一个错误: "不能从 SharePoint 列表获取列表架构列属性". 她跑了办公室 2003, windows XP 和连接到苔藓.

搜索互联网,并看见一些投机但没有内容 100% 确定. 因此, 这篇文章.

问题: 导出视图以 excel,包含日期 (日期 = 列的数据类型).

什么为我们工作: 转换到"单行文本"日期. 然后, 将其转换回日期.

这解决了这个问题. 很高兴看到转换工作, 实际上. 这是很紧张,这种方式转换的事情会失败, 但它却没有.

此 bug 已引发了巨大的阴影对客户端的头脑中的日期数据类型, 所以我们要找出一个明确的答案,从 Microsoft 和我希望后,在下一个短的时间与他们正式的答案和修补程序信息在此处更新.

其他参考资料:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<结束>

订阅我的博客.

Technorati 标签: ,

快速和简单: 嵌入超链接通过电子邮件发送从 SharePoint 设计师工作流

每月一次或两次, 有人张贴论坛问题: "如何包含超链接的 URL,都可以点击从 SharePoint 设计器的电子邮件?"

提交不进一步评论: (好, 其实后图像是进一步的评论意见):

图像

一个有用的解释跟进 Becky Isserman 如何在电子邮件中嵌入到项目的链接: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

新的发行版: 工作流设计器 SharePoint 的扩展 (字符串操作函数)

更新: 在这里看到的商业化这一项目的思考: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

我一直忙工作我 Codeplex 项目是目前侧重于提供字符串操作扩展到通过 SharePoint 设计器创建的工作流.

在这里看到的详细信息:

项目首页: http://www.codeplex.com/spdwfextensions

释放: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

版本 1.0 包括以下新功能:

函数 说明 (如果不相同.Net 功能,)
Num-条目() 返回数字的"条目" 根据指定的分隔符分隔的字符串中.

例如: 在一个字符串中的 Num 条目",b,c" 带分隔符"," = 3.

条目() 根据指定的分隔符分隔的字符串中返回的第 n 个标记.
长度 String.Length
替换() String.Replace()
包含() String.Contains()
返回"true 一词" 或者"虚假"一词.
子字符串(启动) String.Substring(启动)
子字符串(启动,长度) String.Substring(启动,长度)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
返回"true 一词" 或者"虚假"一词.
EndsWith() String.EndsWith()
返回"true 一词" 或者"虚假"一词.

解释一个 BDC 运行时错误

我引起表现在用户界面上,并在一个 BDC 错误本周 12 配置单元日志 在运行时.

第一次, 这似乎在用户界面中:

找不到要插入的所有标识符值,正确执行,使用名称 SpecificFinder MethodInstance 字段 … 确保输入的参数将与为此实体定义每个标识符关联的 TypeDescriptors.

这里是一个屏幕快照:

clip_image001

我也可能导致该消息出现在 12 在配置单元日志将 (使用我的专利的 high-tech-don't-try-this-at-home "神秘错误" 方法):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0在 BusinessDataWebPart.OnPreRender x0B8C SharePoint 门户服务器业务数据 6q4x 高异常: System.InvalidOperationException: 标识符值 ”, 类型的 ”, 是无效的. 预期的标识符值的类型 'System.String'. 在 Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(对象[] subIdentifierValues, LobSystemInstance lobSystemInstance) 在 Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(实体的实体, 对象[] userValues, LobSystemInstance lobSystemInstance) 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(查看 desiredView) 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

我到处寻找,发现了一些线索 MSDN 论坛, 但是他们并没有足以让我明白自己在做什么错. 我看过网络的广播 泰德帕蒂森 那我 公司 在服务器和来实现我的问题上存了.

在我的 ADF, 我连接到 SQL 数据库,如图所示:

            <属性 名称="RdbCommandText" 类型="System.String">
              <![CDATA[
                选择 SETID, CARRIER_ID, EFFDT, 描述, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      国家, 地址 1, 地址 2, 地址 3, ADDRESS4, 城市, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      县, 状态, 邮政, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, 电话, 扩展, 传真, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG 从 dbo.PS_CARRIER_ID_VW 与 (nolock)
                在哪里
                  (SETID <> 份额) 和
                  (较低(CARRIER_ID) >= 低(@MinId)) 和
                  (较低(CARRIER_ID) <= 低(@MaxId)) 和
                  (较低(描述) 喜欢低(@InputDescr))
                ]]>
            </属性>

我提供了该 SQL 从一个 DBA 人,据我所了解,它是 特别 他们只是为我创建视图. 有唯一的键是 CARRIER_ID.

这里是我介绍的 bug:

      <标识符>
        <标识符 名称="CARRIER_ID" TypeName="System.String" />
        <标识符 名称="描述" TypeName="System.String" /> 
</标识符>

某处沿线, 我曾设法混淆自己的意思 <标识符> 添加描述,即使它不是实际上的标识符. 我从标识符设置,就可以了描述! 它所有的工作.

我希望这可以为某人节省一些痛苦🙂

Technorati 标签: , , ,

你不能打败 SharePoint 的范围

在最后两天, 我已经参加了两次会议,在此期间,我们提出了 SharePoint 项目的结果. 首席信息官和他的团队加入第一次会议. 这是标准并不特别值得注意. IT 部门是明显是涉及在企业范围内部署的任何技术项目. 第二次会议扩大到包括 V.P. 从市场营销, 代表人力资源部的几个董事, 物流, 制造业, 资本项目, 质量, 采购, 企业的发展和其他部门 (其中一些人没有在当前阶段甚至直接参与). 这就是强大广泛的受众.

在我以前的生活中, 我主要从事的 ERP 和 CRM 项目. 他们都有一个相当广泛的解决方案域但不是与 SharePoint 一样宽. 要充分实现, SharePoint 项目合法和一定达到融入组织的每一个角落. 多少其他企业解决方案都有那种到达? 不是很多.

SharePoint 显然是巨大的机遇,对于我们有幸能在这空间. 它提供了一个很大的技术机会 (其中以某种方式开启了它的头 在这里 根据"技术你必须掌握"). 但更好, SharePoint 我们暴露在广泛和宽范围的业务流程,通过这些服务. 多少的 CRM 专家工作与制造方面的公司? 多少的 ERP 顾问工作与人力资源人才采集? SharePoint 超过他们两个.

像什么, 它并不完美, 但它是享受这个美好的地方.

爱 [填写您最爱的人/高正], 不要更改标题’ 网站栏.

关于 SharePoint 论坛, 有人偶尔会问起"更改标题的标签" 关于"从或删除标题列表".

底线: 不这样做!

不幸的是, 用户界面允许单向改变的如图所示的列标签:

图像

标题是"一项相关联的列" 内容类型. 很多, 很多, 许多 CT 的使用此列,如果您更改了这里, 它的涟漪出无处不在. 有是一个好机会,你不是有意这样的事情发生. 你也许是对自己的思维, "我有一个自定义查找列表和 ' 标题’ 只是没有道理的列的名称作为, 所以我要将其更改为状态代码’ 然后添加一个描述列。" 但如果你坚持这种想法和重命名 ' 标题’ 向状态代码, 每个列表中的标题 (包括文档库) 更改"状态代码" 和你大概 不想让这种事发生.

真正的问题是这是一个单向的变化. 知道的 UI"" "标题" 是一个保留的字. 所以, 如果你试着改变"状态代码" 返回到"标题", 它会阻止你和你现在 把自己涂成角 using paint that never dries 🙂

如果您已经更改了它那么会发生什么? 我还没见过我们所有想要的答案, 这是一种简单和容易的方法,以标签更改为标题. 马上, 最好的建议是要将其更改为类似于"Doc/项目标题". 这就是足够一般的标签,不可能为您的用户太刺耳.

我有几个其他的意见,对我研究的东西的待办事项列表:

  • 与 Microsoft 联系.
  • 做某事与对象模型, 也许在与功能结合.
  • 找出数据库架构和手动更新 SQL. (虽然这样做之前,您应该联系微软; 它将有可能作废您的支持合同).

如果有谁知道如何解决这个问题, 请张贴评论.

下午晚些时候更新, 11/15: 我发现这个链接的描述创建没有标题列的列表类型的方法: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF 和你的朋友, CDATA

我注意到有些尴尬和不必要的手-编码 RdbCommandText 在一些例子中的 (包括 MSDN 文档).

我想要指出到 BDC 的命令可以被包装在 CDATA 标记他们的"自然的新人" 窗体. 所以, 这尴尬的建设:

<属性 名称="RdbCommandText" 类型="System.String">
选择 dbo。MCRS_SETTLEMENT.id, dbo。MCRS_SETTLEMENT.settlement 从 dbo。MCRS_SETTLEMENT
在哪里 (id &gt;@MinId =) 和 (id &这是;= @MaxId)
</属性>

可以更好地表示这种方式:

<属性 名称="RdbCommandText" 类型="System.String">
<![CDATA[
选择 dbo。MCRS_SETTLEMENT.id, dbo。MCRS_SETTLEMENT.settlement 从 dbo。MCRS_SETTLEMENT
在哪里 (id >@MinId =) 和 (id <@MaxId =)
]]>
</属性>

</结束>

BDC 底漆

BDC 简介

功能示例: 连接到 SQL 数据库与嵌入的用户 id 和密码的 BDC ADF

我需要到 SQL 数据库通过 BDC 接通苔藓. 为测试/POC 目的, 我想要在 ADF 中嵌入的 SQL 帐户用户 id 和密码. 从开始 此模板 (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), 创建连接到特定的 SQL server 实例,并使用特定的用户 id 和密码登录 ADF 和代码片断所示:

  <LobSystemInstances>
    <LobSystemInstance 名称="ClaimsInstance">
      <属性>
        <属性 名称="AuthenticationMode" 类型="System.String">直通</属性>
        <属性 名称="DatabaseAccessProvider" 类型="System.String">SqlServer</属性>
        <属性 名称="RdbConnection 数据源" 类型="System.String">实际的 serveractual 实例</属性>
        <属性 名称="RdbConnection 初始目录" 类型="System.String">实际的初始目录</属性>
        <属性 名称="RdbConnection 集成安全性" 类型="System.String">SSPI</属性>
        <属性 名称="RdbConnection 池" 类型="System.String">false</属性>

        <!-- 这些都是关键的值: -->
        <属性 名称="RdbConnection 用户 ID" 类型="System.String">暗访的用户 ID</属性>
        <属性 名称="RdbConnection 密码" 类型="System.String">实际的密码</属性>
        <属性 名称="RdbConnection Trusted_Connection" 类型="System.String">false</属性>

      </属性>
    </LobSystemInstance>
  </LobSystemInstances>

它不是一种最佳做法, 但它是有用的快速和简单的配置来测试. 这是出奇地难以弄清楚. 我从来没有发现一个带有搜索关键字的功能示例:

  • adf 嵌入的用户 id 和密码
  • 在 adf 中嵌入的用户 id 和密码
  • 在 adf bdc 中嵌入的用户 id 和密码
  • sharepoint bdc 底漆
  • sharepoint 在 adf 中嵌入的用户 id 和密码

</结束>

订阅我的博客.