将 MS SQL Server 配置为后端数据库

PAM360 默认将 PostgreSQL 作为其后端数据库。不过,您也可以灵活地将 PAM360 配置为使用其他数据库系统,包括 MS SQL(独立或集群)、Azure SQL 以及 Azure Postgres 等。本文档提供了关于如何将 MS SQL 设置为 PAM360 安装后端数据库的详细说明,以确保您的部署能够无缝过渡并获得最佳性能。

注意

建议使用专用服务账户来运行 PAM360 服务。请确保该服务账户属于 PAM360 服务器的本地管理员组。用于 PAM360 服务和 ChangeDB 进程的服务账户应具备以下权限:

  1. 在 SQL Server 中,选择所需的账户。在“服务器角色”下,授予“dbcreator”权限。
  2. 数据库创建完成后,请选择该账户并授予“dbowner”权限。

其他详情

为确保高安全性,PAM360 已配置为仅通过 SSL 连接到 SQL 服务器。

  1. 创建 SSL 证书并将其安装到 Windows 证书存储中
  2. 将 SSL 证书导入 PAM360
  3. 在 SQL Server 中启用 SSL 加密
  4. 在 PAM360 中执行 ChangeDB.bat

1. 创建 SSL 证书并将其安装到 Windows 证书存储中
(在运行 SQL Server 的机器上)

在将 PAM360 连接至 SQL Server 之前,您需要在 SQL Server 中启用 SSL 加密。为此,您需要创建一个 SSL 证书,并由证书颁发机构 (CA) 进行签名,或进行自签名。

1.1 生成证书并由第三方 CA 进行签名

如果您已拥有由 CA 签名的 SSL 证书,请直接从第 4 步开始进行证书安装。否则,请按照以下步骤 1 至 3 生成并安装新的 CA 签名证书:

  1. 首先,使用 openssl 生成私钥。在终端中执行以下命令:
    openssl genrsa -des3 -out server.key 2048
    此命令将生成一个 2048 位的 RSA 私钥,并将其保存为server.key,该文件受密码短语保护。
  2. 使用该私钥创建证书签名请求(CSR)。该请求将发送至证书颁发机构(CA)进行签名。请执行以下命令:
    openssl req -new -key server.key -out server.csr
    在此过程中,系统将提示您输入密钥的密码短语,并提供“通用名称”、“主机名 ”或“IP 地址”等信息,其中“通用名称”应为您的 SQL Server的完全合格域名 (FQDN)
  3. 将生成的 CSR(server.csr)提交给第三方 CA,例如 VeriSignThawteRapidSSL 进行签名。有关提交CSR和完成签名流程的说明,请参阅相应CA的文档。请注意,此服务通常需要付费。
    几天后,您将收到已签名的 SSL 证书和 CA 的根证书,格式均为 `.cer` 文件。
  4. 使用 MMC 控制台在 SQL 服务器上安装服务器证书:
    1. 单击“开始”,然后选择“运行”。在“运行”对话框中,输入MMC并按回车键。这将打开Microsoft 管理控制台 (MMC)
    2. “控制台”菜单中,选择 “添加/删除管理单元”。
    3. 单击“添加”,然后选择“证书”,再单击“添加”
    4. 在系统提示时,选择管理 “计算机账户”的证书。
    5. 导航至“管理用户证书(本地计算机)” >> “个人” >> “证书”
    6. 右键单击“证书”,选择“所有任务”,然后单击“导入”
    7. 浏览至已签名的服务器证书所在位置,选择该证书,并完成导入过程。
      install-third-party
  5. 请按照以下步骤在 PAM360 中安装 CA 根证书:
    1. 将 CA 根证书复制到<PAM360 安装文件夹>\bin目录中。
    2. <PAM360 安装文件夹>\bin目录下,执行以下命令:
      importCert.bat <证书的绝对路径>
      <证书的绝对路径>替换为您所复制的主证书文件的实际路径。此命令将主证书添加到 PAM360 证书存储中。

1.2 使用 PowerShell 创建自签名证书

要在 SQL Server 安装的机器上创建并使用自签名证书,请执行以下步骤:

  1. 导航至SQL Server,并以管理员权限打开PowerShell
  2. 执行以下命令;该命令将安装并存储一个自签名证书到您的本地存储中。
    New-SelfSignedCertificate -DnsName <SQL Server 的 FQDN> -CertStoreLocation cert:\LocalMachine\My
    请将<SQL 服务器的 FQDN>替换为具体的 FQDN。

2. 将 SSL 证书导入 PAM360

完成证书安装后,请按照以下步骤将服务器证书导入 PAM360 证书存储库:

  1. 复制服务器证书,并将其粘贴到<PAM360 安装文件夹>/bin目录下。
  2. 执行以下命令;这将把证书添加到 PAM360 证书存储中。
    importCert.bat <证书的绝对路径>

3. 在 SQL Server 中启用 SSL 加密

  1. 在运行 SQL Server 的计算机上,单击“开始”并打开SQL Server 配置管理器
  2. 在左侧窗格中展开“SQL Server 网络配置”,右键单击要配置的服务器对应的“协议”,然后单击“属性”
  3. 转到“证书”选项卡,并配置数据库引擎以使用服务器证书。
  4. “强制加密”设置为“是”,以确保所有客户端/服务器通信均经过加密。此设置将拒绝无法支持加密的客户端访问,这是出于安全考虑的推荐配置。或者,如果您希望由客户端应用程序请求加密,可以将“强制加密”设置为“否”。不建议采用此设置,因为这可能会导致通信未加密。
  5. 重新启动 SQL Server。
    forced-encryption-new1
    forced-encryption-new2

更多详细信息,请参阅以下章节 为 SQL Server 配置 SSL

4. 在 PAM360 中执行 ChangeDB.bat

通过编辑文件ChangeDB.bat(Windows)ChangeDB.sh(Linux),向 PAM360 提供 SQL Server 的详细信息。请按照以下步骤操作:

  1. 导航至<PAM360 安装文件夹>/bin文件夹,并执行文件ChangeDB.bat(Windows)或 sh ChangeDB.sh(Linux)。
  2. 在弹出的窗口中,请先点击“打开最佳实践文档”按钮阅读《最佳实践指南》。点击“继续设置”按钮以进行数据库更改配置。
  3. 在显示的窗口中,输入以下信息:
    1. “服务器类型”选为“SQL Server”。
    2. 主机名:安装了 MS SQL Server 的计算机的名称或 IP 地址。
    3. 实例名称:指定用于 PAM360 的 SQL Server 命名实例。如果未指定实例名称,PAM360 将尝试通过端口1433 与默认实例建立连接。

      最佳实践

      由于 PAM360 仅通过 SSL 模式连接到 MS SQL,建议您为 PAM360 创建一个在特定端口上运行的专用数据库实例。如果您想指定 1433 以外的端口号,可以在上面的“主机名”参数中以<主机名>:<端口> 的形式进行指定。

    4. 数据库名称:PAM360 数据库的名称。默认值为PassTrix。若需使用其他数据库名称,请在此处指定。PAM360 将自动创建主密钥、对称密钥等。
    5. 身份验证:连接 SQL 服务器的身份验证方式。若从 Windows 系统连接 SQL 服务器,请选择“Windows”。若 PAM360 服务使用具备连接 SQL 服务器权限的服务账户运行,则可利用Windows 单点登录功能;否则,请选择“SQL”选项。

      最佳实践

      建议选择“Windows”选项,因为用于身份验证的用户名和密码不会被存储在任何地方。

    6. 用户名和密码:如果您步骤 v选择了“SQL” 选项,请指定 PAM360 用于连接数据库的用户名和密码。

      其他详细信息

      此处输入的用户名和密码将存储在 PAM360 中的database_params.conf文件中。因此,请注意加强主机的安全性。
      如果您是从 Windows 连接到数据库,甚至可以使用您的 Windows 登录凭据。在这种情况下,您需要将用户名输入为<domain-name>\<username>。

    7. 加密密钥:用于加密数据并将其存储在 SQL 服务器中的密钥。您可以保留默认值,让 PAM360 自动生成密钥。若需使用自定义密钥

      ,请选择“自定义”选项

      若已选择“自定义”选项,请执行以下操作:

    8. 实例类型:PAM360 支持将“本地实例”(本地部署)和“Azure SQL”作为后端数据库。此处请选择“本地实例”作为实例类型,以继续进行数据库更改配置。
    9. JDBC 驱动程序:该驱动程序可与 MS SQL Server 数据库无缝协作。Microsoft(推荐)是该字段中默认选定的驱动程序,由于其兼容最新的 SQL Server 版本和功能,因此推荐用于大多数安装。可选的替代 JDBC 驱动程序是“jTDS”,它支持特定的兼容性功能。
    10. 连接属性:勾选此复选框后,您将能够以以下格式指定自定义连接属性:“key1=value1;key2=value2”。

      注意

      数据库迁移设置窗口中的现有服务器详细信息以及属性(如 SSL 和加密)无法作为自定义连接属性添加。

    11. 最后,单击“测试”以确保连接设置正确,然后单击“保存”。

      db-change-conf

    注意

    完成上述步骤后,请导航至<PAM360 安装文件夹>/conf目录,并将masterkey.key文件移动到安全位置。SQL Server 采用分层加密和密钥管理架构对数据进行加密。每一层都通过结合使用证书、非对称密钥和对称密钥来加密其下层。 其中之一是数据库主密钥,该密钥由服务主密钥和密码共同生成。该密码存储在 PAM360 的<PAM360 安装文件夹>/conf目录下,文件名为masterkey.key。强烈建议您将masterkey.key文件移至安全位置,以确保数据安全。请务必妥善保管此密钥。 在执行高可用性(High Availability)和灾难恢复(Disaster Recovery)操作时,您将需要使用该密钥。若丢失此密钥,您将不得不重新配置整个 MS SQL/Azure MS SQL 服务器环境。

有关 MS SQL 中加密和密钥管理的更多详细信息,请参阅 MSDN文档。

5. 故障排除提示


1. 在 SQL Server 中启用 SSL 加密时,证书下拉列表中未显示服务器证书?

如果添加到 MMC 控制台的服务器证书未显示在证书下拉列表中,则必须手动更新 SQL Server 的 SSL 加密证书。SQL Server 用于加密连接的证书在以下注册表项中指定:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib

该键包含一个名为“拇指印”(thumbprint)的证书属性,该属性可唯一标识服务器中的每个证书。
registry

应将我们为服务器创建的证书的“Thumbprint”值复制并更新到注册表的证书属性中。
certificate

注意:要正确复制并更新拇指印,请按照以下步骤操作:

  1. 从拇指印中移除 Unicode 字符。您可以通过将拇指印粘贴到记事本中来实现。
  2. 将记事本中的内容另存为 ANSI 格式的文件。
  3. 打开该 ANSI 格式文件,并删除文件中的“?”字符。
  4. 删除指纹中字符之间的空格。
  5. 将此指纹保存至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\Certificate 属性中





Top