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 (A až Z)

    • Malá písmena latinky (a až z)

    • 10 základních číslic (0 až 9)

    • 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á.

Prosazování 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ž se CHECK_POLICY změní na ZAPNUTO, dojde k následujícímu chování:

    • CHECK_EXPIRATION je také nastaven na ZAPNUTO, pokud není explicitně nastaven na VYPNUTO.

    • 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ž se CHECK_POLICY změní na VYPNUTO, dojde k následujícímu chování:

    • CHECK_EXPIRATION je také vypnuto.

    • Historie hesel se vymaže.

    • Hodnota lockout_time je resetována.

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

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

  • Pokud je CHECK_POLICY nastavená na VYPNUTO, CHECK_EXPIRATION nejde nastavit na ZAPNUTO. Příkaz ALTER LOGIN, který má tuto kombinaci možností, selže.

  • Nastavení CHECK_POLICY = ZAPNUTO zabraňuje 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:

Pro přihlášení SQL Serveru, která mají povolenou CHECK_POLICY, pokud spustíte příkaz ALTER LOGIN ke změně hesla a nezahrnete do příkazu OLD_PASSWORD, bude ignorováno Enforce Password History . 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, se kontrolují bez ohledu na to, jestli se OLD_PASSWORD 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;

CREATE LOGIN

ALTER LOGIN

VYTVOŘIT UŽIVATELE

ALTER USER

Vytvoření přihlášení

Vytvoření uživatele databáze