Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie Linux
W tym samouczku wyjaśniono, jak skonfigurować uwierzytelnianie usługi Active Directory systemu Windows dla programu SQL Server w systemie Linux przy użyciu narzędzia adutil. Aby uzyskać inną metodę konfigurowania uwierzytelniania usługi Active Directory przy użyciu rozwiązania ktpass, zobacz Samouczek: używanie uwierzytelniania usługi Active Directory z programem SQL Server w systemie Linux.
Ten samouczek składa się z następujących zadań:
- Zainstaluj produkt
adutil - Dołączanie maszyny z systemem Linux do domeny usługi Active Directory
- Tworzenie użytkownika Active Directory dla SQL Server i ustawianie głównej nazwy usługi (SPN) przy użyciu
adutil - Tworzenie pliku keytab usługi programu SQL Server
- Konfigurowanie programu SQL Server do korzystania z pliku keytab
- Tworzenie loginów SQL Server opartych na Active Directory przy użyciu Transact-SQL
- Nawiązywanie połączenia z programem SQL Server przy użyciu uwierzytelniania usługi Active Directory
Wymagania wstępne
Przed skonfigurowaniem uwierzytelniania usługi Active Directory potrzebne są następujące elementy:
- Kontroler domeny systemu Windows z uruchomionymi usługami Active Directory Domain Services w sieci.
- Narzędzie
adutilzainstalowane na komputerze hosta przyłączonym do domeny.
Przygotowywanie maszyny domeny
Upewnij się, że w usłudze Active Directory dodano wpis hosta przekazującego (A) dla adresu IP hosta systemu Linux. W tym samouczku adres IP maszyny hostującej to sql1. W poniższym przykładzie dodajemy wpis hosta przekazującego w usłudze Active Directory. Wpis gwarantuje, że gdy użytkownicy nawiążą połączenie z sql1.contoso.com, dotrze do odpowiedniego hosta.
Na potrzeby tego samouczka użyjesz środowiska na platformie Azure z trzema maszynami wirtualnymi. Jedna maszyna wirtualna (VM) to komputer z systemem Windows Server o nazwie adVM.contoso.com, uruchomiony jako kontroler domeny (DC) z domeną o nazwie contoso.com. Druga maszyna wirtualna to maszyna kliencka z systemem Windows 10 o nazwie winbox, która ma zainstalowany program SQL Server Management Studio (SSMS). Trzecia maszyna to maszyna z systemem Ubuntu 18.04 LTS o nazwie sql1, która hostuje program SQL Server.
Dołączanie maszyny hosta z systemem Linux do domeny usługi Active Directory
Aby dołączyć do domeny usługi Active Directory, zobacz Dołączanie programu sql1SQL Server na hoście z systemem Linux do domeny usługi Active Directory.
Instalowanie narzędzia adutil
Aby zainstalować adutil, wykonaj kroki opisane w artykule Introduction to adutil — narzędzie Active Directory na maszynie hosta dodanej do domeny w poprzednim kroku.
Użyj narzędzia adutil, aby utworzyć użytkownika usługi Active Directory dla programu SQL Server i ustawić nazwę główną usługi (SPN)
Uzyskaj lub odnów bilet TGT Kerberos przy użyciu polecenia
kinit. Musisz użyć uprzywilejowanego konta dlakinitpolecenia, a maszyna hosta powinna być już częścią domeny. Konto musi mieć uprawnienia do łączenia się z domeną oraz tworzenia kont i nazw SPN w domenie.W tym przykładowym skrycie uprzywilejowany użytkownik o nazwie
privilegeduser@CONTOSO.COMjest już tworzony na kontrolerze domeny.kinit privilegeduser@CONTOSO.COMUżywając
adutil, utwórz nowego użytkownika, który będzie używany jako konto uprzywilejowane Active Directory przez SQL Server.Hasła można określić na trzy różne sposoby. Jeśli używasz więcej niż jednej z tych metod, mają pierwszeństwo w następującej kolejności:
- Za pomocą flagi hasła:
--password <password> - W zmiennej środowiskowej:
ADUTIL_ACCOUNT_PWD - Interaktywne dane wejściowe w wierszu polecenia
Zmienna środowiskowa lub metody interakcyjne są bezpieczniejsze niż flaga hasła.
adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'Możesz określić nazwę konta przy użyciu nazwy wyróżniającej (
--distname), jak pokazano wcześniej, lub użyć nazwy jednostki organizacyjnej (OU). Nazwa jednostki organizacyjnej (--ou) ma pierwszeństwo przed nazwą unikalną, jeżeli określisz obie. Aby uzyskać więcej informacji, możesz uruchomić następujące polecenie:adutil user create --helpOstrzeżenie
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
- Za pomocą flagi hasła:
Zarejestruj nazwy SPN dla utworzonego wcześniej podmiotu (principala). Należy użyć w pełni kwalifikowanej nazwy domeny (FQDN) maszyny. W tym samouczku używamy domyślnego portu programu SQL Server 1433. Numer portu może być inny.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433-
addautoautomatycznie tworzy nazwy SPN, o ile kontokinitma wystarczające uprawnienia. -
-n: nazwa konta do przypisania nazw SPN. -
-s: Nazwa usługi używana do generowania SPN. W tym przypadku jest to usługa SQL Server, dlatego nazwa usługi toMSSQLSvc. -
-H: Nazwa hosta do użycia przy generowaniu nazw SPN. Jeśli nie zostanie określona, zostanie użyta nazwa FQDN hosta lokalnego. W takim przypadku nazwa hosta tosql1, a nazwa FQDN tosql1.contoso.com. -
-p: port używany do generowania SPN. Jeśli nie zostaną określone, SPN są generowane bez portu. Połączenia SQL działają tylko w tym przypadku, gdy wystąpienie programu SQL Server nasłuchuje domyślnego portu 1433.
-
Tworzenie pliku keytab usługi SQL Server za pomocą mssql-conf
Możesz zainstalować adutil i zintegrować ją z mssql-conf, aby utworzyć i skonfigurować plik keytab bezpośrednio za pomocą mssql-conf. Ta metoda jest zalecana do tworzenia pliku keytab usługi SQL Server. W przeciwnym razie możesz ręcznie utworzyć plik keytab usługi SQL Server.
Wymagania wstępne
Upewnij się, że użytkownik jest właścicielem pliku
mssql/var/opt/mssql/mssql.conf, a nieroot. W przeciwnym razie należy uruchomić poleceniamssql-confprzy użyciusudo.Na kontrolerze domeny w ustawieniach usługi Active Directory dla
network.privilegedadaccountkonta (w tych przykładachsqluser@CONTOSO.COM), włącz następujące opcje na karcie Konto w sekcji Opcje konta :- To konto obsługuje szyfrowanie 128-bitowe Kerberos AES
- To konto obsługuje szyfrowanie 256-bitowe protokołu Kerberos AES
Utwórz plik keytab
Po utworzeniu użytkownika i nazw SPN możesz utworzyć plik keytab, wykonując następujące kroki.
Przełącz na
mssqlużytkownika:su mssqlZaloguj się jako użytkownik usługi Active Directory przy użyciu
kinitpolecenia :kinit privilegeduser@CONTOSO.COMUtwórz plik keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluserPo wyświetleniu monitu o ponowne uruchomienie usługi SQL Server w celu wdrożenia nowej konfiguracji usługi Active Directory można to zrobić w następnej sekcji.
Upewnij się, że keytab został utworzony z odpowiednimi wpisami:
klist -kte /var/opt/mssql/secrets/mssql.keytabPowinny zostać wyświetlone dane wyjściowe podobne do tego przykładu:
keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)Jeśli plik
/var/opt/mssql/mssql.confnie jest własnościąmssql, należy skonfigurowaćmssql-confw celu ustawienia wartościnetwork.kerberoskeytabfileinetwork.privilegedadaccountzgodnie z poprzednimi krokami. Wpisz hasło po wyświetleniu monitu./opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluserZweryfikuj konfigurację, aby upewnić się, że uwierzytelnianie usługi Active Directory działa bez żadnych problemów.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytabDane wyjściowe wyglądają podobnie do następującego przykładu:
Detected Configuration: Default Realm: CONTOSO.COM Keytab: /var/opt/mssql/secrets/mssql.keytab Reverse DNS Result: sql1.contoso.com SQL Server Port: 1433 Detected SPNs (SPN, KVNO): (MSSQLSvc/sql1.CONTOSO.COM:1433, 4) (MSSQLSvc/sql1.CONTOSO.COM, 4) (MSSQLSvc/sql1:1433, 4) (MSSQLSvc/sql1, 4) Privileged Account (Name, KVNO): (sqluser, 4)
Ręczne tworzenie pliku keytab usługi programu SQL Server
Jeśli zainstalowano adutil i zintegrowano go z mssql-conf, możesz przejść do Utwórz plik SQL Server service keytab przy użyciu mssql-conf.
Utwórz plik keytab zawierający wpisy dla każdej z czterech wcześniej utworzonych nazw SPN i jeden dla użytkownika.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvcOstrzeżenie
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
Możliwe opcje wiersza polecenia to:
-
-k: ścieżka, wmssql.keytabktórej jest tworzony plik. W poprzednim przykładzie katalog/var/opt/mssql/secrets/powinien już istnieć na hoście. -
-p: port używany do generowania SPN. Jeśli nie zostaną określone, SPN są generowane bez portu. -
-H: Nazwa hosta do użycia przy generowaniu nazw SPN. Jeśli nie zostanie określona, zostanie użyta nazwa FQDN hosta lokalnego. W takim przypadku nazwa hosta tosql1, a nazwa FQDN tosql1.contoso.com. -
-s: Nazwa usługi używana do generowania SPN. W tym przykładzie nazwa usługi programu SQL Server toMSSQLSvc. -
--password: hasło uprzywilejowanego konta użytkownika usługi Active Directory, które zostało utworzone wcześniej. -
-elub--enctype: rodzaje szyfrowania dla wpisu keytab. Użyj rozdzielanej przecinkami listy wartości. Jeśli nie zostanie określony, zostanie wyświetlony interakcyjny monit.
Możesz wybrać więcej niż jeden typ szyfrowania, o ile host i domena obsługują typ szyfrowania. W tym przykładzie możesz wybrać elementy
aes256-cts-hmac-sha1-96iaes128-cts-hmac-sha1-96. Należy jednak unikaćarcfour-hmacw środowisku produkcyjnym, ponieważ ma słabe szyfrowanie.Jeśli chcesz wybrać typ szyfrowania bez monitowania, możesz określić wybrany typ szyfrowania przy użyciu argumentu
-ew poprzednim poleceniu. Aby uzyskać więcej pomocy dotyczącejadutil keytabopcji, uruchom następujące polecenie:adutil keytab createauto --help-
Dodaj wpis do keytab dla nazwy głównej i hasła używanego przez program SQL Server do łączenia się z usługą Active Directory.
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'Ostrzeżenie
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
-
-k: ścieżka, w której chcesz utworzyćmssql.keytabplik. -
-p: Główny wpis do dodania do keytabu.
Element
adutil keytab [ create | autocreate ]nie zastępuje poprzednich plików; po prostu dołącza go do pliku, jeśli już istnieje.-
Upewnij się, że użytkownik jest właścicielem
mssqlutworzonego keytabu i że tylkomssqlużytkownik ma dostęp do odczytu i zapisu do pliku. Poleceniachownichmodmożna uruchomić w następujący sposób:chown mssql /var/opt/mssql/secrets/mssql.keytab chmod 440 /var/opt/mssql/secrets/mssql.keytab
Konfiguracja SQL Server do użycia keytab
Uruchom poniższe polecenia, aby skonfigurować program SQL Server do używania karty kluczy utworzonej w poprzednim kroku i ustawić uprzywilejowane konto usługi Active Directory jako utworzone wcześniej przez użytkownika. W naszym przykładzie nazwa użytkownika to sqluser.
/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Uruchom ponownie program SQL Server
Uruchom następujące polecenie, aby ponownie uruchomić usługę PROGRAMU SQL Server:
sudo systemctl restart mssql-server
Tworzenie identyfikatorów logowania w usłudze SQL Server opartych na usłudze Active Directory w Transact-SQL
Połącz się z wystąpieniem programu SQL Server i uruchom następujące polecenia, aby utworzyć konto logowania i potwierdzić jego istnienie.
CREATE LOGIN [contoso\privilegeduser]
FROM WINDOWS;
SELECT name
FROM sys.server_principals;
Nawiązywanie połączenia z programem SQL Server przy użyciu uwierzytelniania usługi Active Directory
Użyj poświadczeń systemu Windows, aby nawiązać połączenie z wystąpieniem programu SQL Server przy użyciu programu SQL Server Management Studio (SSMS).
Możesz również użyć narzędzia takiego jak sqlcmd, aby nawiązać połączenie z instancją SQL Server przy użyciu uwierzytelniania Windows.
sqlcmd -E -S 'sql1.contoso.com'
Treści powiązane
- Omówienie uwierzytelniania usługi Active Directory dla programu SQL Server w systemie Linux i kontenerach
- Rozwiązywanie problemów z uwierzytelnianiem usługi Active Directory dla programu SQL Server w systemie Linux i kontenerach
- uwierzytelnianie usługi Active Directory dla programu SQL Server w systemie Linux
- Samouczek: konfigurowanie uwierzytelniania usługi Active Directory za pomocą programu SQL Server w kontenerach systemu Linux
- Obracanie keytabów dla programu SQL Server w systemie Linux