SQL Server Endpoint 与 镜像、AlwaysOn身份验证

若要加入 Always On 可用性组 或数据库镜像,服务器实例上必须创建自己专用的“数据库镜像端点” (database mirroring endpoint)。 此端点用途特殊,专门用于接收来自其他实例的连接。

数据库镜像端点使用TCP协议在参与数据库镜像会话或承载可用性副本的实例之间发送和接收消息。 数据库镜像端点在唯一的 TCP 端口号上进行侦听。但注意客户端与主服务器或主副本的连接不使用数据库镜像端点。

一、 服务器网络地址

服务器实例的网络地址(Endpoint URL)包含其端点的端口号、主机名和域名,端口号唯一标识特定的服务器实例。

下图具体说明了如何对同一服务器上的两个实例进行唯一标识。 两个服务器实例的网络地址均包含相同的主机名MYSYSTEM和域名 Adventure-Works.MyDomain.com。若要使系统能够路由连接到需要的实例,网络地址需要包括与特定服务器实例的镜像端点相关联的端口号。

默认实例的服务器网络地址

默认情况下, SQL Server 实例不包含数据库镜像端点。 在建立数据库镜像会话时,必须手动创建它们。 系统管理员必须在将要参与数据库镜像的每个服务器实例中分别创建端点。 请注意,如果要给同一计算机上的多个实例创建端点,则必须为每个端点指定不同的端口号。

如果运行 SQL Server 的计算机具有防火墙,则防火墙配置必须允许端点中指定的端口的传入和发送连接。

请勿重新配置正在使用的数据库镜像端点。 服务器实例使用彼此的端点来了解其他系统的状态。 如果重新配置端点,则可能会重新启动此端点,从而导致其他服务器实例出现错误。 这对于自动故障转移模式尤为重要,在此模式下,重新配置端点可能会导致故障转移。

 

二、 身份验证

身份验证是验证用户是否具有其所声明的身份的过程。 数据库镜像端点之间的连接需要进行身份验证,伙伴或见证服务器的连接请求(如果有)必须进行身份验证。

用于数据库镜像或 Always On 可用性组 的服务器实例使用的身份验证类型是数据库镜像端点的一种属性。 数据库镜像端点可以使用两类安全性功能:Windows 身份验证(安全支持提供程序接口 (SSPI))和基于证书的身份验证。

 

1. Windows 身份验证

  • 如果每个服务器实例都在某一域帐户下运行,则您可以将 Windows 身份验证用于数据库镜像端点。 如果所有服务器实例使用相同的域用户帐户运行,则正确的用户登录名将自动存在于全部两个 master 数据库中。 这样可简化可用性数据库的安全配置并建议这样做。

  • 如果实例以不同的帐户身份运行,则必须在其他服务器实例上的 master 中创建每个登录帐户。 然后,必须向该登录名授予 CONNECT 权限,以便连接到该服务器实例的数据库镜像端点。 有关详细信息,请参阅 设置数据库镜像或 AlwaysOn 可用性组的登录帐户 (SQL Server)

  • 如果使用 Windows 身份验证,则可以通过使用 Transact-SQL、PowerShell 或新建可用性组向导创建数据库镜像端点。

如果服务器实例缺少数据库镜像端点,则新建可用性组向导可以自动创建使用 Windows 身份验证的数据库镜像端点。 有关详细信息,请参阅 使用可用性组向导 (SQL Server Management Studio)

2. 基于证书的身份验证

在某些情况下,例如服务器实例不在受信任域中或 SQL Server 作为本地服务运行时,Windows 身份验证不可用。 此时对连接请求进行身份验证需要使用证书而不是用户凭据。 每个服务器实例的镜像端点必须使用其自己的本地创建的证书进行配置。

创建证书时,将建立加密方法。 有关详细信息,请参阅 允许数据库镜像终结点使用证书进行出站连接 (Transact-SQL)。 请务必小心管理您使用的证书。

建立连接时,服务器实例使用其证书的私钥建立自己的标识。 接收连接请求的服务器实例使用发送方证书的公钥对发送方的标识进行身份验证。 例如,请考虑两个服务器实例 Server_A 和 Server_B。 Server_A 先使用其私钥加密连接标头,然后再将连接请求发送到 Server_B。 Server_B 使用 Server_A 证书的公钥解密连接标头。 如果解密的标头是正确的,则 Server_B 就会知道该标头是 Server_A 加密的,从而连接通过了身份验证。 如果解密的标头是错误的,则 Server_B 就会知道该连接请求不可靠,从而拒绝连接。

如果任何服务器实例正在以内置帐户(例如 Local System、Local Service 或 Network Service)或非域帐户运行,则您必须使用证书来进行端点身份验证。 如果您正在使用证书来用于您的数据库镜像端点,则您的系统管理员必须配置每个服务器实例,以在出站连接和进站连接中使用证书。

没有使用证书来配置数据库镜像安全性的任何自动方法。 你将需要使用 CREATE ENDPOINT Transact-SQL 语句或 New-SqlHadrEndpoint PowerShell cmdlet。 有关详细信息,请参阅 CREATE ENDPOINT (Transact-SQL)。 

参考

https://docs.microsoft.com/zh-cn/sql/database-engine/database-mirroring/the-database-mirroring-endpoint-sql-server?view=sql-server-ver15

https://docs.microsoft.com/zh-cn/sql/database-engine/database-mirroring/transport-security-database-mirroring-always-on-availability?view=sql-server-ver15

发布了295 篇原创文章 · 获赞 35 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Hehuyi_In/article/details/105031506
今日推荐