Dela via


Lösenordsprincip

gäller för:SQL Server

SQL Server kan använda mekanismer för Windows-lösenordsprinciper. Lösenordsprincipen gäller för en inloggning som använder SQL Server-autentisering och för en oberoende databasanvändare med lösenord.

SQL Server kan tillämpa samma komplexitets- och förfalloprinciper som används i Windows på lösenord som används i SQL Server. Den här funktionen beror på API:et NetValidatePasswordPolicy .

Anmärkning

Azure SQL Database tillämpar lösenordskomplexitet. Avsnitten för lösenordsförfallodatum och principtillämpning gäller inte för Azure SQL Database. Information om lösenordsprincip för Azure SQL Managed Instance finns i våra vanliga frågor och svar om SQL Managed Instance.

Lösenordskomplexitet

Principer för lösenordskomplexitet är utformade för att förhindra råstyrkeattacker genom att öka antalet möjliga lösenord. När principen för lösenordskomplexitet tillämpas måste nya lösenord uppfylla följande riktlinjer:

  • Lösenordet innehåller inte användarens kontonamn.

  • Lösenordet är minst åtta tecken långt.

  • Lösenordet innehåller tecken från tre av följande fyra kategorier:

    • Latinska stora bokstäver (A till och med Z)
    • Latinska gemener (a till och med z)
    • Bas 10 siffror (0 till och med 9)
    • Icke-numeriska tecken, till exempel: utropstecken (!), dollartecken ($), taltecken (#) eller procent (%).

Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

Lösenordet upphör att gälla

Principer för förfallotid för lösenord används för att hantera livslängden för ett lösenord. När SQL Server tillämpar principen för lösenordsförfallotid påminns användarna om att ändra gamla lösenord och konton som har utgångna lösenord inaktiveras.

Regeltillämpning

Tillämpningen av lösenordsprincipen kan konfigureras separat för varje SQL Server-inloggning. Använd ALTER LOGIN för att konfigurera alternativen för lösenordsprinciper för en SQL Server-inloggning. Följande regler gäller för konfigurationen av tvingande lösenordsprinciper:

  • När CHECK_POLICY ändras till ONinträffar följande beteenden:

    • CHECK_EXPIRATION är också inställt på ON såvida det inte uttryckligen sätts till OFF.
    • Lösenordshistoriken initieras med värdet för den aktuella lösenordshashen.
    • Varaktighet för kontoutelåsning, tröskelvärde för kontoutelåsning och återställning av kontoutelåsningsräknare efter har också aktiverats.
  • När CHECK_POLICY ändras till OFFinträffar följande beteenden:

    • CHECK_EXPIRATION är också inställt på OFF.
    • Lösenordshistoriken rensas.
    • Värdet för lockout_time återställs.

Vissa kombinationer av principalternativ stöds inte.

  • Om MUST_CHANGE anges måste CHECK_EXPIRATION och CHECK_POLICY sättas till ON. Annars misslyckas -instruktionen.

  • Om CHECK_POLICY är inställt på OFFkan CHECK_EXPIRATION inte ställas in på ON. En ALTER LOGIN instruktion som har den här kombinationen av alternativ misslyckas.

  • Inställningen CHECK_POLICY = ON förhindrar att lösenord skapas som:

    • Null eller tomt
    • Samma som namnet på datorn eller inloggningen
    • Något av följande: password, admin, administrator, , sasysadmin

Säkerhetsprincipen kan anges i Windows eller tas emot från domänen. Om du vill visa lösenordspolicyn på datorn använder du Lokal säkerhetspolicy MMC-snapin-modul (secpol.msc).

Anmärkning

För SQL Server-inloggningar som har CHECK_POLICY aktiverats, om du kör ALTER LOGIN och inte tar med OLD_PASSWORD i kommandot för att ändra lösenordet, ignoreras Framtvinga lösenordshistorik . Detta är ett avsiktligt beteende för att tillåta lösenordsåterställning, trots tidigare använda lösenord. Andra kontroller som är associerade med CHECK_POLICY, inklusive längd och komplexitet, som kontrolleras oavsett om OLD_PASSWORD används.

Granska SQL-serverns lösenordspolicynformation

Du kan granska över principer för SQL-användarlösenord och förfallodatum för SQL Server med följande fråga. Även om följande fråga också fungerar i Azure SQL Database tillämpas endast lösenordskomplexitet i Azure SQL Database.

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;