Business Connectivity Services 安全性概述 (SharePoint Foundation 2010)

 

适用于: SharePoint Foundation 2010

上一次修改主题: 2016-11-30

本文介绍 Microsoft Business Connectivity Services 服务器和客户端的安全体系结构、受支持的安全环境、用于将外部内容类型连接到外部系统的身份验证模式、可用于存储对象的授权选项以及用于配置 Microsoft Business Connectivity Services 安全的一般方法。

本文内容:

  • 关于本文

  • Business Connectivity Services 安全体系结构

  • Business Connectivity Services 身份验证概述

  • Business Connectivity Services 权限概述

  • 保护 Business Connectivity Services

关于本文

Microsoft Business Connectivity Services 提供用于对访问外部系统的用户进行身份验证的安全功能,以及用于配置外部系统数据使用权限的安全功能。Microsoft Business Connectivity Services 高度灵活,可容纳所支持的 Microsoft Office 2010 应用程序以及 Web 浏览器中的众多安全方法。

Business Connectivity Services 安全体系结构

本节介绍 Microsoft Business Connectivity Services 安全体系结构。

安全注释Security Note
建议您在客户端计算机和前端服务器之间的所有通道上使用安全套接字层 (SSL)。另外,还建议您在运行 Microsoft SharePoint Foundation 2010 的服务器和外部系统之间使用安全套接字层或 Internet 协议安全性 (IPSec)。例外情况是,当使用 SOAP 1.1 协议将消息传输至外部系统或连接到 SQL Server 数据库时,不能使用 SSL。但是,在那些情形下,可使用 IPSec 保护数据交换。

访问外部数据

当用户从 Web 浏览器访问外部数据时,将涉及到三个系统:已登录用户的客户端计算机、Web 服务器场和外部系统。

Web 浏览器中的 BCS 安全体系结构

  1. 用户通常可以通过 Web 浏览器与外部列表中的外部数据进行交互,也可以通过使用 Web 部件进行交互。

  2. 前端服务器上的 BDC 服务器运行时用 Business Data Connectivity Service 中的数据连接到外部系统上的操作并执行这些操作。

  3. Secure Store Service 可安全地存储外部系统的凭据集,并将这些凭据集与单个标识或组标识关联。

    重要

    SharePoint Foundation 2010 中不包含 Secure Store Service。如果您在 SharePoint Foundation 2010 中需要安全存储,则必须提供自定义的安全存储提供程序。

  4. 安全令牌服务是一种 Web 服务,该服务通过颁发由基于用户帐户信息的标识声明组成的安全令牌,对身份验证请求做出响应。

  5. Microsoft Business Connectivity Services 可将凭据传递给配置为使用基于声明的身份验证的数据库和 Web 服务。有关基于声明的身份验证的概述,请参阅规划身份验证方法 (SharePoint Foundation 2010)

Business Connectivity Services 身份验证概述

Microsoft Business Connectivity Services 可配置为通过使用下面几种方法将身份验证请求传递给外部系统:

  • 凭据 凭据通常采用名称/密码的形式。有些外部系统可能还要求提供其他凭据,如个人标识号 (PIN) 值。

  • 声明 可将安全声明标记语言 (SAML) 票据传递给提供外部数据的声明感知服务。

针对凭据身份验证配置 Business Connectivity Services

Microsoft Business Connectivity Services 可使用用户提供的凭据对外部数据请求进行身份验证。支持用户可以用来针对访问外部数据而提供凭据的下列方法:

  • Windows 身份验证:

    • Windows 质询/响应 (NTLM)

    • Microsoft Negotiate

  • 非 Windows 身份验证

    • 基于表单

    • 摘要

    • 基本

在配置 Microsoft Business Connectivity Services 以便传递凭据时,解决方案设计者会向外部内容类型中添加身份验证模式信息。身份验证模式可提供 Microsoft Business Connectivity Services 信息,用于说明如何处理来自用户的传入身份验证请求并将该请求映射为一组可传递给外部内容系统的凭据。例如,身份验证模式可以指定将用户的凭据直接传递给外部数据系统,也可以指定应将用户的凭据映射到 Secure Store Service 中存储的帐户,然后再将该帐户传递给外部系统。

您可通过下列方式将一种身份验证模式与一种外部内容类型进行关联:

  • 当在 Microsoft SharePoint Designer 中创建外部内容类型时。

  • 如果外部系统是 Web 服务,则可以使用 Microsoft Business Connectivity Services 管理页来指定身份验证模式。

  • 可以通过直接编辑用于定义外部内容类型的 .XML 文件来指定身份验证模式。

下表描述了 Microsoft Business Connectivity Services 的身份验证模式:

身份验证模式 说明

PassThrough

将登录用户的凭据传递给外部系统。这要求该用户凭据对于外部系统来说是已知的。

