SQL Server 安全

SQL Server 帐户和角色在 Microsoft AppFabric 1.1 for Windows Server 安全方面起着至关重要的作用。AppFabric 使用这些 SQL Server 实体来控制对某些存储和表的访问,这些存储和表包含来自监控操作的数据,以及与工作流暂留相关的状态控制数据。AppFabric 不提供辅助进行数据库安全管理的工具。若要创建帐户和角色,以及查看、操作和向数据库对象分配适当的权限,请使用数据库安装附带的工具支持。对于 SQL Server,请使用 SQL Server Management Studio。

AppFabric 使用 SQL Server 登录和角色来管理对一些资产(如暂留和监控存储以及存储过程)的访问。通过权限对表和存储过程应用安全策略,这些策略确定谁可以对暂留和监控架构进行读取、写入和执行管理操作。每个架构均通过其自身的一套安全策略进行安全保护。

SQL Server 身份验证模式和 AppFabric

SQL Server 提供了两种方法来保护其 AppFabric 数据库服务器身份验证安全:

  • Windows 身份验证。由默认的 Windows 身份验证模式提供。对于 SQL Server,此模式是最安全的身份验证模式。配置 Windows 身份验证模式后,SQL Server 使用 Windows 安全来验证 Windows 操作系统的请求用户帐户的帐户和密码。

  • SQL Server 身份验证。由 SQL Server 身份验证模式提供。此模式仅用于与需要使用显式用户帐户和密码来访问 SQL Server 的应用程序和用户的向后兼容。此模式为安全性最低的模式。

虽然 AppFabric 可以与 SQL Server 身份验证配合使用,但传递配置文件的连接字符串中嵌入的用户帐户名和密码并非推荐的最佳安全操作。强烈建议您将 SQL Server 配置为使用 Windows 身份验证模式并避免使用 SQL Server 身份验证模式。

如果必须使用 SQL Server 身份验证模式,或如果使用的非 SQL Server 提供程序要求存储连接字符串中的密码,则建议您使用加密的连接字符串。AppFabric 无法处理配置文件的加密部分,因此,您无法通过使用 AppFabric 工具来查看或添加加密的连接字符串。

