はじめに
VerticaのDBユーザーには、パスワードに使用できる文字数や文字種の組合せなど、様々なパスワードポリシーが設定できます。パスワードポリシーを設定することで、推測されやすいパスワードの設定を防ぎ、第三者から不正にDBアクセスされるリスクを軽減できます。
パスワードポリシーの説明と設定例
Verticaで設定可能なパスワードポリシーについて、ご紹介します。下記パラメータのデフォルトは全て「Unlimited」であり、制限なしを意味しています。
PASSWORD_LIFE_TIME
現在のパスワードが有効な期間(日数)。期間経過後、DBユーザーはパスワードを変更する必要があります。「PASSWORD_GRACE_TIME」がゼロまたは「unlimited」以外に設定されている場合、パスワードの有効期限切れの警告が表示されます。
■パスワードの有効期間を超過した後にログインを試み、パスワード変更を強制されている例 (設定値=1 の場合)
$ vsql -U test
Password:
The password has expired.
Changing password for test
New password:
Retype new password:
Password changed.
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
test=>PASSWORD_MIN_LIFE_TIME
パスワードを変更できるまでの最低期間(日数)。この期間を経過するまで、DBユーザーはパスワードの変更ができません。
■パスワードの変更時、最低期間を超過していない場合の例 (設定値=365 の場合)
$ vsql
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
dbadmin=> CREATE PROFILE p_test limit PASSWORD_MIN_LIFE_TIME 365;
CREATE PROFILE
dbadmin=> CREATE USER test PROFILE p_test IDENTIFIED BY 'passw0rd00';
CREATE USER
dbadmin=> \q
$ vsql -U test
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
test=> ALTER USER test IDENTIFIED BY 'passw0rd01' REPLACE 'passw0rd00';
ROLLBACK 9721: Password cannot be changed until password minimum lifetime has passedPASSWORD_GRACE_TIME
「PASSWORD_LIFE_TIME」を過ぎた後も、警告メッセージを表示させて、ログインを許可する期間(日数)。この期間経過後、DBユーザーはログイン時にパスワードの変更を強制されます。
■パスワード変更猶予期間の警告メッセージ例 (設定値=7 の場合)
--パスワード期限が近いことを警告
[dbadmin@motosrv1 test]$ vsql -U test
Password:
The password will expire soon. Please change password with "\password".
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
test=>FAILED_LOGIN_ATTEMPTS
ログインに連続失敗した場合、アカウントロックされるまでの試行回数。
■ログインに連続して失敗し、アカウントがロックされた場合の例 (設定値=2 の場合)
--パスワードの入力ミス
$ vsql -U test
Password:
vsql: FATAL 3781: Invalid username or password
--アカウントがロックされる
$ vsql -U test
Password:
vsql: FATAL 4975: The user account "test" is locked due to too many invalid logins
HINT: Please contact the database administratorPASSWORD_LOCK_TIME
「FAILED_LOGIN_ATTEMPTS」でアカウントロック後、解除されるまでの期間(日数)。期間経過後、自動的にアカウントロックは解除されます。
■アカウントがロックされた後、PASSWORD_LOCK_TIMEを超過してアカウントロックが解除された例 (設定値=7 の場合)
--アカウントロックされている状態
$ date
2019年 3月 27日 水曜日 13:00:25 JST
$ vsql -U test
Password:
vsql: FATAL 4975: The user account "test" is locked due to too many invalid logins
HINT: Please contact the database administrator
--設定値以上の日数経過後、ログインに成功
$ date
2019年 4月 27日 土曜日 13:00:03 JST
$ vsql -U test
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
test=>PASSWORD_REUSE_MAX
現在のパスワードの変更後、同一パスワードが再利用可能になるまでに必要なパスワードの変更回数。
■パスワードの変更時、同一パスワードを指定したために再利用不可のエラーが発生した例 (設定値=2 の場合)
$ vsql -U test
Password:
The password has expired.
Changing password for test
New password:
Retype new password:
vsql: ERROR 2302: Can not reuse the previous 2 passwords
HINT: Please check PASSWORD_REUSE_MAX in user's profilePASSWORD_REUSE_TIME
現在のパスワード変更後、再利用可能になるまでの日数。
■パスワードの変更時、同一パスワードを指定したために再利用不可のエラーが発生した例 (設定値=90 の場合)
$ vsql -U test
Password:
The password has expired.
Changing password for test
New password:
Retype new password:
vsql: ERROR 2300: Can not reuse any recent passwords
HINT: Please check PASSWORD_REUSE_TIME in user's profilePASSWORD_MAX_LENGTH
設定可能なパスワードの最大文字数。「8」から「512」の範囲で設定可能です。
■DBユーザーの作成時、パスワードの最大長を超過した場合の例 (設定値=8 の場合)
dbadmin=> create user test identified by 'aaaaaaaaa' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password is too long
HINT: Maximum password length is 8 charactersPASSWORD_MIN_LENGTH
設定可能なパスワードの最小文字数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードの最小長を下回った場合の例 (設定値=2 の場合)
dbadmin=> CREATE USER test IDENTIFIED BY 'a' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password is too short
HINT: Minimum password length is 2 charactersPASSWORD_MIN_LETTERS
パスワード設定時に含める必要があるアルファベット大文字または、小文字(A-Z または a-z)の数。アルファベット大文字または、小文字のいずれかを設定値分含める必要があります。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードにアルファベット文字の数が不足している例 (設定値=2 の場合)
dbadmin=> CREATE USER test IDENTIFIED BY 'a' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password must have at least 2 alphabetic charactersPASSWORD_MIN_UPPERCASE_LETTERS
パスワード設定時に含める必要があるアルファベット大文字(A-Z)の数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードにアルファベット大文字の数が不足している例 (設定値=1 の場合)
dbadmin=> create user test identified by 'a' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password must have at least 2 uppercase lettersPASSWORD_MIN_LOWERCASE_LETTERS
パスワード設定時に含める必要があるアルファベット小文字(a-z)の数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードにアルファベット小文字の数が不足している例 (設定値=1 の場合)
dbadmin=> create user test identified by 'A' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password must have at least 2 lowercase lettersPASSWORD_MIN_DIGITS
パスワード設定時に含める必要がある数字(0-9)の数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードに数字の数が不足している例 (設定値=1 の場合)
dbadmin=> create user test identified by 'a' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password must have at least 2 numeric characters (0-9)PASSWORD_MIN_SYMBOLS
パスワード設定時に含める必要がある記号($、#、@など)の数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■DBユーザーの作成時、パスワードに記号の数が不足している例 (設定値=1 の場合)
dbadmin=> create user test identified by 'a' profile test_profile;
ROLLBACK 4923: That password is not acceptable
DETAIL: The password must have at least 2 non-alphanumeric charactersPASSWORD_MIN_CHAR_CHANGE
新しいパスワードが古いパスワードと最低限違わなければならない文字数。「0」からPASSWORD_MAX_LENGTHの範囲で設定可能です。
■パスワードの変更時、最低限違わなければならない文字数を満たしていない場合の例 (設定値=2 の場合)
$ vsql
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
dbadmin=> CREATE PROFILE p_test limit PASSWORD_MIN_CHAR_CHANGE 2;
CREATE PROFILE
dbadmin=> CREATE USER test PROFILE p_test IDENTIFIED BY 'passw0rd00';
CREATE USER
dbadmin=> \q
$ vsql -U test
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
test=> ALTER USER test IDENTIFIED BY 'passw0rd01' REPLACE 'passw0rd00';
ROLLBACK 9727: Password is not significantly different than previous password
test=> ALTER USER test IDENTIFIED BY 'passw0rd11' REPLACE 'passw0rd00';
ALTER USER参考情報
・Profiles
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/Security/ClientAuth/Profiles.htm
・特定のIPアドレスからのみ接続可能なユーザーを作成する
https://www.ashisuto.co.jp/cm/analytics-database/authentication_hash.html
検証バージョンについて
この記事の内容はVertica 10.1で確認しています。
更新履歴
2021/03/31 Vertica 10.1の情報を反映
・PASSWORD_MIN_LIFE_TIME、PASSWORD_MIN_CHAR_CHANGEの追加
プロファイルの説明を修正
・PASSWORD_MAX_LENGTH、PASSWORD_MIN_DIGITSの指定範囲
2019/03/27 Vertica 9.2の情報を反映
2016/03/16 本記事を公開