备注

如果 Web 应用程序未配置为使用 Windows 凭据进行验证,则会将 NT Authority/匿名登录帐户而不是用户的凭据传递到外部系统。

此模式在 Microsoft Business Connectivity Services 管理页面和 SharePoint Designer 2010 中称为用户标识

RevertToSelf

当用户从 Web 浏览器访问外部数据时,此模式将忽略用户凭据,并将 BCS 运行时在 Web 服务器上运行时使用的应用程序池标识帐户发送到外部系统。当用户从 Office 客户端应用程序访问外部数据时,此模式等效于 PassThrough 模式,因为运行在客户端上的 Microsoft Business Connectivity Services 将使用该用户的凭据运行。

此模式在 Microsoft Business Connectivity Services 管理页面和 SharePoint Designer 2010 中称为 BDC 标识

备注

默认情况下,不启用 RevertToSelf 模式。必须使用 Windows PowerShell 来启用 RevertToSelf 模式才能创建或导入使用 RevertToSelf 的模型。有关详细信息,请参阅 RevertToSelf 身份验证模式。宿主环境中不支持 RevertToSelf 模式。

WindowsCredentials

对于外部 Web 服务或数据库,此模式将使用 Secure Store Service 将用户凭据映射到外部系统上的一组 Windows 凭据。

此模式在 Microsoft Business Connectivity Services 管理页面和 SharePoint Designer 2010 中称为模拟 Windows 标识

Credentials

对于外部 Web 服务,此模式使用 Secure Store Service 将用户凭据映射到 Windows 以外的来源提供的用于访问外部数据的一组凭据。使用此模式时,Web 服务应使用基本身份验证或摘要式身份验证。

重要

为了帮助在此模式下保持安全性,建议使用安全套接字层 (SSL) 或 Internet 协议安全性 (IPSec) 来保证 Microsoft Business Connectivity Services 和外部系统之间的连接。

此模式在 Microsoft Business Connectivity Services 管理页面和 Office SharePoint Designer 中称为模拟自定义标识

RDBCredentials

对于外部数据库,此模式使用 Secure Store Service 将用户凭据映射到由 Windows 之外的源提供的一组凭据。为了保证此模式下的安全性,建议使用安全套接字层 (SSL) 或 IPSec 来确保 Microsoft Business Connectivity Services 与外部系统之间连接的安全性。

此模式在 Microsoft Business Connectivity Services 管理页面和 Office SharePoint Designer 中称为模拟自定义标识

DigestCredentials

对于 WCF Web 服务,此模式使用 Secure Store Service 来将用户的凭据映射到使用摘要式身份验证的一组凭据。

此模式在 Microsoft Business Connectivity Services 管理页面和 SharePoint Designer 2010 中称为模拟自定义标识 - 摘要

下图显示了使用凭据时的 Microsoft Business Connectivity Services 身份验证模式。

Business Connectivity Services 身份验证

  • 在 PassThrough(用户标识)模式 (A) 中,已登录用户的凭据将直接传递给外部系统。

  • 在 RevertToSelf(BDC 标识)模式 (B) 中,用户的登录凭据由运行 Microsoft Business Connectivity Services 的进程帐户的凭据替换,并且这些凭据将传递给外部系统。

  • 有三种模式使用 Secure Store Service:WindowsCredentials(模拟 Windows ID)、RdbCredentials(模拟自定义 ID)和 Credentials。在这些模式中,用户的凭据映射到用于外部系统的一组凭据,并且 Microsoft Business Connectivity Services 会将这些凭据传递到外部系统。解决方案管理人员可将每个用户的凭据映射到外部系统中的唯一帐户,也可以将一组经过身份验证的用户映射到单个组帐户。

针对基于声明的身份验证配置 Business Connectivity Services

Microsoft Business Connectivity Services 可基于传入安全令牌提供对外部数据的访问,并且可将安全令牌传递给外部系统。一个安全令牌由关于某个用户的一组标识声明组成,将安全令牌用于身份验证称为“基于声明的身份验证”。SharePoint Foundation 包含一个颁发安全令牌的安全令牌服务。

下图演示安全令牌服务和 Secure Store Service 在基于声明的身份验证过程中如何协同工作:

BCS 中的声明身份验证

  1. 用户尝试对配置为采用声明身份验证的外部列表执行操作。

  2. 客户端应用程序通过安全令牌服务请求一个安全令牌。

  3. 根据请求用户的标识,安全令牌服务将颁发包含一组声明和一个目标应用程序标识符的安全令牌。安全令牌服务将安全令牌返回到客户端应用程序。

  4. 客户端将安全令牌传递给 Secure Store Service。

  5. Secure Store Service 评估该安全令牌,并使用目标应用程序标识符返回应用于外部系统的一组凭据。

  6. 客户端接收凭据,并将它们传递给外部系统,以便能够执行操作(如检索或更新外部数据)。

