Uwierzytelnianie jest kluczowym elementem każdej strategii bezpieczeństwa. Dzisiaj omówimy uwierzytelnianie SQL Server i to, jak ważne jest zabezpieczenie środowiska SQL Server, a także rolę, jaką odgrywa uwierzytelnianie Windows.
Nawiązywanie połączenia
Wszystko zaczyna się od połączenia. Aby nawiązać pomyślne połączenie z bazą danych, klient lub aplikacja wymaga następujących informacji:
- W pełni kwalifikowana nazwa domeny SQL Server
- Nazwa instancji
- Numer portu
- Poświadczenia (nazwa użytkownika i hasło) do uwierzytelniania
Załóżmy na przykład, że korzystasz z bankowości internetowej. Aby uzyskać dostęp do swojego konta, musisz wprowadzić dane uwierzytelniające w celu uwierzytelnienia. Bank identyfikuje Cię, gdy podajesz prawidłowe dane uwierzytelniające i umożliwia dostęp do swoich usług po weryfikacji.
Podobnie, logując się do SQL Server, użytkownicy muszą podać prawidłowe dane uwierzytelniające, aby SQL Server mógł uwierzytelnić ich tożsamość i przyznać odpowiedni dostęp.
SQL Server zapewnia dwa tryby uwierzytelniania serwera:
- Uwierzytelnianie Windows
- Tryb uwierzytelniania SQL Server i Windows (tryb mieszany)
Możesz zdefiniować te metody uwierzytelniania podczas instalacji SQL Server lub zmienić je później poprzez ponowne uruchomienie. Administratorzy baz danych muszą zrozumieć różnice między tymi metodami uwierzytelniania i wdrożyć je zgodnie ze specyficznymi wymaganiami ich organizacji.
Zanurzmy się dalej, aby zrozumieć zalety i wady zarówno uwierzytelniania SQL Server, jak i Windows.
Przegląd uwierzytelniania SQL Server
Administratorzy baz danych tworzą loginy SQL i zapewniają użytkownikom odpowiednie uprawnienia do uwierzytelniania się w SQL Server. Użytkownicy muszą określić login i hasło podczas łączenia się z serwerem SQL, jak pokazano poniżej.
Poświadczenia użytkownika są sprawdzane na podstawie informacji przechowywanych w głównej bazie danych. Możesz wymusić następujące zasady logowania się do serwera SQL Server.
- Egzekwuj zasady dotyczące haseł :Administratorzy mogą zaznaczyć tę opcję, aby zaimplementować politykę haseł systemu Windows dla logowania SQL Server. Obejmuje określenie długości i złożoności hasła.
- Wymuś wygaśnięcie hasła :Możesz wymusić maksymalny wiek hasła. Hasło wygaśnie i musi zostać zmienione zgodnie z kryteriami wieku.
- Użytkownik musi zmienić hasło przy następnym logowaniu :Administrator przypisuje hasło podczas tworzenia loginu SQL. Gdy użytkownik zaloguje się przy użyciu swoich danych uwierzytelniających, musi określić nowe hasło, a administratorzy nie będą wiedzieć o tym nowym haśle.
Uwaga:Wszystkie te konfiguracje dotyczą indywidualnego poziomu logowania SQL. Dlatego jeśli potrzebujesz utworzyć wiele loginów SQL, musisz skonfigurować każde konto z wymaganą polityką.
Nie możemy włączyć tylko uwierzytelniania SQL. Aby ją włączyć, użyj opcji uwierzytelniania mieszanego, która obejmuje uwierzytelnianie zarówno Windows, jak i SQL.
Wady uwierzytelniania SQL Server
Istnieje kilka ograniczeń i wad samego uwierzytelniania SQL Server.
- Użytkownicy muszą pamiętać poświadczenia logowania SQL i podawać je w ciągu połączenia za każdym razem, gdy łączą się z SQL Server. Jeśli masz wiele serwerów SQL, może być trudno użytkownikowi śledzić hasła dla każdej instancji.
- Program SQL Server przechowuje hasło w głównej bazie danych w postaci zaszyfrowanej (mieszanej). Hakerzy mogą ukraść informacje, uzyskując dostęp do bazy danych. Ponieważ te zaszyfrowane dane uwierzytelniające muszą być przekazywane przez sieć, może to zwiększyć ryzyko kradzieży danych uwierzytelniających użytkownika.
- Nie można zaimplementować dodatkowych (dostosowanych) zasad kont z loginami uwierzytelniania SQL Server.
- Zwiększa zadanie zarządzania logowaniem dla administratorów baz danych. Administratorzy baz danych nie mają centralnej konsoli zarządzania do zarządzania loginami we wszystkich instancjach.
Załóżmy, że masz ponad 500 instancji SQL, a użytkownik potrzebuje dostępu do wszystkich tych instancji. W takim przypadku łączenie się z każdą instancją i tworzenie loginów użytkowników byłoby żmudnym zadaniem administratora bazy danych. Podobnie, jeśli dana osoba opuściła organizację, administrator bazy danych musi znaleźć loginy SQL tej osoby i usunąć je ze wszystkich tych instancji. Może to być bardzo czasochłonny proces.
- Możesz mieć problemy z użytkownikami osieroconymi podczas przenoszenia bazy danych do różnych instancji i może się to zdarzyć z powodu niezgodności identyfikatora SID w bazie danych głównej i użytkownika w nowej instancji.
- Musisz zarządzać zasadami bezpieczeństwa dla każdego logowania SQL. Nie możesz zdefiniować uniwersalnej zasady dla wszystkich kont w Twojej organizacji. W przypadku dużej bazy danych zdefiniowanie polityki dla każdego indywidualnego logowania jest żmudnym zadaniem.
Najlepsze przypadki użycia uwierzytelniania SQL Server
- Może pomóc starszym aplikacjom i oprogramowaniu innych firm łączyć bazy danych, jeśli nie obsługują one uwierzytelniania Windows (AD).
- Możesz wymagać, aby użytkownicy z niezaufanych domen łączyli się z programem SQL Server. W takim przypadku aplikacja może określić loginy SQL w ciągach połączenia i połączyć się z bazą danych.
- Aby połączyć samodzielne instancje SQL, które nie są częścią grup Active Directory (AD).
- Może pomóc SQL Server w obsłudze aplikacji internetowych, w których użytkownicy tworzą własne tożsamości.
- W kilku przypadkach administratorzy mają wspólny identyfikator do łączenia się z serwerem SQL Server przy użyciu uwierzytelniania Active Directory. Pula połączeń nie jest dobrą praktyką. W takim przypadku możesz utworzyć oddzielne loginy dla każdego użytkownika i połączyć się z bazą danych przy użyciu ich danych uwierzytelniających.
- Domyślnie, jeśli zaimplementujesz SQL Database w chmurze, tj. Azure SQL Database lub AWS RDS, otrzymasz poświadczenia logowania do uwierzytelniania SQL Server. Później, w razie potrzeby, możesz skonfigurować uwierzytelnianie oparte na AD.
- Możesz go użyć do połączenia z różnymi systemami operacyjnymi, takimi jak Linux i macOS.
Przegląd uwierzytelniania Windows
W przypadku uwierzytelniania Windows użytkownik powinien najpierw uwierzytelnić się w Active Directory. SQL Server uwierzytelnia użytkowników za pomocą tokenu głównego systemu Windows w systemie operacyjnym. Dzięki temu SQL Server nie prosi o hasło do weryfikacji tożsamości. Dlatego system Windows potwierdza tożsamość użytkowników w celu uwierzytelnienia. SQL Server nie przechowuje poświadczeń w uwierzytelnianiu systemu Windows. Połączenie przy użyciu uwierzytelniania Windows nazywane jest połączeniem zaufanym lub zintegrowanym.
Uwaga:uwierzytelnianie Windows jest domyślną metodą uwierzytelniania podczas instalacji SQL Server.
Zalety uwierzytelniania Windows
- Uwierzytelnianie systemu Windows to bezpieczny sposób łączenia się z programem SQL Server, który wykorzystuje tokeny i nazwy SPN do celów uwierzytelniania przy użyciu protokołu uwierzytelniania Kerberos. Dlatego nie wysyła haseł przez sieć i chroni przed kradzieżą haseł w sieci.
- SQL Server nie przechowuje danych logowania użytkownika.
- Wykorzystuje protokół bezpieczeństwa Kerberos i można wdrażać zasady dotyczące haseł, takie jak złożone hasła, blokady kont i wygasanie haseł. Tę politykę haseł można wdrożyć na poziomie organizacji na wszystkich serwerach. Dlatego możesz kontrolować zasady bezpieczeństwa użytkowników na poziomie organizacji zamiast na poziomie indywidualnego logowania, jak w przypadku uwierzytelniania SQL Server.
- Uwierzytelnianie Windows umożliwia rozdzielenie obowiązków. Zespół Active Directory (AD) zarządza użytkownikami AD. Natomiast DBA dodaje użytkowników AD w instancjach SQL i zapewnia odpowiednie uprawnienia.
- Active Directory pomaga tworzyć grupy Windows. Zespół AD może dodać wiele osób, które wymagają równego dostępu do grupy AD. Później możesz dodać grupę w instancji SQL i nadać uprawnienia na poziomie grupy. Dlatego jeśli dołącza nowa osoba, będąc już częścią grupy AD, dostęp do bazy danych jest automatycznie przyznawany na serwerze, na którym istnieje ta grupa AD. Podobnie, gdy użytkownik przeniesie się z organizacji, a jego identyfikator zostanie usunięty z tych grup AD, nie będzie już mógł uzyskać dostępu do bazy danych.
Wady uwierzytelniania Windows
- Jeśli używasz tylko uwierzytelniania Windows dla SQL Server, wszyscy użytkownicy powinni być częścią Active Directory.
- DBA nie mają kontroli nad loginami i grupami AD.
- DBA nie zna członkostwa w grupie AD. Nie otrzymasz powiadomienia, jeśli użytkownik zostanie dodany lub usunięty z grup AD.
Podsumowanie
W tym wpisie w blogu omówiono kluczowe składniki uwierzytelniania programu SQL Server i uwierzytelniania systemu Windows. Mam nadzieję, że pomoże ci to zrozumieć różnice między tymi metodami uwierzytelniania, aby zdecydować, które najlepiej sprawdzają się w Twojej firmie i okolicznościach.
Uwierzytelnianie SQL Server może być używane na tym samym komputerze co SQL Server lub w połączeniu zdalnym. Jeśli pracujesz w środowisku Active Directory, zalecane jest użycie uwierzytelniania Windows. Jeśli pracujesz w środowisku innym niż Active Directory, możesz wykorzystać uwierzytelnianie SQL Server do połączeń z bazą danych.
Uwierzytelnianie Windows zapewnia większe bezpieczeństwo i elastyczność w zarządzaniu loginami w SQL Server. Dlatego należy go używać, gdy tylko jest to możliwe.