Linux ホスト上の SQL Server を Active Directory ドメインに参加させる
適用対象: SQL Server - Linux
この記事では、SQL Server Linux ホスト コンピューターを Active Directory ドメインに参加させる方法に関する一般的なガイダンスを提供します。 組み込みの SSSD パッケージを使用する方法と、第三者の Active Directory プロバイダーを使用する方法の 2 つがあります。 第三者のドメイン参加製品の例としては、PowerBroker Identity Services (PBIS)、One Identity、Centrify があります。
このガイドには、Active Directory の構成を確認する手順が含まれます。 ただし、第三者のユーティリティを使用してコンピューターをドメインに参加させる方法については説明しません。
注
最新版の Ubuntu、RHEL、または SLES で Active Directory を構成する方法については、「チュートリアル: adutil を使用して SQL Server on Linux で Active Directory 認証を構成する」を参照してください。
前提条件
Active Directory 認証を構成する前に、ネットワーク上に Active Directory ドメイン コントローラー (Windows) をセットアップする必要があります。 その後、SQL Server on Linux ホストを Active Directory ドメインに参加させます。
この記事で説明されている手順の例はガイダンスのみを目的としており、Ubuntu 16.04、Red Hat Enterprise Linux (RHEL) 7.x、および SUSE Linux Enterprise Server (SLES) 12 オペレーティング システムを参照しています。 お使いの環境での実際の手順は、環境全体の構成方法やオペレーティング システムのバージョンによって多少異なる場合があります。 たとえば、ネットワークの管理と構成には、Ubuntu 18.04 では netplan が使用されますが、Red Hat Enterprise Linux (RHEL) 8.x では nmcli のツールが特に使用されます。 特定のツール、構成、カスタマイズ、および必要なトラブルシューティングについては、環境のシステム管理者とドメイン管理者に問い合わせる必要があります。
逆引き DNS (rRDNS)
Windows Server を実行しているコンピューターをドメイン コントローラーとして設定した場合、既定では rRDNS ゾーンが存在しない可能性があります。 ドメイン コントローラーと、SQL Server を実行する Linux マシンの IP アドレスの両方に適用可能な rRDNS ゾーンが必ず存在するようにしてください。
また、ドメイン コントローラーをポイントする PTR レコードが必ず存在するようにしてください。
ドメイン コントローラーへの接続を確認する
ドメインの短い名前と完全修飾名の両方を使用し、ドメイン コントローラーのホスト名を使って、ドメイン コントローラーに接続できることを確認します。 ドメイン コントローラーの IP は、ドメイン コントローラーの FQDN にも解決される必要があります。
ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>
ヒント
このチュートリアルでは、ドメイン名と領域名の例として、それぞれ contoso.com
と CONTOSO.COM
を使用します。 また、ドメイン コントローラーの完全修飾ドメイン名の例として、DC1.CONTOSO.COM
も使用します。 これらの名前は実際の値に置き換える必要があります。
適切なドメイン名解決を確保するには、名前チェック中に不一致が見つかった場合は、 /etc/resolv.conf
ファイルを更新することが重要です。 更新手順はディストリビューションによって異なります。そのため、正確なガイダンスを得るには、公式ドキュメントを参照することをお勧めします。 次のリストは、一部のディストリビューションとその主要なバージョンのリンクを示しています。
Distribution | 参照記事 |
---|---|
RHEL 8 | /etc/resolv.conf を手動で構成する |
RHEL 9 | /etc/resolv.conf を手動で構成する |
SLES 15 | NETCONFIG_DNS_STATIC_SEARCHLISTとNETCONFIG_DNS_STATIC_SERVERSの設定 |
Ubuntu | 名前解決セクション |
目的は、ドメイン名の解決を容易にするために、ディストリビューションに合わせて /etc/resolv.conf
を正しく構成することです。 たとえば、ドメインが contoso.com で、Active Directory IP アドレスが 10.0.0.4 の場合、ホストからの名前解決が確実に行われるように /etc/resolv.conf
を適切に設定する必要があります。
cat /etc/resolv.conf
結果セットは次のとおりです。
# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4
RHEL 7.x
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、Active Directory ドメインがドメイン検索リストに含まれるようにします。 または、必要に応じて別のインターフェイス構成ファイルを編集します。sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
内容は次の例のようになります。
PEERDNS=no DNS1=<Domain controller IP address> DOMAIN="contoso.com com"
このファイルを編集した後、ネットワーク サービスを再起動します。
sudo systemctl restart network
次に、
/etc/resolv.conf
ファイルに次の例のような行が含まれていることを確認します。sudo vi /etc/resolv.conf
内容は次の例のようになります。
search contoso.com com nameserver <Domain controller IP address>
それでもドメイン コントローラーに対して ping を実行できない場合は、ドメイン コントローラーの完全修飾ドメイン名と IP アドレスを検索します。 ドメイン名の例は
DC1.CONTOSO.COM
です。 次のエントリを/etc/hosts
に追加します。sudo vi /etc/hosts
内容は次の例のようになります。
<IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
Active Directory ドメインに参加する
基本的な構成およびドメイン コントローラーとの接続を確認した後、SQL Server の Linux ホスト コンピューターを Active Directory ドメイン コントローラーに参加させるには、次の 2 つのオプションがあります。
オプション 1: SSSD パッケージを使用して Active Directory ドメインに参加する
この方法では、realmd パッケージと sssd パッケージを使用して、SQL Server ホストを Active Directory ドメインに参加させます。
これは、Linux ホストを Active Directory ドメイン コントローラーに参加させる場合に推奨される方法です。
最新の手順については、配布パートナーが提供する公式ドキュメントを参照してください。
Distribution | 参照記事 |
---|---|
RHEL 8 | SSSD を使用した AD ドメインの検出と参加 |
RHEL 9 | SSSD を使用した AD ドメインの検出と参加 |
SLES | SUSE Linux Enterprise Server 15 で realmd を使用して AD に参加する |
Ubuntu | Active Directory で SSSD を設定する方法 |
SQL Server ホストを Active Directory ドメイン に参加させるには、次の手順のようにします。
realmd を使用して、ホスト コンピューターを Active Directory ドメインに参加させます。 最初に、お使いの Linux ディストリビューションのパッケージ マネージャーを用して、SQL Server ホスト コンピューターに realmd パッケージと Kerberos クライアント パッケージの両方をインストールする必要があります。
Kerberos クライアント パッケージのインストール時に、領域名の入力を求められた場合は、ドメイン名を大文字で入力します。
DNS が正しく構成されたことを確認した後、次のコマンドを実行してドメインに参加します。 新しいコンピューターをドメインに参加させるのに十分な特権を Active Directory に持っている Active Directory アカウントを使って、認証を行う必要があります。 このコマンドでは、Active Directory に新しいコンピューター アカウントが作成され、
/etc/krb5.keytab
ホスト keytab ファイルが作成され、/etc/sssd/sssd.conf
でドメインが構成されて、/etc/krb5.conf
が更新されます。realmd に問題があるため、まず、コンピューターのホスト名をコンピューター名ではなく、FQDN に設定します。 そうしないと、realmd によってコンピューターに必要なすべての SPN が作成されない可能性があり、DNS エントリが自動的に更新されません。これは、ドメイン コントローラーで動的 DNS 更新がサポートされている場合でも同様です。
sudo hostname <old hostname>.contoso.com
このコマンドを実行すると、
/etc/hostname
ファイルに<old hostname>.contoso.com
が含まれるはずです。sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
Successfully enrolled machine in realm
というメッセージが表示されます。受け取る可能性のあるエラー メッセージとその解決方法を、次の表に示します。
エラー メッセージ 推奨 Necessary packages are not installed
realm join コマンドを再び実行する前に、お使いの Linux ディストリビューションのパッケージ マネージャーを使って、それらのパッケージをインストールします。 Insufficient permissions to join the domain
ドメイン管理者に連絡し、Linux コンピューターをドメインに参加させるのに十分なアクセス許可があることを確認します。 KDC reply did not match expectations
ユーザーに対して正しい領域名を指定していない可能性があります。 領域名は大文字と小文字が区別され、通常は大文字であり、コマンド realm discover contoso.com で識別できます。 SQL Server では、ユーザー アカウントとグループをセキュリティ識別子 (SID) にマップするために、SSSD と NSS が使われます。 Active Directory ログインを正しく作成するには、SSSD が SQL Server 用に構成されて実行されている必要があります。 通常、これは realmd によってドメインへの参加の一環として自動的に行われますが、場合によってはこれを別途行う必要があります。
詳しくは、SSSD を手動で構成する方法および NSS を SSSD で動作するように構成する方法を参照してください。
ドメインからユーザーに関する情報を収集できるようになったこと、およびそのユーザーとして Kerberos チケットを取得できることを確認します。 次の例では、これのために id、kinit、および klist コマンドが使われています。
id user@contoso.com uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com) kinit user@CONTOSO.COM Password for user@CONTOSO.COM: klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: user@CONTOSO.COM
id user\@contoso.com
でNo such user
が返される場合は、sudo systemctl status sssd
コマンドを実行して、SSSD サービスが正常に開始されていることを確認します。 サービスが実行されているのにエラーが表示される場合は、SSSD の詳細ログを有効にしてみます。 詳しくは、SSSD のトラブルシューティングに関する Red Hat のドキュメントを参照してください。kinit user\@CONTOSO.COM
からKDC reply didn't match expectations while getting initial credentials
が返される場合は、領域を大文字で指定したことを確認します。
詳しくは、ID ドメインの検出と参加に関する Red Hat のドキュメントを参照してください。
オプション 2: 第三者の OpenLDAP プロバイダー ユーティリティを使用する
PBIS、VAS、Centrify などの第三者製ユーティリティを使用できます。 この記事では、個々のユーティリティの手順については説明しません。 最初に、これらのユーティリティのいずれかを使って、SQL Server 用 Linux ホストをドメインに参加させる必要があります。
SQL Server では、Active Directory 関連のクエリに対して、第三者のインテグレーターのコードまたはライブラリは使われません。 SQL Server では常に、このセットアップでの OpenLDAP ライブラリの直接呼び出しを使って、Active Directory のクエリが行われます。 第三者のインテグレーターは、Linux ホストを Active Directory ドメインに参加させるためにのみ使われ、SQL Server ではこれらのユーティリティとの直接的な通信は行われません。
重要
mssql-conf network.disablesssd
構成オプションの使用に関する推奨事項については、記事「Linux 上の SQL Server で Active Directory 認証を使用する」の「追加の構成オプション」セクションを参照してください。
/etc/krb5.conf
が正しく構成されていることを確認します。 ほとんどの第三者製 Active Directory プロバイダーでは、この構成は自動的に行われます。 ただし、後で問題が発生するのを防ぐため、/etc/krb5.conf
で次の値を確認してください。
sudo vi /etc/krb5.conf
内容は次の例のようになります。
[libdefaults]
default_realm = CONTOSO.COM
[realms]
CONTOSO.COM = {
}
[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM
逆引き DNS が正しく構成されていることを確認する
次のコマンドでは、SQL Server が実行されているホストの完全修飾ドメイン名 (FQDN) が返されます。 たとえば SqlHost.contoso.com
です。
host <IP address of SQL Server host>
このコマンドの出力は、<reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com
のようになる必要があります。 このコマンドでホストの FQDN が返されない場合、または FQDN が正しくない場合は、SQL Server on Linux ホストの逆引き DNS エントリを DNS サーバーに追加します。
次のステップ
この記事では、Active Directory 認証を使用する Linux ホストコンピューターで SQL Server を構成するための方法をカバーしました。 Active Directory アカウントをサポートするための SQL Server on Linux の構成を終了するには、以下の手順に従ってください。