Business Connectivity Services 权限概述

Microsoft Business Connectivity Services 中的权限将单个帐户、组帐户或声明与针对元数据存储中某个对象的一个或多个权限级别进行关联。通过正确设置针对 Microsoft Business Connectivity Services 中的对象的权限,解决方案能够安全纳入外部数据。在计划权限策略时,建议向每个用户或组提供所需的特定权限,使得凭据能提供执行所需任务需要的最低特权。

警告

正确设置 Microsoft Business Connectivity Services 中的权限是整体安全策略中的一个组成部分。与之同等重要的是保证外部系统中数据的安全。如何做到这一点取决于外部系统的安全模型和功能,这一问题不在本文讨论范围之内。

备注

Business Connectivity Services 使用元数据对象上的权限和外部系统上的权限来确定授权规则。例如,安全修整程序可阻止外部数据显示在用户的搜索结果中。但是,当用户以某种方式发现了经剪裁的外部数据的 URL 时,如果他们具有元数据对象和外部系统的必需权限,则他们可访问外部数据。阻止用户访问外部数据的正确方法是在 Business Connectivity Services 和外部系统中都设置相应的权限。

可对哪些对象设置权限?

Business Data Connectivity Service 的每个实例(或者,在托管情况下为每个 分区)都包含一个元数据存储,其中包含为该存储定义的所有模型、外部系统、外部内容类型、方法和方法实例。这些对象按照层次结构进行组织,如下图所示:

元数据存储区层次结构

备注

在前面的层次结构图中,括号中的标签是在 Microsoft Business Connectivity Services 元数据架构中定义的对象的名称。不在括号中的标签是在 Business Data Connectivity Service 的用户界面中显示的每个对象的名称。有关 Microsoft Business Connectivity Services 元数据架构的完整论述以及众多开发任务的演练,请参阅 Microsoft SharePoint 2010 软件开发工具包(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=166117&clcid=0x804 )。

元数据存储中的对象层次结构决定了哪些对象可将其权限传播给其他对象。在图中,可设置(或传播)权限的每个对象都用实线来显示;从父对象获取权限的每个对象都用虚线来显示。例如,该图表明,可通过将权限分配给外部系统 (LobSystem) 来保证其安全,但不能将权限直接分配给操作。不能分配权限的对象从其父对象获取权限。例如,操作将从它的父对象“外部内容类型(实体)”获取权限。

安全注释Security Note
当传播元数据存储中某个对象的权限时,该项的所有子项的权限设置都由传播对象的权限取代。例如,如果通过外部内容类型传递权限,则该外部内容类型的所有方法和方法实例都会接收到新权限。

可对元数据存储及其包含的对象设置四个权限级别:

  • 编辑

    安全注释Security Note
    “编辑”权限应被视为具有很多特权。通过“编辑”权限,恶意用户可以窃取凭据或损坏服务器场。我们建议在生产系统中,只向您信任的可具有管理员级别权限的人员设置编辑权限。
  • 执行

  • 在客户端中可选

  • 设置权限

下表定义了可对各种对象设置的权限的含义。

对象 定义 “编辑”权限 “执行”权限 “在客户端中可选”权限 “设置权限”权限

元数据存储

存储在 Business Data Connectivity Service 中的 XML 文件的集合,每个 XML 文件都包含模型、外部内容类型和外部系统的定义。

用户可以创建新的外部系统。

虽然元数据存储本身没有“执行”权限,但可使用此设置将“执行”权限传播给元数据存储中的子对象。

虽然元数据存储本身没有“在客户端中可选”权限,但可使用此设置将这些权限传播给元数据存储中的子对象。

用户可以通过从元数据存储中传递权限对元数据存储中的任何对象设置权限。

模型

一个 XML 文件,其中包含对一个或多个外部内容类型及与之相关的外部系统的几组说明,并包含特定于环境的信息(例如身份验证属性)。

用户可以编辑模型文件。

“执行”权限对模型不适用。

“在客户端中可选”权限对模型不适用。

用户可对模型设置权限。

外部系统

可以建模的受支持数据源(如数据库、Web 服务或 .NET 连接程序集)的元数据定义。

用户可以编辑外部系统。通过设置此权限,还可使外部系统和它所包含的任何外部系统实例在 SharePoint Designer 中可见。

虽然外部系统本身没有“执行”权限,但可使用此设置将“执行”权限传播给元数据存储中的子对象。

虽然外部系统本身没有“在客户端中可选”权限,但可使用此设置将这些权限传播给元数据存储中的子对象。

用户可对外部系统设置权限。

外部内容类型

一个可重用元数据集合,它定义来自一个或多个外部系统的一组数据、可用于该数据的操作以及与该数据相关的连接信息。

