31.2. 使用 microsoft.sql.server Ansible 系统角色,使用 IdM 发布的 TLS 证书安装和配置 SQL Server


如果应用程序需要 Microsoft SQL Server 数据库,您可以使用 TLS 加密配置 SQL Server,以在应用程序和数据库之间启用安全通信。如果 SQL Server 主机是 Red Hat Enterprise Linux Identity Management (IdM)域中的成员,则 certmonger 服务可以管理证书请求和将来的续订。

通过使用 microsoft.sql.server Ansible 系统角色,您可以自动化此过程。您可以使用 TLS 加密远程安装和配置 SQL Server,microsoft.sql.server 角色使用 certificate Ansible 系统角色来配置 certmonger ,并从 IdM 请求证书。

根据受管主机上的 RHEL 版本,您可以安装的 SQL Server 版本会有所不同:

  • RHEL 7.9: SQL Server 2017 和 2019
  • RHEL 8: SQL Server 2017, 2019 和 2022
  • RHEL 9.4 及更新版本:SQL Server 2022

先决条件

  • 您已准备好控制节点和受管节点
  • 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
  • 您用于连接到受管节点的帐户对它们具有 sudo 权限。
  • 您已在控制节点上安装了 ansible-collection-microsoft-sql 软件包或 microsoft.sql 集合。
  • 受管节点安装了 2 GB 或更多 RAM。
  • 受管节点使用以下版本之一: RHEL 7.9、RHEL 8、RHEL 9.4 或更高版本。
  • 您在 Red Hat Enterprise Linux Identity Management (IdM)域中注册了受管节点。

流程

  1. 将敏感变量存储在加密的文件中:

    1. 创建 vault :

      $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
      Copy to Clipboard Toggle word wrap
    2. ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据:

      sa_pwd: <sa_password>
      Copy to Clipboard Toggle word wrap
    3. 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Installing and configuring Microsoft SQL Server
      hosts: managed-node-01.example.com
      vars_files:
        - ~/vault.yml
      tasks:
        - name: SQL Server with certificates issued by Red Hat IdM
          ansible.builtin.include_role:
            name: microsoft.sql.server
          vars:
            mssql_accept_microsoft_odbc_driver_for_sql_server_eula: true
            mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
            mssql_accept_microsoft_sql_server_standard_eula: true
    
            mssql_version: 2022
            mssql_password: "{{ sa_pwd  }}"
            mssql_edition: Developer
            mssql_tcp_port: 1433
            mssql_manage_firewall: true
    
            mssql_tls_enable: true
            mssql_tls_certificates:
              - name: sql_cert
                dns: server.example.com
                ca: ipa
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    mssql_tls_enable: true
    启用 TLS 加密。如果启用此设置,您还必须定义 mssql_tls_certificates
    mssql_tls_certificates
    包含 certificate 角色设置的 YAML 字典的列表。
    name: <file_name>
    定义证书的基本名称和私钥。certificate 角色将证书存储在 /etc/pki/tls/certs/<file_name>.crt 中,将私钥存储在 /etc/pki/tls/private/<file_name>.key 文件中。
    dns: <hostname_or_list_of_hostnames>
    设置发布的证书中的 Subject Alternative Names (SAN)字段包含的主机名。您可以使用通配符(*)或以 YAML 列表格式指定多个名称。
    ca: <ca_type>
    定义 certificate 角色如何请求证书。如果主机在 IdM 域或 self-sign 中注册了,请将变量设置为 ipa,以请求一个自签名证书。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/microsoft.sql-server/README.md 文件。

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 在 SQL Server 主机上,使用带有 -N 参数的 sqlcmd 工具来建立到 SQL server 的加密连接,并运行查询,例如:

    $ /opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'
    Copy to Clipboard Toggle word wrap

    如果命令成功,则到服务器的连接是 TLS 加密的。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat