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="@# $"
既存のユーザーについてパスワードの複雑度を強制する場合は、次のように、既存のユーザーのパスワードを期限切れに設定する必要があります。
-
システム内の既存ユーザーを確認します。
kv-> exec "show users" user:id=u1 name=root user:id=u3 name=user1 user:id=u4 name=user2 user:id=u5 name=user3
-
新しいパスワードの複雑度ポリシーを設定します。
kv-> change-policy -params passwordComplexityCheck=true passwordMinLength=9 passwordMinUpper=2 passwordMinLower=2 passwordMinSpecial=2 passwordMinDigit=2
-
最後に、既存ユーザーのパスワードの有効期間を期限切れに変更します。
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を参照してください。