虽然外部内容类型本身没有“编辑”权限,但可使用此设置将这些权限传播给元数据存储中的子对象。

用户可针对外部内容类型执行操作。

用户可以创建外部内容类型的外部列表。

用户可以针对外部内容类型设置权限。

方法

与外部内容类型相关的操作。

用户可以编辑方法。

虽然方法本身没有“执行”权限,但可使用此设置将“执行”权限传播给元数据存储中的子对象。

对方法没有“在客户端中可选”权限。

用户可在对方法设置权限。

方法实例

对于特定方法,描述如何通过使用特定的默认值集来使用方法。

用户可以编辑方法实例。

用户可以执行方法实例。

对方法实例没有“在客户端中可选”权限。

用户可对方法实例设置权限。

Business Data Connectivity Service 中的特殊权限

与前面所述的设置权限的常规功能一起,Business Data Connectivity Service 有一组特殊权限:

  • 服务器场管理员拥有对 Business Data Connectivity Service 的完整权限。例如,若要能够维护或修复该服务的实例,必须具有这种权限。但请注意,服务器场管理员没有对元数据存储中任何对象的执行权限,必要时,这一权限必须由 Business Data Connectivity Service 的实例管理员明确提供。

  • Windows PowerShell 用户是服务器场管理员,可以针对 Business Data Connectivity Service 运行命令。

  • 前端服务器上的应用程序池帐户拥有与服务器场管理员相同的 Business Data Connectivity Service 权限。这一权限对基于 Microsoft Business Connectivity Services 生成部署包来说是必要的。

  • 大多数情况下,应授予 SharePoint Designer 用户对整个元数据存储的下列权限:“编辑”、“执行”和“在客户端中可选”。不应授予 SharePoint Designer 用户“设置”权限。必要时,可以将 SharePoint Designer 用户的权限限制为仅针对部分元数据存储。

    警告

    为了确保解决方案安全,应使用 SharePoint Designer 在可自由分配“编辑”权限的测试环境中创建外部内容类型。在将被测试的解决方案部署到生产环境中时,请移除“编辑”权限以确保外部数据的完整性。

常见任务及其相关权限

本节介绍 Business Data Connectivity Service 中的常见任务以及执行这些任务的必需权限。

任务 权限

在元数据存储中创建新对象

若要创建新的元数据对象,用户必须拥有父元数据对象的编辑权限。例如,若要在外部内容类型中创建新方法,用户必须拥有对该外部内容类型的权限。有关元数据存储中对象间的子/父关系,请参见本文前面介绍的图。

从元数据存储中删除对象

若要删除元数据对象,用户必须拥有对该对象的编辑权限。若要删除对象及其所有子对象(例如,删除外部内容类型及其所有方法),还需要对所有子对象的编辑权限。

向模型中添加外部内容类型

若要向模型中添加外部内容类型,用户必须拥有对该模型的编辑权限。

导入模型

若要将模型导入到元数据存储,用户必须拥有对该元数据存储的编辑权限。如果对模型未分配显式权限,则将授予导入模型的用户对该模型的编辑权限。

导出模型

若要从元数据存储中导出模型,用户必须拥有对该模型以及该模型中包含的所有外部系统的编辑权限。

生成部署包

部署包是由前端服务器所使用的应用程序池帐户生成的。此帐户拥有对元数据存储的完全权限,以便能够执行此任务。

对元数据存储设置初始权限。

当首次创建 Business Data Connectivity Service 的实例时,它的元数据存储是空的。服务器场管理员拥有对该存储的完整权限,并可以设置初始权限。

保护 Business Connectivity Services

本节讨论可用于帮助保护 Business Connectivity Services 的其他方法

服务帐户

为进行安全隔离,Business Data Connectivity Service 应用程序和前端服务器不应使用同一服务帐户。

服务器到服务器通信

保护 Business Data Connectivity Service 应用程序和外部系统之间的通信可帮助确保不会损坏敏感数据。您需要使用加密信道来保护在运行 SharePoint Foundation 2010 的服务器和外部系统之间发送的数据。Internet 协议安全性 (IPsec) 是一种可用于帮助保护通信的方法。选择哪种方法取决于您要保护的特定信道以及最适合于贵组织的优点和缺点。

使用 FileBackedMetadataCatalog 的应用程序

出于安全方面的考虑,默认情况下在 SharePoint Foundation 2010 上禁用 RevertToSelf 身份验证模式。但这不会阻止使用 FileBackedMetadataCatalog 类的应用程序导入模型和执行使用 RevertToSelf 身份验证的呼叫。这样可通过将权限授予应用程序池帐户来提升用户的权限。在生产系统上安装所有应用程序之前,应检查这些应用程序,以确保它们未使用 FileBackedMetadataCatalog 类和 RevertToSelf 身份验证。