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) ドメインに登録しました。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。sa_pwd: <sa_password>
sa_pwd: <sa_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル 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>-
発行された証明書のサブジェクト代替名 (SAN) フィールドに含まれるホスト名を設定します。ワイルドカード (
*) を使用することも、YAML リスト形式で複数の名前を指定することもできます。 ca: <ca_type>-
certificateロールが証明書を要求する方法を定義します。ホストが IdM ドメインに登録されている場合はこの変数をipaに設定し、自己署名証明書を要求する場合はself-signに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/microsoft.sql-server/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
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'
$ /opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが成功した場合、サーバーへの接続は TLS で暗号化されています。