如果您需要通过对配置文件的某些部分进行加密来保证 AppFabric 计算机上配置文件的安全,请使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。您可以使用此工具对配置文件中 AppFabric 用户界面以外的安全敏感部分进行加密(-pe 选项)。如果以后需要查看或修改这些部分,可以使用 –pd 选项对其进行解密。通过解密这些部分,您可以在 AppFabric 工具中查看和更改这些部分、将更改保存到配置文件,并使用 AppFabric 外的工具重新对这些部分进行加密。有关如何使用 ASP.NET IIS 注册工具的详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) (https://go.microsoft.com/fwlink/?LinkId=169163)(可能为英文网页)。

SQL Server 登录

SQL Server 登录要求通过用户帐户和密码登录到 SQL Server 计算机。您可以将其视作访问权限,或者 Windows 安全术语中的身份验证。SQL Server 使用 Windows 集成身份验证来识别尝试访问或管理 AppFabric 数据库资源的安全主体。若要使用 Windows 集成身份验证连接到 SQL Server,您必须提供应用程序运行所使用的 Windows 标识。您还必须确保已向该标识授予对 SQL Server 数据库的适当访问权限。

若要对数据库架构或数据执行任何配置或操作,必须将登录帐户映射到具有相应权限的 SQL Server 角色。SQL Server 角色的工作方式类似于 Windows 组。SQL Server 角色中登录帐户的成员身份指示该登录帐户对管理活动和数据库操作具有多大的控制。登录帐户可以是多个数据库角色的成员。

这些 SQL Server 登录在安装 AppFabric 时创建。

登录名 Windows 帐户 数据库角色成员

AS_Administrators

LOCALHOST\AS_Administrators

  • ASMonitoringDbAdmin

  • ASMonitoringDbReader

  • ASMonitoringDbWriter

  • 公用

  • Microsoft.ApplicationServer.DurableInstancing.WorkflowAdministrators

  • Microsoft.ApplicationServer.DurableInstancing.WorkflowManagementServiceUsers

  • System.Activities.DurableInstancing.InstanceStoreObservers

  • System.Activities.DurableInstancing.WorkflowActivationUsers

AS_Observers

LOCALHOST\AS_Observers

  • ASMonitoringDbReader

  • 公用

  • System.Activities.DurableInstancing.InstanceStoreObservers

IIS_IUSRS

BUILTIN\IIS_IUSRS

  • 公用

  • System.Activities.DurableInstancing.InstanceStoreUsers

SQL Server 数据库角色

SQL Server 具有三种类型的数据库角色:服务器、应用程序和数据库。为了全面,我们在此简要地介绍一下。AppFabric 专门利用数据库角色模型来保证其大多数 SQL Server 的安全。

  • SQL Server 的“服务器”角色。SQL Server 的“服务器”角色是服务器级别的任何存储之外定义的。SQL Server 角色已预定义,因此无法进行数字或内容方面的修改。常见服务器角色的一个示例为 sysadmin 角色。此角色中的成员允许登录帐户完全控制所有数据库操作,并对任何存储中的 SQL Server 数据执行任何操作。AppFabric 在其安全模型中不显式使用任何服务器角色。

  • SQL Server 的“应用程序”角色。应用程序角色支持特定应用程序的更复杂的自定义安全需求。存储可由具有共同需求的多个应用程序使用,以便在任一应用程序访问其数据时对数据执行安全保护。AppFabric 在其安全模型中不显式使用任何应用程序角色。

  • SQL Server 的“数据库”角色。 AppFabric 充分使用数据库角色。有三种类型的数据库角色:公用、用户定义和固定。为了全面,我们将在此进行介绍。AppFabric 专门利用用户定义的数据库角色模型来保证其许多 SQL Server 的安全。

    有三种类型的 SQL Server 数据库角色:

    • 公用。公用数据库角色包含所有数据库用户的默认访问权限。因此,AppFabric 所创建的每个登录帐户均为此角色的成员。

    • 固定。如同 SQL Server 的“服务器”角色(例如 sysadmin),固定数据库角色无法修改。与存在于服务器级别的服务器角色不同的是,数据库角色存在于每个存储的数据库级别。固定数据库角色的一个示例为 db_owner。您可以将 SQL Server 登录用户帐户添加到固定的数据库角色或从中将其删除。

    • 用户定义。 AppFabric 在安装过程中创建空白的特定用户定义的数据库角色。AppFabric 安装程序不将任何 Windows 帐户或 SQL Server 登录帐户显式插入到这些用户定义的数据库角色。您必须使用 SQL Server 管理工具来显式添加帐户。

AppFabric 使用 SQL Server 数据库角色来控制对其监控数据存储和暂留数据存储的访问。当初始化新 AppFabric 监控数据存储或暂留数据存储时,安装过程中将创建几个用户定义的数据库安全角色。下表显示了如何将这些角色映射到上一部分中所述的 SQL Server 登录。

SQL Server 用户定义的角色 架构 映射的登录 权限

ASMonitoringDbAdmin

监控

AS_Administrators

写入临时表、读取事件视图以及调用清除和存档存储过程

ASMonitoringDbReader

监控

AS_Administrators 和 AS_Observers

从事件视图中读取

ASMonitoringDbWriter

监控

AS_Administrators

写入临时表和调用导入过程

Microsoft.ApplicationServer.DurableInstancing.WorkflowAdministrators

暂留

AS_Administrators

将控制命令加入到存储的命令队列

System.Activities.DurableInstancing.InstanceStoreObservers

暂留

AS_Administrators 和 AS_Observers

从实例存储视图中读取

System.Activities.DurableInstancing.InstanceStoreUsers

暂留

BUILTIN\IIS_IUSRS

调用与暂留有关的存储过程

Microsoft.ApplicationServer.DurableInstancing.WorkflowManagementServiceUsers

暂留

AS_Administrators

将控制命令调出存储的命令队列

System.Activities.DurableInstancing.WorkflowActivationUsers

暂留

AS_Administrators

可激活的工作流实例的查询实例存储

如果使用的是 Active Directory,则强烈建议您使用域帐户来设计 AppFabric 安全角色,以简化多台计算机之间的安全。作为 AppFabric 管理员,可以通过 Active Directory 为管理员和观察者角色显式创建两个自定义组帐户。例如,可以将其称为“DOMAIN\MyAppFabricAdmins”和“DOMAIN\MyAppFabricObservers”。然后,可以通过将“DOMAIN\MyAppFabricAdmins”组手动添加到 LOCALHOST\AS_Administrators 组,并将“DOMAIN\MyAppFabricObservers”组手动添加到 LOCALHOST\AS_Observers 组,向各计算机上的两个组授予相应的权限。事件收集服务 和 Workflow Management service 需要在“DOMAIN\MyAppFabricAdmins”组成员的域帐户下运行。

security安全 注意
在执行过程中,使用 SQL Server 的 AppFabric cmdlet 依赖于这些 SQL Server 数据库角色对其标识进行身份验证。

非 SQL Server 数据库存储

SQL Server 数据库角色特定于 SQL Server。但是,如果不使用默认的 SQL Server 提供程序而选择写入您自己的自定义提供程序,则可以将这些角色的功能映射到其非 SQL Server 存储中的对等功能。

对于非 SQL Server 存储,需要在连接字符串中包含用户 ID 和密码,以保证存储访问的安全。虽然允许将连接字符串中的用户 ID 和密码传递到存储(如使用 SQL Server 身份验证),但我们不建议这样做。如果传递连接字符串中的用户 ID 和密码是您唯一的选择,请务必按照适当的 .NET Framework 安全操作,以确保连接字符串已进行加密。

备注

使用加密的连接字符串时,关联的 IIS 应用程序将正常运行。但是,当连接字符串被加密时,相关的 IIS Manager 工具将不起作用。若要使用这些工具,必须对连接字符串进行解密,使用 IIS 工具对配置进行更改,然后重新对连接字符串进行加密。

  2012-03-05