Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MasayukiOzawa/2cd25105b63dfb3c6b83bfefc4044d83 to your computer and use it in GitHub Desktop.
Save MasayukiOzawa/2cd25105b63dfb3c6b83bfefc4044d83 to your computer and use it in GitHub Desktop.
Ubuntu の AAD 認証の有効化
# ドメイン名の大文字 / 小文字の入力が意識されるため、以下のスクリプトの大文字/小文字はそのままの形式で適宜ドメイン名を変更
sudo apt-get install -y realmd krb5-user packagekit
# インストール時に入力が求められるドメイン名については、大文字で指定
# https://answers.launchpad.net/ubuntu/+question/293540
sudo realm discover contoso.com -v
sudo realm join contoso.com -U 'LinuxADUser@CONTOSO.COM' -v
# Domain Users 権限で JOIN させる場合、事前にコンピューターアカウントを作成し無効な状態としておき、コマンドで使用するユーザーのフルコントロールを付与しておく
# AD で実行(SoL をインストールしたマシンのホスト名は ubuntu)
Import-Module ActiveDirectory
New-ADUser mssql -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $true
setspn.exe -A MSSQLSvc/ubuntu.contoso.com:1433 mssql
setspn.exe -A MSSQLSvc/ubuntu:1433 mssql
# Linux で実行
kinit LinuxADUser@CONTOSO.COM
klist
kvno MSSQLSvc/ubuntu.contoso.com:1433
# kvno が表示されるので控えておく。kvno の SPN が小文字のドメイン名で認識されてしまっている場合は、kvno MSSQLSvc/ubuntu.contoso.com:1433@CONTOSO.COM
にする
# -k 2 については、上述の kvno で確認した値を設定する
sudo ktutil
addent -password -p MSSQLSvc/ubuntu.contoso.com:1433@CONTOSO.COM -k 2 -e aes256-cts-hmac-sha1-96
addent -password -p MSSQLSvc/ubuntu.contoso.com:1433@CONTOSO.COM -k 2 -e rc4-hmac
wkt /var/opt/mssql/secrets/mssql.keytab
quit
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
sudo /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
sudo systemctl restart mssql-server
# SQL Server で実行
CREATE LOGIN [CONTOSO\LinuxADUser] FROM WINDOWS
GO
ALTER SERVER ROLE [sysadmin] ADD MEMBER [CONTOSO\LinuxADUser]
GO
# 作成したログインの Windows ユーザーで以下を実行し接続を確認
sqlcmd -S ubuntu
sqlcmd -S ubuntu.contoso.com
# SQL Server で接続情報を確認
SELECT
c.session_id,
c.connect_time,
s.login_time,
c.net_transport,
c.protocol_type,
c.encrypt_option,
c.auth_scheme,
s.host_name,
s.program_name,
s.client_version,
s.client_interface_name,
s.login_name,
s.nt_domain,
s.nt_user_name
FROM
sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s
ON
c.session_id = s.session_id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment