web-dev-qa-db-ja.com

SQL ServerはSAパスワードとSQ​​L Serverパスワードポリシーをどこに保存しますか?

Linuxでは、SQL Serverは「SQL Serverパスワードポリシー」とSAユーザーのパスワード)をどこに保存しますか?私はそれを取得しますが、「パスワード」は安全ではありません。

エラー:システム管理者パスワードを設定できません:パスワードの検証に失敗しました。パスワードが短すぎるため、SQL Serverのパスワードポリシー要件を満たしていません。パスワードは8文字以上にする必要があります。

その後、

エラー:システム管理者パスワードを設定できません:パスワードの検証に失敗しました。パスワードは複雑ではないため、SQL Serverのパスワードポリシーの要件を満たしていません。パスワードは8文字以上で、大文字、小文字、10進数、記号の4つのセットのうち3つからの文字を含む必要があります。

ポリシーが実際にデータベースにコンパイルされていると思いますか?そして、パスワードはあいまいな場所に保存されますか?

1
Evan Carroll

Linuxの場合のように、Windowsパスワードポリシーがない場合は、SQL Serverデーモンにハードコンパイルされたデフォルトがいくつかあると思います。ドキュメントは、 Linux上のSQL Serverのセキュリティ制限 でもそれを暗示しているようです

標準のパスワードポリシーが提供されます。 MUST_CHANGEは、設定できる唯一のオプションです。

つまり、これを回避して、トレーニングホイールを簡単に外すことができます。

ALTER LOGIN [sa] WITH PASSWORD=N'password', CHECK_POLICY = off;

これが書き込むファイルに関しても、おそらくdata/mastlog.ldfデータディレクトリにあります/var/opt/mssql

0
Evan Carroll

saユーザーはSQL Serverログインであり、そのパスワードは暗号化されてDMVに保存されますsys.sql_logins[〜#〜] d [〜#〜]atabase[〜#〜] m [〜#〜]管理[〜 #〜] v [〜#〜]iew)masterデータベース。

参照:sys.sql_logins(Transact-SQL )

これらのビューが次のブランチでのみ見つかることに気付くでしょう:

Server | Databases | master | Views | System Views | .... 

DMVはいくつかのシステムベーステーブルを参照しますが、アクセスできます(アクセスしてはいけません)。

参照:システムベーステーブル

探しているポリシーはSQL Serverのコードに組み込まれており、新しいアカウントごとにデフォルトで設定されます。 SQL Serverログインを作成するときに、 defaults をオフにすることを決定できます。

複雑さと強制のためにパスワードポリシーオプションを強制するには、パスワードポリシーを強制するを選択します。詳細については、「パスワードポリシー」を参照してください。これは、SQL Server認証が選択されている場合のdefaultオプションです。

... CHECK_POLICY=OFF経由。完全な構文を参照してください。

CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }  

<option_list1> ::=   
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]  
    [ , <option_list2> [ ,... ] ]  

<option_list2> ::=    
    SID = sid  
    | DEFAULT_DATABASE = database      
    | DEFAULT_LANGUAGE = language  
    | CHECK_EXPIRATION = { ON | OFF}  
    | CHECK_POLICY = { ON | OFF}  
    | CREDENTIAL = credential_name   

<sources> ::=  
    WINDOWS [ WITH <windows_options>[ ,... ] ]  
    | CERTIFICATE certname  
    | ASYMMETRIC KEY asym_key_name  

<windows_options> ::=        
    DEFAULT_DATABASE = database  
    | DEFAULT_LANGUAGE = language  

参照:CREATE LOGIN(Transact-SQL)

SQL ServerがWindowsドメインのメンバーである場合、Active Directoryからパスワードポリシーを取得します。それ以外の場合のデフォルトは次のとおりです。

パスワードの複雑性ポリシーは、可能なパスワードの数を増やすことにより、総当たり攻撃を阻止するように設計されています。パスワードの複雑性ポリシーが実施されている場合、新しいパスワードは次のガイドラインを満たす必要があります。

  • パスワードにはユーザーのアカウント名は含まれていません。
  • パスワードは8文字以上の長さです。
  • パスワードには、次の4つのカテゴリのうち3つからの文字が含まれています。
    -ラテン大文字(AからZ)
    -ラテン小文字(a〜z)
    -基数10桁(0〜9)
    -感嘆符(!)、ドル記号($)、番号記号(#)、パーセント(%)などの非英数字文字。
    パスワードの長さは最大128文字です。できるだけ長くて複雑なパスワードを使用する必要があります。

参照:パスワードポリシー

4