Sdílet prostřednictvím


Zásady hesel

platí pro:SQL Server

SQL Server může používat mechanismy zásad hesla systému Windows. Zásady hesel platí pro přihlášení, které používá ověřování SQL Serveru a uživatele databáze s omezením s heslem.

SQL Server může použít stejné zásady složitosti a vypršení platnosti, které se ve Windows používají pro hesla použitá v SQL Serveru. Tato funkce závisí na NetValidatePasswordPolicy rozhraní API.

Poznámka:

Azure SQL Database vynucuje složitost hesel. Oddíly vypršení platnosti hesla a vynucení zásad se nevztahují na službu Azure SQL Database. Informace o zásadách hesel pro službu Azure SQL Managed Instance najdete v nejčastějších dotazech ke službě SQL Managed Instance.

Složitost hesla

Zásady složitosti hesel jsou navržené tak, aby odstrašily útoky hrubou silou zvýšením počtu možných hesel. Při vynucení zásad složitosti hesel musí nová hesla splňovat následující pokyny:

  • Heslo neobsahuje název účtu uživatele.

  • Heslo je minimálně osm znaků dlouhé.

  • Heslo obsahuje znaky ze tří z následujících čtyř kategorií:

    • Velká písmena latinky (AZ)
    • Malá písmena latinky (az)
    • Základ 10 číslic (09)
    • Neosamocené znaky, například: vykřičník (!), znak dolaru ($), znak čísla (#) nebo procenta (%).

Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

Vypršení platnosti hesla

Zásady vypršení platnosti hesla slouží ke správě životnosti hesla. Když SQL Server vynucuje zásady vypršení platnosti hesla, uživatelům se připomene, že změní stará hesla a účty, jejichž platnost vypršela, jsou zakázaná.

Vynucení zásad

Vynucení zásad hesel je možné nakonfigurovat samostatně pro každé přihlášení k SQL Serveru. Pomocí příkazu ALTER LOGIN nakonfigurujte možnosti zásad hesel pro přihlášení k SQL Serveru. Pro konfiguraci vynucení zásad hesel platí následující pravidla:

  • Když CHECK_POLICY se změní na ON, dojde k následujícímu chování:

    • CHECK_EXPIRATION je také nastavena na ON pokud není explicitně nastavena na OFF.
    • Historie hesel se inicializuje s hodnotou aktuální hodnoty hash hesla.
    • Doba trvání uzamčení účtu, prahová hodnota uzamčení účtu a resetování čítače uzamčení účtu po jsou také povoleny.
  • Když CHECK_POLICY se změní na OFF, dojde k následujícímu chování:

    • CHECK_EXPIRATION je také nastaveno na OFF hodnotu.
    • Historie hesel se vymaže.
    • Hodnota lockout_time je resetována.

Některé kombinace možností zásad se nepodporují.

  • Pokud je specifikováno MUST_CHANGE, musí být CHECK_EXPIRATION a CHECK_POLICY nastaveny na ON. Jinak příkaz selže.

  • Pokud je CHECK_POLICY nastaveno na OFF, CHECK_EXPIRATION nelze nastavit na ON. Příkaz ALTER LOGIN , který má tuto kombinaci možností, selže.

  • Nastavení CHECK_POLICY = ON brání vytváření hesel, která jsou:

    • Null nebo prázdné
    • Stejné jako název počítače nebo přihlášení
    • Některá z následujících možností: password, admin, administrator, sa, sysadmin

Zásady zabezpečení můžou být nastavené ve Windows nebo můžou být přijaty z domény. Pokud chcete zobrazit zásady hesla na počítači, použijte snap-in modul konzoly MMC Místní zásady zabezpečení (secpol.msc).

Poznámka:

Pokud jsou pro přihlášení SQL Serveru povolena CHECK_POLICY a spustíte ALTER LOGIN bez zahrnutí OLD_PASSWORD do příkazu ke změně hesla, bude ignorováno vynucení historie hesel. Jedná se o chování podle návrhu, které umožňuje resetování hesla bez ohledu na všechna dříve použitá hesla. Jiné kontroly spojené s CHECK_POLICY, včetně délky a složitosti, jsou kontrolovány bez ohledu na to, zda OLD_PASSWORD se používá.

Kontrola informací o zásadách hesel uživatele SQL

Pomocí následujícího dotazu můžete zkontrolovat zásady hesel a data vypršení platnosti uživatelského hesla SQL na SQL Serveru. I když následující dotaz funguje také ve službě Azure SQL Database, vynucuje se v Azure SQL Database pouze složitost hesla.

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;