Udostępnij przez


Zasady haseł

Dotyczy:SQL Server

Program SQL Server może używać mechanizmów zasad haseł systemu Windows. Zasady haseł dotyczą logowania korzystającego z uwierzytelniania SQL Server oraz użytkownika bazy danych z hasłem.

Program SQL Server może stosować te same zasady złożoności i wygasania używane w systemie Windows do haseł używanych w programie SQL Server. Ta funkcjonalność zależy od API NetValidatePasswordPolicy.

Uwaga / Notatka

Usługa Azure SQL Database wymusza złożoność hasła. Sekcje wygasania haseł i wymuszania zasad nie mają zastosowania do usługi Azure SQL Database. Aby uzyskać informacje na temat zasad haseł dla usługi Azure SQL Managed Instance, zobacz często zadawane pytania dotyczące usługi SQL Managed Instance.

Złożoność hasła

Zasady złożoności haseł są przeznaczone do odstraszania ataków siłowych przez zwiększenie liczby możliwych haseł. Gdy zasady złożoności hasła są wymuszane, nowe hasła muszą spełniać następujące wytyczne:

  • Hasło nie zawiera nazwy konta użytkownika.

  • Hasło ma długość co najmniej ośmiu znaków.

  • Hasło zawiera znaki z trzech z następujących czterech kategorii:

    • Wielkie litery łacińskie (A od Z)
    • Małe litery (od a do z)
    • Podstawowe 10 cyfr (0 od 9)
    • Znaki nieliczbowe, takie jak: wykrzyknik (!), znak dolara ($), znak numeru (#) lub procent (%).

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.

Wygaśnięcie hasła

Zasady wygasania haseł służą do zarządzania cyklem życia hasła. Gdy program SQL Server wymusza zasady wygasania haseł, użytkownicy są przypominani o zmianie starych haseł, a konta z wygasłymi hasłami są wyłączone.

Egzekwowanie zasad

Konfiguracja zasad dotyczących haseł może być skonfigurowana oddzielnie dla każdego loginu SQL Server. Użyj ALTER LOGIN, aby skonfigurować opcje zasad dotyczących haseł programu SQL Server. Następujące reguły dotyczą konfiguracji wymuszania zasad haseł:

  • Gdy CHECK_POLICY element zostanie zmieniony na ON, wystąpią następujące zachowania:

    • CHECK_EXPIRATION jest również ustawiony na ON, chyba że jest jawnie ustawiony na OFF.
    • Historia haseł jest inicjowana z wartością bieżącego skrótu hasła.
    • Czas trwania blokady konta, próg blokady konta i resetowanie licznika blokady konta po są również włączone.
  • Gdy CHECK_POLICY element zostanie zmieniony na OFF, wystąpią następujące zachowania:

    • CHECK_EXPIRATION jest również ustawiony na wartość OFF.
    • Historia haseł jest czyszczone.
    • Wartość lockout_time jest resetowana.

Niektóre kombinacje konfiguracji zasad nie są obsługiwane.

  • Jeśli określono wartość MUST_CHANGE, CHECK_EXPIRATION i CHECK_POLICY muszą być ustawione na ON. W przeciwnym razie instrukcja kończy się niepowodzeniem.

  • Jeśli CHECK_POLICY ustawiono wartość OFF, CHECK_EXPIRATION nie można ustawić wartości ON. Instrukcja zawierająca ALTER LOGIN tę kombinację opcji kończy się niepowodzeniem.

  • Ustawienie CHECK_POLICY = ON uniemożliwia tworzenie haseł, które są następujące:

    • Wartość null lub pusta
    • Taka sama jak nazwa komputera lub logowania
    • Dowolny z następujących elementów: password, , adminadministrator, , sasysadmin

Zasady zabezpieczeń mogą być ustawione w systemie Windows lub mogą być odbierane z domeny. Aby wyświetlić zasady polityki haseł na komputerze, użyj przystawki MMC Zasady zabezpieczeń lokalnych (secpol.msc).

Uwaga / Notatka

W przypadku logowań programu SQL Server, które zostały CHECK_POLICY włączone, jeśli uruchomisz polecenie ALTER LOGIN i nie uwzględnisz OLD_PASSWORD w poleceniu zmiany hasła, Wymuszanie historii haseł jest pomijane. Jest to zachowanie projektowe umożliwiające resetowanie haseł pomimo poprzednio używanych haseł. Inne kontrole związane z CHECK_POLICY, w tym długość i złożoność, są sprawdzane niezależnie od tego, czy OLD_PASSWORD jest używane.

Sprawdzanie informacji o zasadach haseł użytkownika SQL

Możesz przejrzeć zasady haseł użytkowników SQL i daty wygaśnięcia w programie SQL Server, korzystając z następującego zapytania. Chociaż poniższe zapytanie działa również w usłudze Azure SQL Database, w usłudze Azure SQL Database wymuszana jest tylko złożoność hasła.

SELECT name,
       is_policy_checked,
       is_expiration_checked,
       LOGINPROPERTY(name, 'IsMustChange') AS IsMustChange,
       LOGINPROPERTY(name, 'IsLocked') AS IsLocked,
       LOGINPROPERTY(name, 'LockoutTime') AS LockoutTime,
       LOGINPROPERTY(name, 'PasswordLastSetTime') AS PasswordLastSetTime,
       LOGINPROPERTY(name, 'IsExpired') AS IsExpired,
       LOGINPROPERTY(name, 'BadPasswordCount') AS BadPasswordCount,
       LOGINPROPERTY(name, 'BadPasswordTime') AS BadPasswordTime,
       LOGINPROPERTY(name, 'HistoryLength') AS HistoryLength,
       modify_date
FROM sys.sql_logins;