A パスワードの複雑度ポリシー

セキュリティを強化するために、ユーザー・パスワードを作成または更新する際には一連のデフォルト・ルールに従う必要があります。パスワードの複雑度ポリシーは、SSLキーストアのパスワードには適用されません。

SYSOPER権限を持つすべてのユーザーは、グローバル・パスワード・ポリシーをカスタマイズし、ユーザーのパスワードを作成または更新する際のパスワードの複雑度を制御できます。Oracle NoSQL Databaseでは、攻撃者がシステムに侵入するのを防ぐために、新しいパスワードが十分に複雑であるかどうかをチェックします。

CREATE USERおよびALTER USERコマンドを使用する際、Oracle NoSQL Databaseでは、パスワード・セットがパスワードの複雑度ポリシーに準拠しているかどうかをチェックします。そうでない場合、すべての違反ポリシーとともにメッセージが表示されます。次に例を示します。

kv-> exec "create user test identified by \"password\""
Error handling command
exec "create user test identified by \"password\"":
Error: User error in query: CreateUser failed for:
Password must have at least 9 characters 

次のように、パスワードの複雑度ポリシーを有効または無効にできます。

kv-> change-policy -params passwordComplexityCheck=true

次に、change-policyコマンドを使用して、パスワードの複雑度ポリシーを変更できます。次に例を示します。

kv-> change-policy -params
passwordMinLength=20 passwordMaxLength=50 passwordMinUpper=3
passwordMinLower=3 passwordMinDigit=3 passwordMinSpecial=3 

次のパスワード・セキュリティ・パラメータを設定できます。

パラメータ名 値の範囲およびタイプ 説明
passwordAllowedSpecial #$%&'()*+,-./:; <=>?@[]^_`{|}のサブセットまたは完全セット(文字列)~ 許可されている特殊文字をリストします。
passwordComplexityCheck [true|false] (ブール) パスワード複雑度チェックを有効にするかどうか。デフォルト値はtrueです。
passwordMaxLength 1 - 2048 (整数) パスワードの最大長。デフォルト値は256です。
passwordMinDigit 0 - 2048 (整数) 数字の必要最小数。デフォルト値は2です。
passwordMinLength 1 - 2048 (整数) パスワードの最小長。デフォルト値は9です。
passwordMinLower 0 - 2048 (整数) 小文字の必要最小数。デフォルト値は2です。
passwordMinSpecial 0 - 2048 (整数) 特殊文字の必要最小数。デフォルト値は2です。
passwordMinUpper 0 - 2048 (整数) 大文字の必要最小数。デフォルト値は2です。
passwordNotStoreName [true|false] (ブール) trueの場合、パスワードを現在のストア名と同じにすることも、綴りを逆にしたストア名にすることも、1–100の数字を付加することもできません。デフォルト値はtrueです。
passwordNotUserName [true|false] (ブール) trueの場合、パスワードを現在のユーザー名と同じにすることも、綴りを逆にしたユーザー名にすることも、1-100の数字を付加することもできません。デフォルト値はtrueです。
passwordProhibited カンマで区切られた文字列のリスト(文字列) パスワードとして使用できない単語の単純なリスト。デフォルトの予約語は、oracle、password、user、nosqlです。
passwordRemember 0 - 256 (整数) 新しいパスワードの設定時に再使用できない記憶するパスワードの最大数。デフォルト値は3です。

標準USキーボードの特殊文字のほとんどは、" (二重引用符)および\ (バック・スラッシュ)を例外として、パスワードでの使用が許可されています。

特定の特殊文字を許可する場合は、passwordAllowedSpecialパラメータを使用します。次に例を示します。

kv-> change-policy -params passwordAllowedSpecial="@# $" 

既存のユーザーについてパスワードの複雑度を強制する場合は、次のように、既存のユーザーのパスワードを期限切れに設定する必要があります。

  1. システム内の既存ユーザーを確認します。

    kv-> exec "show users"
    user:id=u1 name=root
    user:id=u3 name=user1
    user:id=u4 name=user2
    user:id=u5 name=user3 
  2. 新しいパスワードの複雑度ポリシーを設定します。

    kv-> change-policy -params
    passwordComplexityCheck=true passwordMinLength=9
    passwordMinUpper=2 passwordMinLower=2
    passwordMinSpecial=2 passwordMinDigit=2 
  3. 最後に、既存ユーザーのパスワードの有効期間を期限切れに変更します。

    kv-> exec "alter user user1 password expire"
    Statement completed successfully
    kv-> exec "alter user user2 password expire"
    Statement completed successfully
    kv-> exec "alter user user3 password expire"
    Statement completed successfully 

この場合、ユーザー1、2および3は新しいポリシーに従ってパスワードを更新する必要があります。たとえば、ユーザー1でログインしようとすると、システムからパスワードの変更を求められます。

java -Xmx64m -Xms64m \
-jar kvstore.jar runadmin -host localhost \
-port 5000 -security login_file
user1's password:
The password of user1 has expired, it is required to
change the password.
Enter the new password:
Re-enter the new password: 

新しいパスワードがいずれかのパスワードの複雑度ポリシーに違反している場合は、違反メッセージを含む例外がスローされます。次に例を示します。

user1's password:
The password of user1 has expired, it is required to
change the password.
Enter the new password: password
Re-enter the new password: password
Exception in thread "main" oracle.kv.AuthenticationFailureException:
Renew password failed:
Password must have at least 9 characters
Password must contain at least 2 upper case letters
Password must contain at least 2 lower case letters
... 

ノート:

Oracle Walletを外部パスワード・ストレージに使用している場合は、パスワードがリセットされた後、すべてのOracle NoSQL Databaseユーザー・アカウントに対してウォレット・ファイルを再作成する必要があります。Oracle Walletを参照してください。