传输安全性涉及身份验证和(可选)对数据库之间交换的消息进行加密。 对于数据库镜像和 AlwaysOn 可用性组,身份验证和加密在数据库镜像终结点上配置。 有关数据库镜像终结点的简介,请参阅数据库镜像终结点(SQL Server)。
身份验证
身份验证是验证用户是否是用户声明身份的过程。 数据库镜像终结点之间的连接需要身份验证。 必须对来自合作伙伴或见证服务器的连接请求进行身份验证(如果有)。
服务器实例用于数据库镜像或 AlwaysOn 可用性组的身份验证类型是数据库镜像终结点的属性。 两种类型的传输安全性可用于数据库镜像终结点:Windows 身份验证(安全支持提供程序接口(SSPI)和基于证书的身份验证。
Windows 身份验证
在 Windows 身份验证下,每个服务器实例都使用运行进程的 Windows 用户帐户的 Windows 凭据登录到另一端。 Windows 身份验证可能需要手动配置登录帐户,如下所示:
如果 SQL Server 的实例在同一域帐户下作为服务运行,则无需额外配置。
如果 SQL Server 的实例在不同的域帐户(位于相同或受信任的域中)下作为服务运行,则必须在每个其他服务器实例的 master 中创建每个帐户的登录名,并且必须向该登录名授予对终结点的 CONNECT 权限。
如果 SQL Server 的实例以网络服务账户身份运行,则必须在每台其他服务器的主库中创建每个主计算机帐户(DomainName**\**ComputerName$)的登录名,并且必须向该登录名授予对终结点的 CONNECT 权限。 这是因为网络服务帐户下运行的服务器实例使用主计算机的域帐户进行身份验证。
注释
有关使用 Windows 身份验证设置数据库镜像会话的示例,请参阅示例:使用 Windows 身份验证设置数据库镜像(Transact-SQL)。
证书
在某些情况下,例如,当服务器实例不在受信任的域中或 SQL Server 作为本地服务运行时,Windows 身份验证不可用。 在这种情况下,需要证书对连接请求进行身份验证,而不是用户凭据。 必须为每个服务器实例的镜像终结点配置自己的本地创建的证书。
创建证书时会建立加密方法。 有关详细信息,请参阅 “允许数据库镜像终结点使用证书进行出站连接(Transact-SQL)”。 仔细管理使用的证书。
服务器实例使用其自身证书的私钥在设置连接时建立其标识。 接收连接请求的服务器实例使用发件人证书的公钥对发送方的标识进行身份验证。 例如,请考虑两个服务器实例,Server_A和Server_B。 Server_A使用其私钥在向Server_B发送连接请求之前加密连接标头。 Server_B使用Server_A证书的公钥来解密连接标头。 如果解密的标头正确,Server_B知道标头是通过Server_A加密的,并且连接已经过身份验证。 如果解密的标头不正确,Server_B知道连接请求不身份验证并拒绝连接。
数据加密
默认情况下,数据库镜像终结点需要加密通过镜像连接发送的数据。 在这种情况下,终结点只能连接到也使用加密的终结点。 除非可以保证网络安全,否则建议对数据库镜像连接进行加密。 但是,可以禁用加密或使其受支持,但不是必需的。 如果禁用加密,则永远不会加密数据,终结点无法连接到需要加密的终结点。 如果支持加密,则仅当相反终结点支持或需要加密时,才会加密数据。
注释
SQL Server Management Studio 创建的镜像端点要么需要加密,要么禁用加密。 若要将加密设置更改为 SUPPORTED,请使用 ALTER ENDPOINT Transact-SQL 语句。 有关详细信息,请参阅 ALTER ENDPOINT (Transact-SQL)。
(可选)可以通过在 CREATE ENDPOINT 语句或 ALTER ENDPOINT 语句中为 ALGORITHM 选项指定以下值之一来控制终结点可以使用的加密算法:
| 算法值 | DESCRIPTION |
|---|---|
| RC4 | 指定终结点必须使用 RC4 算法。 这是默认值。 注意:RC4 算法已弃用。 此功能将在Microsoft SQL Server 的未来版本中删除。 请勿在新的开发工作中使用此功能,并修改当前尽快使用此功能的应用程序。 我们建议使用 AES。 |
| AES | 指定终结点必须使用 AES 算法。 |
| AES RC4 | 指定两个终结点将协商加密算法,此终结点优先使用 AES 算法。 |
| RC4 AES | 指定两个终结点将协商加密算法,此终结点优先使用 RC4 算法。 |
如果连接终结点同时指定这两种算法,但顺序不同,则接受连接的终结点将获胜。
注释
RC4 算法仅用于支持向后兼容性。 仅当数据库兼容级别为 90 或 100 时,才能使用 RC4 或 RC4_128 对新材料进行加密。 (建议不要使用。)而是使用一种较新的算法,如 AES 算法之一。 在 SQL Server 2012 及更高版本中,可以使用 RC4 或 RC4_128 加密的材料在任何兼容级别进行解密。
虽然比 AES 快得多,但 RC4 是一种相对弱的算法,而 AES 是相对强大的算法。 因此,建议使用 AES 算法。
有关用于指定加密的 Transact-SQL 语法的信息,请参阅 CREATE ENDPOINT (Transact-SQL)。
相关任务
配置数据库镜像终结点的传输安全性
另请参阅
选择加密算法
ALTER ENDPOINT (Transact-SQL)
DROP ENDPOINT (Transact-SQL)
SQL Server 数据库引擎和 Azure SQL 数据库安全中心
当数据库在其他服务器实例上可用时管理元数据 (SQL Server)
数据库镜像端点 (SQL Server)
sys.database_mirroring_endpoints(Transact-SQL)
sys.dm_db_mirroring_connections(Transact-SQL)
数据库镜像配置疑难解答 (SQL Server)
排查已删除的 AlwaysOn 可用性组配置(SQL Server)问题