troushoo

SQL Server on Linux で Windows 認証

SQL Server on Linux で Windows 認証を行う方法を以下の流れで紹介します。
1. Linux に SQL Server をインストール
2. Linux をドメインに参加
3. SQL Server 用の AD ユーザーに SPN を設定
4. SQL Server サービスの keytab を構成
5. SQL Server で、Windows 認証のログインを作成
6. Windows 認証を使用して SQL Server に接続

Linux は Ubuntu 18.04 を使いました。他ディストリビューションの方法は、Microsoft のクイック スタート:Ubuntu に SQL Server をインストールし、データベースを作成するチュートリアル:SQL Server on Linux で Active Directory 認証を使用する を参照してください。

手順
1. Linux に SQL Server をインストール
1.1. 以下のコマンドで Linux に SQL Server をインストールします。
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup



2. Linux をドメインに参加
2.1. Linux にログインし、DNS サーバーの設定と、ホスト名で名前解決できるようサーチリスト追加するため /etc/netplan/99-mycustome-dns.yaml を作成します。
network:
         version: 2
         ethernets:
                 <デバイス名>:
                         nameservers:
                                 addresses: [10.0.2.164]
                                 search: [myad.local, local]
                         dhcp4-overrides:
                                 use-dns: false
                                 use-domains: false
*<デバイス名>は「ip a」で確認できます。


2.2. 設定を適用します。
sudo netplan apply


2.3. 名前解決ができるか確認します。
ping myad
ping myad.local
ping mydc.myad.local
nslookup <mydc の IP アドレス>


ドメインコントローラーの DNS サーバーは、デフォルトでは逆引きゾーンは設定されていないので、別途設定が必要です。


2.4. 必要なモジュールをインストールします。
sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
sudo apt-get install adcli libpam-sss libnss-sss sssd sssd-tools
インストール時、レルムを指定する画面になった場合は、ドメイン名を大文字で入力します。


2.5. ホスト名を FQDN に設定します。これは realmd のイシューの対策です。
sudo hostname <マシン名>.myad.local


2.6. ドメインに参加します。
sudo realm join MYAD.LOCAL -U 'Administrator@MYAD.LOCAL' -v


3. SQL Server 用の AD ユーザーに SPN を設定
3.1. DC にログインし、SQL Server 用のユーザーを作成します。ここでは PowerShell を利用して、sqlsvc というユーザーにしました。
Import-Module ActiveDirectory
New-ADUser sqlsvc -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $true


3.2. 作成したユーザーに SPN を作成します。
setspn -A MSSQLSvc/<SQL Server の FQDN>:<ポート番号> sqlsvc
setspn -A MSSQLSvc/<SQL Server の NetBIOS 名>:<ポート番号> sqlsvc
ポート番号はデフォルト 1433 です。


4. SQL Server サービスの keytab を構成
4.1. Linux にログインしキーバージョン番号 (KVNO) を確認します。
kinit sqlsvc@MYAD.LOCAL
kvno sqlsvc@MYAD.LOCAL
kvno MSSQLSvc/ubuntu.myad.local:1433@MYAD.LOCAL


4.2. DC で keytab エントリーを追加します。
keytab ファイルを作成することで、Windows 認証ができるようになります。
ktpass /princ MSSQLSvc/<SQL Server の FQDN>:<ポート番号>@myad.local /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser myad\sqlsvc /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>
ktpass /princ MSSQLSvc/<SQL Server の FQDN>:<ポート番号>@myad.local /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser myad\sqlsvc /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>
ktpass /princ MSSQLSvc/<SQL Server の NetBIOS 名>:<ポート番号>@myad.local /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser myad\sqlsvc /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>
ktpass /princ MSSQLSvc/<SQL Server の NetBIOS 名>:<ポート番号>@myad.local /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser myad\sqlsvc /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>
ktpass /princ sqlsvc@myad.local /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser myad\sqlsvc /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>
ktpass /princ sqlsvc@myad.local /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser myad\sqlsvc /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <sqlsvc のパスワード>


4.3. カレントディレクトリに mssql.keytab ができるの、SQL Server の /var/opt/mssql/secrets/ にファイルをコピーします。


4.4. SQL Server で、keytab ファイルのパーミッションを変更します。
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab


4.5. mssql-conf ツールで、keytab ファイルにアクセスするアカウントを指定します。
sudo /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqlsvc


4.6. mssql-conf ツールで、keytab ファイルを使って SQL Server を使ってサービスを開始するように設定します。
sudo /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
sudo systemctl restart mssql-server


5. SQL Server で、AD ベースのログインを作成
5.1. Management Studio を使用して、SQL Server に接続します。
また、Windows 認証は使えないので、sa ユーザーを使用します。


5.2. ログインを作成します。



6. AD 認証を使用して SQL Server に接続
6.1. Management Studio を使用して、Windows 認証で SQL Server に接続できることを確認します。




情報元
クイック スタート:Ubuntu に SQL Server をインストールし、データベースを作成する
チュートリアル:SQL Server on Linux で Active Directory 認証を使用する
  1. 2021/11/08(月) 22:08:04|
  2. SQL
  3. | トラックバック:0
  4. | コメント:0
<<User Access Logging (UAL) を使用して、ユーザーアクセスの履歴を調査 | ホーム | vmcore からネットワーク情報を抽出>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://troushoo.blog.fc2.com/tb.php/501-5045fce4
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (114)
ネットワーク (54)
Wireshark (48)
AD (36)
Linux (45)
WinDbg (46)
SOS・Psscor2/Psscor4 (25)
Visual Studio (56)
Tips (32)
コンテナ (4)
Azure (17)
.NET (24)
Python (9)
Java (5)
SQL (6)
事例 (1)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する