17.2. 使用 microsoft.sql.server Ansible 系统角色安装和配置 IdM 发布的 TLS 证书的 SQL Server
如果应用程序需要 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)域中注册了受管节点。
步骤
将您的敏感变量存储在加密文件中:
创建密码库:
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
在
ansible-vault create
命令打开编辑器后,以 <key> : < value> 格式输入
敏感数据:sa_pwd: <sa_password>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建包含以下内容的 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
文件。验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 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 加密。
其他资源
-
/usr/share/ansible/roles/microsoft.sql-server/README.md
file - 使用 RHEL 系统角色请求证书