SQL Server 2017 : Windows 認証する2017/10/11 |
CentOS 上で稼働する SQL Server に対して Windows 認証でログオンできるように設定します。
|
|||||||||||
[1] |
こちらを参考に SQL Server が稼働する CentOS ホストを
Active Directory ドメインに加えておきます。
当例では以下のような環境を前提に進めます。
|
||||||||||
[2] | 事前に AD 側で SQL Server サービス用のユーザーを作成しておきます。 当例では以下のように [mssql] ユーザーを作成して進めます。 |
[3] |
Powershell を管理者で起動し、SQL Server サービス用のユーザーにサービスプリンシパル名をセットしておきます。
PS > setspn -A MSSQLSvc/(SQL Server 稼働ホストの FQDN):(SQL Server 稼働ポート) (SQL Server サービス用のユーザー)
|
[4] | SQL Server が稼働する CentOS ホストでの設定です。 |
# SQL Server サービス用の AD ユーザーで Kerberos チケット取得 [root@dlp ~]# kinit mssql@SRV.WORLD Password for mssql@SRV.WORLD: # Key Version Number (kvno) 確認 [root@dlp ~]# kvno MSSQLSvc/dlp.srv.world:1433 MSSQLSvc/dlp.srv.world:1433@SRV.WORLD: kvno = 2 # keytab ファイル作成 # addent -password -p MSSQLSvc/(SQL Server 稼働ホストの FQDN):(SQL Server 稼働ポート) -k (kvno) [root@dlp ~]# ktutil ktutil: addent -password -p MSSQLSvc/dlp.srv.world:1433@SRV.WORLD -k 2 -e aes256-cts-hmac-sha1-96 Password for MSSQLSvc/dlp.srv.world:1433@SRV.WORLD: ktutil: addent -password -p MSSQLSvc/dlp.srv.world:1433@SRV.WORLD -k 2 -e rc4-hmac Password for MSSQLSvc/dlp.srv.world:1433@SRV.WORLD: ktutil: wkt /var/opt/mssql/secrets/mssql.keytab ktutil: quit
[root@dlp ~]#
chown mssql. /var/opt/mssql/secrets/mssql.keytab [root@dlp ~]# chmod 400 /var/opt/mssql/secrets/mssql.keytab
# keytab ファイル設定 [root@dlp ~]# /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab SQL Server needs to be restarted in order to apply this setting. Please run 'systemctl restart mssql-server.service'. [root@dlp ~]# systemctl restart mssql-server |
[5] | 任意の AD ユーザーと紐付く SQL Server ユーザーを作成します。 |
# 例として [serverworld] ユーザーを作成 [root@dlp ~]# id serverworld uid=1539401000(serverworld) gid=1539400513(domain users) groups=1539400513(domain users) [root@dlp ~]# sqlcmd -S localhost -U SA Password: 1> create login [FD3S01\Serverworld] from windows; 2> go 1> select name from sys.server_principals; 2> go name -------------------------------------------- sa public sysadmin securityadmin serveradmin setupadmin processadmin diskadmin dbcreator bulkadmin ##MS_SQLResourceSigningCertificate## ##MS_SQLReplicationSigningCertificate## ##MS_SQLAuthenticatorCertificate## ##MS_PolicySigningCertificate## ##MS_SmoExtendedSigningCertificate## ##MS_PolicyEventProcessingLogin## ##MS_PolicyTsqlExecutionLogin## ##MS_AgentSigningCertificate## BUILTIN\Administrators NT AUTHORITY\SYSTEM NT AUTHORITY\NETWORK SERVICE FD3S01\Serverworld (22 rows affected) |
[6] | SQL Server ログインを作成した AD ユーザーで CentOS にログインし、SQL Server にもログイン可能か確認します。 |
# Kerberos チケット取得 [serverworld@dlp ~]$ kinit Password for serverworld@SRV.WORLD: [serverworld@dlp ~]$ klist Ticket cache: KEYRING:persistent:1539401000:1539401000 Default principal: serverworld@SRV.WORLD Valid starting Expires Service principal 10/12/2017 11:15:37 10/12/2017 21:15:37 krbtgt/SRV.WORLD@SRV.WORLD renew until 10/19/2017 11:15:27[serverworld@dlp ~]$ sqlcmd -S dlp.srv.world 1> select @@version; 2> go ----------------------------------------------------------------------- Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Linux (CentOS Linux 7 (Core)) (1 rows affected) |
ドメイン参加した Windows クライアント上の SSMS からも [Windows 認証] でログイン可能です。 |
Sponsored Link |