Ubuntu 20.04 Server にインストールした SQL Server に Windows 認証で接続する
前回、Ubuntu 20.04 Server で構成した仮想マシンに SQL Server のインストール手順を解説いたしました。
ただし、その中では、SQL Server をインストールしてだけで、その他の設定に関しては何も施してはいません。
認証モードに関しても SQL Server 認証のみなので SQL Server に接続する場合、Windows 認証が利用できません。
詳しくは説明しませんが、それでは、セキュリティー的にも不安が残りますよねー
今回は、Windows 認証を利用するための構成手順を解説いたします。
環境紹介
簡単ではありますが、機器構成など環境に関して紹介したいと思います。
対象クライアントは、ドメインに所属しています。
なお、AD サーバは、Ubuntu 20.04 Server に構築しています。
AD サーバの構築手順は、別の記事でまとめていますので、よろしければこちらをご覧ください。
Windows 認証の設定
では、Windows 認証の設定手順を解説いたします。
なお、Windows 認証の設定手順は Microsoft の公式サイトで紹介されていますので、そちらに従い実施していきたいと思います。
SPN の設定
まず、SQL Server に Windows 認証で接続するため、SPN を登録します。
Windows 認証で使用するアカウントの SPN を登録するため、ドメインに参加した Windows にログインし PowerShell で、以下のコマンドを実行します。
setspn -A MSSQLSvc/tmusq01.tam.dev.jp:1433 sqlsrv
本稿の例では、Windows 認証に使用するアカウントは、AD アカウントの「sqlsrv」です。
また、TCP ポートは変更していませんので、デフォルトの「1433」を指定しています。
KVNO の確認
続いて、keytab エントリ時に必要な AD アカウントのキーバージョン番号 (KVNO) を確認します。
なお、SQL Server を構築したクライアントに krb5-user がインストールされていることが前提条件となります。
ちなみに、krb5-user をインストールする場合、以下のコマンドを実行します。
また、レルム指定には参加しているドメインのレルムを指定します。
sudo apt install krb5-user
TGT (Ticket Granting Ticket) を更新するため、以下のコマンドを実行します。
kinit sqlsrv@TAM.DEV.JP
次に、KVNO を確認するため、以下のコマンドを実行します。
kvno sqlsrv@TAM.DEV.JP
kvno MSSQLSvc/tmusq01.tam.dev.jp:1433@TAM.DEV.JP
KVNO には、[2] が返却されましたので、この番号を keytab エントリの追加時に使用します。
keytab エントリの追加
続いて、keytab ファイルを作成します。
keytab ファイルを作成するため、ドメインに参加した Windows にログインし PowerShell で、以下のコマンドを実行します。
ktpass /princ MSSQLSvc/tmusq01.tam.dev.jp:1433@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser tamdev\sqlsrv /out mssql.keytab -setpass -setupn /kvno 2 /pass password
ktpass /princ MSSQLSvc/tmusq01.tam.dev.jp:1433@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser tamdev\sqlsrv /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass password
ktpass /princ MSSQLSvc/tmusq01:1433@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser tamdev\sqlsrv /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass password
ktpass /princ MSSQLSvc/tmusq01:1433@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser tamdev\sqlsrv /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass password
ktpass /princ sqlsrv@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser tamdev\sqlsrv /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass password
ktpass /princ sqlsrv@TAM.DEV.JP /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser tamdev\sqlsrv /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass password
コマンド実行後、カレントフォルダを開きます。
keytab ファイルが作成されています。
keytab の設定
続いて、作成した keytab ファイルを SQL Server を構築したクライアントにコピーし、SQL Server の構成を変更します。
「keytab エントリの追加」で作成した keytab ファイルをコピーします。
コピー先は「/var/opt/mssql/secrets」ディレクトリです。
次に、keytab ファイルのアクセス権などを変更するため、以下のコマンドを実行します。
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
次に、SQL Server を keytab ファイルを使用し起動するための構成を実施するため、以下のコマンドを実行します。
sudo /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
設定はが完了です。SQL Server を再起動するため、以下のコマンドを実行します。
また、SQL Server の状態を確認するため、続けて以下のコマンドを実行します。
sudo systemctl restart mssql-server
sudo systemctl status mssql-server
SQL Server が正常に動作しています。
ログインユーザーの作成
続いて、Windows 認証用の SQL Server ログインユーザーを作成します。
なお、Windows 認証用の SQL Server ログインユーザーは、別のクライアントにインストールした SQL Server Management Studio(以下、SSMS と呼びます)から実施します。
SSMS を起動し、SQL Server に SQL Server 認証で接続します。
[セキュリティ] → [ログイン] を選択し、[新しいログイン] をクリックします。
「ログイン – 新規作成」ウィンドウにて、Windows 認証用のログインユーザーを作成します。
本稿の例では、AD アカウントの「sqlsrv」でログインするため、そのアカウントに紐づくログインユーザーを作成し [OK] をクリックします。
SSMS に戻ると、ログインユーザー「sqlsrv」が作成されています。
Windows 認証の検証
Windows 認証 の構築が完了しましたので、SQL Server に Windows 認証で接続したいと思います。
Windows 認証で接続できる AD アカウントで SSMS を起動します。
[認証] に [Windows 認証] を指定し、[接続] をクリックします。
SSMS が起動します。
AD アカウントで接続できました。
Windows 認証が構成できました。
まとめ
以上が、Ubuntu 20.04 Server へインストールした SQL Server に Windows 認証を構成する手順となります。
いかがでしたでしょうか?
SQL Server の Windows 認証の場合、Windows OS であればインストールウィザードで指定することが可能ですが、Ubuntu 20.04 Server など、Linux OS だと、SQL Server のインストール後の構成変更となります。
なお、Windows Server 2022 へ SQL Server をインストールする手順に関しては、別の記事でまとめていますので、よろしければこちらをご覧ください。
話を戻しまして、Windows 認証 の構成は、それほど難しい手順ではありませんが、しかし、インストール時に Windows 認証が構成できると「うれしいかなー」と、思いました。今後、そのあたりも改善してくれることを期待・・・無理かな。
今回は、Windows 認証のみを構成しました。
他の構成変更に関しては、次回の記事で解説いたしますので 、よろしければこちらもご覧ください。
最後までお読みいただきありがとうございました。
では。