18.4. microsoft.sql.server Ansible システムロールと AD 統合を使用して SQL Server をインストールおよび設定する


Microsoft SQL Server を Active Directory (AD) に統合して、AD ユーザーが SQL Server に対して認証できるようにすることができます。microsoft.sql.server Ansible システムロールを使用すると、このプロセスを自動化し、SQL Server をリモートでインストールして適切に設定できます。ただし、Playbook を実行した後、AD および SQL Server で手動の手順を実行する必要があることに注意してください。

管理対象ホストの 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 以降のいずれかのバージョンを使用している。
  • ネットワーク内で AD ドメインを利用できる。
  • AD に逆引き DNS (RDNS) ゾーンが存在し、ゾーンに各 AD ドメインコントローラー (DC) の Pointer (PTR) リソースレコードが含まれている。
  • 管理対象ホストのネットワーク設定で、AD DNS サーバーが使用される。
  • 管理対象ホストが次の DNS エントリーを解決できる。

    • AD DC のホスト名と完全修飾ドメイン名 (FQDN) が両方とも IP アドレスに解決される。
    • AD DC の IP アドレスが FQDN に解決される。

手順

  1. 機密性の高い変数を暗号化されたファイルに保存します。

    1. vault を作成します。

      $ 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>
      sql_pwd: <SQL_AD_password>
      ad_admin_pwd: <AD_admin_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 AD authentication
          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_ad_configure: true
            mssql_ad_join: true
            mssql_ad_sql_user: sqluser
            mssql_ad_sql_password: "{{ sql_pwd }}"
            ad_integration_realm: ad.example.com
            ad_integration_user: Administrator
            ad_integration_password: "{{ ad_admin_pwd }}"

    サンプル Playbook で指定されている設定は次のとおりです。

    mssql_ad_configure: true
    AD に対する認証を有効にします。
    mssql_ad_join: true
    ad_integration RHEL システムロールを使用して、管理対象ノードを AD に参加させます。ロールは、ad_integration_realmad_integration_user、および ad_integration_password 変数の設定を使用してドメインに参加します。
    mssql_ad_sql_user: <username>
    管理目的でロールが AD および SQL Server に作成する AD アカウントの名前を設定します。
    ad_integration_user: <AD_user>
    マシンをドメインに参加させる権限と、mssql_ad_sql_user で指定された AD ユーザーを作成する権限を持つ AD ユーザーの名前を設定します。

    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
  5. AD ドメインで、Playbook で指定した AD SQL ユーザーに対して 128 ビットおよび 256 ビットの Kerberos 認証を有効にします。以下のオプションのいずれかを使用します。

    • Active Directory Users and Computers アプリケーションで、以下を実行します。

      1. ad.example.com > Users > sqluser > Accounts に移動します。
      2. Account options リストで、This account supports Kerberos AES 128 bit encryptionThis account supports Kerberos AES 256 bit encryption を選択します。
      3. Apply をクリックします。
    • 管理者モードの PowerShell で、次のように入力します。

      C:\> Set-ADUser -Identity sqluser -KerberosEncryptionType AES128,AES256
  6. SQL Server に対して認証できる AD ユーザーを許可します。SQL Server で、次の手順を実行します。

    1. Administrator ユーザーの Kerberos チケットを取得します。

      $ kinit Administrator@ad.example.com
    2. AD ユーザーを許可します。

      $ /opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'

      SQL Server へのアクセスを許可するすべての AD ユーザーに対してこの手順を繰り返します。

検証

  • SQL Server を実行する管理対象ノードで、以下を実行します。

    1. AD ユーザーの Kerberos チケットを取得します。

      $ kinit <AD_user>@ad.example.com
    2. sqlcmd ユーティリティーを使用して SQL Server にログインし、クエリーを実行します。次に例を示します。

      $ /opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'

関連情報

  • /usr/share/ansible/roles/microsoft.sql-server/README.md ファイル
  • Ansible vault
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.