搜索

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

download PDF

如果应用程序需要 Microsoft SQL Server 数据库,您可以使用 TLS 加密配置 SQL Server,以启用应用程序和数据库之间的安全通信。如果 SQL Server 主机是 Red Hat 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 Identity Management (IdM)域中注册了受管节点。

步骤

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

    1. 创建密码库:

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

      sa_pwd: <sa_password>
    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_17_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

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

    mssql_tls_enable: true
    启用 TLS 加密。如果启用此设置,还必须定义 mssql_tls_certificates
    mssql_tls_certificates
    包含 证书 角色的设置的 YAML 字典列表。
    Name: & lt;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 域或 自签名 中注册,请将变量设置为 ipa,以请求自签名证书。

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

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

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

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

验证

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

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

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.