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

 

适用于: SharePoint Server 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 安全体系结构

本文介绍在从 Web 浏览器以及受支持 Office 2010 客户端应用程序(如 Microsoft Outlook 2010)进行身份验证时的 Microsoft Business Connectivity Services 安全体系结构。

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

从 Web 浏览器访问外部数据

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

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

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

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

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

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

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

从 Office 客户端应用程序访问外部数据

从受支持的 Office 客户端应用程序访问外部数据时,涉及两个系统:登录用户的客户端计算机和外部系统。当用户使用 Outlook 2010、Microsoft SharePoint Workspace 或 Microsoft Word 2010 与外部数据交互时,支持此模型。

Office 客户端应用程序中的 BCS 安全性

  1. Outlook 2010 用户通常在 Outlook 项目(如联系人或任务)中使用外部数据。SharePoint Workspace 2010 用户可在脱机状态下获取外部列表并与之交互。Word 2010 用户可向 Word 文档中插入外部数据。

  2. Office Integration Client Runtime 在运行在客户端上的 Microsoft Business Connectivity Services 与受支持的 Office 应用程序之间充当连接器。

  3. 如果将外部数据配置为使用基于声明的身份验证,客户端将与 SharePoint 场中的安全令牌服务进行交互以获取声明令牌。(有关详细信息,请参阅配置声明身份验证 (SharePoint Server 2010)

  4. 客户端计算机上的 BDC 客户端运行时使用 Business Data Connectivity Service 中的数据连接到外部系统并在外部系统中执行操作,以实现富客户端访问。

  5. 客户端缓存从 Business Data Connectivity Service 和 Secure Store Service 中缓存安全连接外部数据所需的信息,然后从 SharePoint 场刷新该缓存,以合并更新的信息。

  6. 客户端 Secure Store Service 允许最终用户配置自己的安全凭据。

  7. Microsoft Business Connectivity Services 可向数据库和声明感知服务传递凭据。

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 或 Microsoft Visual Studio 2010 中创建外部内容类型时。

  • 如果外部系统是 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 Server 包含一个颁发安全令牌的安全令牌服务。

下图演示安全令牌服务和 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 文件,它包含一个或多个外部内容类型的一系列说明、其相关的外部系统和特定于环境的信息(例如身份验证属性)。

用户可以编辑模型文件。

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

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

用户可对模型设置权限。

外部系统

受支持且可建模的数据源(如数据库、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 Data Connectivity Service 应用程序可在服务器场之间共享。为了从使用方服务器场(连接到远程位置以使用 Business Data Connectivity Service 应用程序的服务器场)生成部署包,使用方服务器场的前端服务器所使用的应用程序池帐户必须对发布服务器场上的元数据存储拥有权限。有关如何向应用程序池帐户分配权限的详细信息,请参阅设置权限以便使用方服务器场能够生成部署包

保护 Business Connectivity Services

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

服务帐户

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

服务器到服务器通信

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

使用 FileBackedMetadataCatalog 的应用程序

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