適用対象:Linux 上の SQL Server
この記事では、SQL Serverを搭載したLinuxホストをActive Directoryドメインに接続する方法について一般的なガイダンスを提供します。 組み込みの SSSD パッケージを使用する方法と、第三者の Active Directory プロバイダーを使用する方法の 2 つがあります。 サードパーティドメインジョイン製品の例としては、PowerBroker Identity Services(PBIS)、One Identity Safeguard Authentication Services(VAS)、Centrifyがあります。
このガイドには、Active Directory の構成を確認する手順が含まれます。 ただし、第三者のユーティリティを使用してコンピューターをドメインに参加させる方法については説明しません。
Note
最新版の Ubuntu、RHEL、または SLES で Active Directory を構成する方法については、「チュートリアル: adutil を使用して SQL Server on Linux で Active Directory 認証を構成する」を参照してください。
前提条件
Active Directory認証を設定する前に、ネットワーク上でWindows ServerをActive Directoryドメインコントローラーとして起動させる必要があります。 その後、SQL Serverを動かすLinuxホストをActive Directoryドメインに接続します。
この記事で説明されている手順の例はガイダンスのみを目的としており、Ubuntu 16.04、Red Hat Enterprise Linux (RHEL) 7.x、および SUSE Linux Enterprise Server (SLES) 12 オペレーティング システムを参照しています。 実際の手順は環境やOSのバージョンによって少し異なる場合があります。 例えば、Ubuntu 18.04は netplan を使用し、RHEL 8.xは nmcli などのツールを使ってネットワーク管理や設定を行います。 特定のツール、構成、カスタマイズ、および必要なトラブルシューティングについては、環境のシステム管理者とドメイン管理者に問い合わせる必要があります。
Note
SQL Server 2025 (17.x) 以降、SUSE Linux Enterprise Server (SLES) はサポートされていません。
逆引き 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>
Tip
このチュートリアルでは、ドメイン名と領域名の例として、それぞれ contoso.comと CONTOSO.COMを使用します。 また、ドメイン コントローラーの完全修飾ドメイン名の例として、DC1.CONTOSO.COM も使用します。 これらの名前はご自身の値に置き換える必要があります。
適切なドメイン名解決を確保するには、名前チェック中に不一致が見つかった場合は、 /etc/resolv.confファイルを更新することが重要です。 更新手順はディストリビューションによって異なります。そのため、正確なガイダンスを得るには、公式ドキュメントを参照することをお勧めします。 次のリストは、一部のディストリビューションとその主要なバージョンのリンクを示しています。
| 流通業 | リファレンス記事 |
|---|---|
| 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 ドメインに参加する
この方法は、SQL Serverを実行するLinuxホストをRealmdおよびsssdパッケージを使ってActive Directoryドメインに接続します。
これは、Linux ホストを Active Directory ドメイン コントローラーに参加させる場合に推奨される方法です。
最新の手順については、配布パートナーが提供する公式ドキュメントを参照してください。
| 流通業 | リファレンス記事 |
|---|---|
| RHEL 8 | SSSD を使用した AD ドメインの検出と参加 |
| RHEL 9 | SSSD を使用した AD ドメインの検出と参加 |
| SLES | Windows ドメイン メンバーシップ を使用して Active Directory に参加する |
| Ubuntu | Active Directory で SSSD を設定する方法 |
SQL Serverを搭載したLinuxホストをActive Directoryドメインに接続するには、以下の手順を用いてください:
realmdを使ってホストマシンをActive Directoryドメインに結合してください。 まず、Linuxディストリビューションのパッケージマネージャーを使って、RealmdとKerberosクライアントパッケージの両方をSQL Server Linuxホストにインストールする必要があります:
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' -vSuccessfully enrolled machine in realmというメッセージが表示されます。受け取る可能性のあるエラー メッセージとその解決方法を、次の表に示します。
エラー メッセージ レコメンデーション Necessary packages are not installedrealm 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 コマンドが使われています。
SSSDがドメイン、ユーザーおよびグループのメンバーシップを解決できるかどうかを確認するために
idを使います:id user@contoso.com出力にはドメインユーザーのユーザーID、グループID、グループメンバーシップが示されるべきです:
uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)ドメインユーザーに対してKerberosチケットをリクエストするには
kinitを使用します:kinit user@CONTOSO.COMコマンドはドメインユーザーのパスワードを入力するよう促されるはずです:
Password for user@CONTOSO.COM:klistを使ってケルベロスのチケットを確認してください:klist出力はドメインユーザーをデフォルトのプリンシパルとして識別すべきです:
Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: user@CONTOSO.COMid 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が返される場合は、領域を大文字で指定したことを確認します。
詳細については、 SSSDを使ったADドメインの発見と参加に関するRed Hatのドキュメントをご覧ください。
オプション2:サードパーティ製のActive Directoryプロバイダーユーティリティを使用する
PBIS、VAS、Centrify などの第三者製ユーティリティを使用できます。 この記事では、個々のユーティリティの手順については説明しません。 先にこれらのユーティリティのいずれかを使って、SQL Serverを動かすLinuxホストをドメインに接続しなければ進めません。
SQL Serverは、Active Directory関連のクエリに対してサードパーティのインテグレーターのコードやライブラリを使用しません。 SQL Server では常に、このセットアップでの OpenLDAP ライブラリの直接呼び出しを使って、Active Directory のクエリが行われます。 サードパーティのインテグレータはLinuxホストをActive Directoryドメインに結合するためにのみ使用されており、SQL Serverはこれらのユーティリティと直接通信していません。
Important
SQL mssql-conf network.disablesssdの使用に関する記事の「追加の構成オプション」セクションの構成オプションの使用に関する推奨事項を参照してください。
/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を実行するLinuxホストのリバースDNSエントリをDNSサーバーに追加してください。
次のステップ
この記事では、SQL ServerをActive Directory認証で動かすLinuxホストを設定しました。 Active Directory アカウントをサポートするための SQL Server on Linux の構成を終了するには、以下の手順に従ってください。