CentOS 7
Sponsored Link

SQL Server 2019 : Windows 認証する2020/01/17

 
CentOS 上で稼働する SQL Server に対して Windows 認証でログオンできるように設定します。
[1]
ドメインサーバー : Windows Server 2019
NetBIOS名 : FD3S01
ドメイン名 : srv.world
レルム : SRV.WORLD
ホスト名 : fd3s.srv.world
[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.privilegedadaccount mssql

[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 FD3S01\\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:321801103:krb_ccache_Ig0qJ6m
Default principal: Serverworld@SRV.WORLD

Valid starting       Expires              Service principal
01/17/2020 17:22:11  01/18/2020 03:22:11  krbtgt/SRV.WORLD@SRV.WORLD
        renew until 01/24/2020 17:22:07

[serverworld@dlp ~]$
sqlcmd -S dlp.srv.world

1> select @@version;
2> go

-----------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM-CU1) (KB4527376) - 15.0.4003.23 (X64)
        Dec  6 2019 14:53:33
        Copyright (C) 2019 Microsoft Corporation
        Developer Edition (64-bit) on Linux (CentOS Linux 7 (Core)) <X64>    

(1 rows affected)
  ドメイン参加した Windows クライアント上の SSMS からも [Windows 認証] でログイン可能です。
関連コンテンツ