CREATE PROFILE

CREATE PROFILE文では、プロファイルを作成します。プロファイルとは、データベース・リソースに対する制限のセットです。ユーザーにプロファイルを割り当てると、そのユーザーはプロファイルで指定された制限を超えることができなくなります。

必要な権限

ADMIN

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

CREATE PROFILE profile LIMIT password_parameters

password_parameters::=
[FAILED_LOGIN_ATTEMPTS password_parameter_options]
[PASSWORD_LIFE_TIME password_parameter_options]
[PASSWORD_REUSE_TIME password_parameter_options]
[PASSWORD_REUSE_MAX password_parameter_options]
[PASSWORD_LOCK_TIME password_parameter_options]
[PASSWORD_GRACE_TIME password_parameter_options]
[{PASSWORD_COMPLEXITY_CHECKER|PASSWORD_VERIFY_FUNCTION} password_checker_options]

password_parameter_options::=
UNLIMITED|DEFAULT|constant

password_checker_options::=
function|NULL|DEFAULT

function::
TT_VERIFY_FUNCTION|TT_STRONG_VERIFY_FUNCTION|TT_STIG_VERIFY_FUNCTION

パラメータ

パラメータ 説明

profile

プロファイルの名前。

LIMIT password_parameters

LIMIT句では、パスワード・パラメータの制限を設定します。LIMITキーワードは必須です。

パスワード・パラメータは、パスワード・パラメータの名前とパスワード・パラメータの値(または制限)で構成されます。これには、パスワード複雑度チェッカ関数が含まれます。すべてのパラメータ(FAILED_LOGIN_ATTEMPTSPASSWORD_REUSE_MAXを除く)では、時間の長さを設定します。この長さは日数として解釈されます。小数値を使用できます(たとえば、約1時間を意味するために.0833を使用できます)。最小値は1秒です。最大値は106,751,991日です。定数値は日数で表す必要があります。たとえば、5分の値を設定するには、定数値の0.0034722222222222 (5/1440日)を指定します。FAILED_LOGIN_ATTEMPTSPASSWORD_REUSE_MAXには、整数を指定する必要があります。

LIMIT句の後にパスワード・パラメータを指定しないと、そのパスワード・パラメータの制限は、DEFAULTプロファイルで定義した制限に基づくようになります。また、追加のパラメータなしでLIMITキーワードのみを指定すると、プロファイルの制限はDEFAULTプロファイルの制限に基づくようになります。

FAILED_LOGIN_ATTEMPTS

ユーザーのアカウントがロックされるまでの、ユーザーによるデータベースへの接続試行の連続失敗回数を指定します。

PASSWORD_LIFE_TIME

ユーザーが認証に同じパスワードを使用できる日数を指定します。PASSWORD_GRACE_TIMEの値も設定すると、猶予期間内にパスワードが変更されない場合に、パスワードが期限切れになります。このような状況になると、その後のデータベースへの接続は拒否されます。

PASSWORD_REUSE_TIMEおよびPASSWORD_REUSE_MAX

これら2つのパラメータは、同時に使用する必要があります。

  • PASSWORD_REUSE_TIMEでは、ユーザーがパスワードを再利用できるようになるまでの経過日数を指定します。たとえば、30の値を指定した場合、ユーザーは、以前のパスワードを30日後に再利用できるようになります。

  • PASSWORD_REUSE_MAXでは、現行のパスワードが再利用できるようになるまでに必要なパスワードの変更回数を指定します。

これらのパラメータを有効にするには、その両方に値を指定する必要があります。具体的には、次のようになります:

  • 両方のパラメータに値を指定した場合: PASSWORD_REUSE_TIMEに指定した日数の間に、PASSWORD_REUSE_MAXに指定した回数になるまでパスワードを変更していないと、ユーザーはパスワードを再利用できません。たとえば、PASSWORD_REUSE_TIME30の値を指定し、PASSWORD_REUSE_MAX10の値を指定した場合、ユーザーはパスワードを10回変更していれば、30日後にパスワードを再利用できます。

  • どちらかのパラメータに値を指定して、もう一方のパラメータにUNLIMITEDの値を指定すると、ユーザーはパスワードを再利用できなくなります。

  • 両方のパラメータにUNLIMITEDの値を指定すると、TimesTenは両方の値を無視します。つまり、パスワードが再利用できることを意味します。

PASSWORD_LOCK_TIME

指定した回数連続して接続に失敗した後に、ユーザー・アカウントがロックされる日数を指定します。

PASSWORD_GRACE_TIME

猶予期間の開始後の日数を指定します。この間は、TimesTenが警告を示しますが、データベースへの接続は許可されます。猶予期間中にパスワードが変更されないと、そのパスワードは期限切れになります。このパラメータは、PASSWORD_LIFE_TIMEパラメータに関連付けられます。

UNLIMITED

パスワード・パラメータに制限がないことを示します。UNLIMITEDを指定した場合は、パスワード・パラメータに従うことになります。たとえば、FAILED_LOGIN_ATTEMPTS UNLIMITED

DEFAULT

このプロファイルのパスワード・パラメータに対する制限を省略することを示します。このプロファイルが割り当てられているユーザーは、このパスワード・パラメータのDEFAULTプロファイルで定義された制限を受けます。

DEFAULTを指定した場合は、パスワード・パラメータに従うことになります。たとえば、FAILED_LOGIN_ATTEMPTS DEFAULT

constant

UNLIMITEDまたはDEFAULTを指定していない場合のパスワード・パラメータの値を示します。指定した場合は、パスワード・パラメータに従うことになります。たとえば、FAILED_LOGIN_ATTEMPTS 3

{PASSWORD_COMPLEXITY_CHECKER| PASSWORD_VERIFY_FUNCTION} {function|NULL|DEFAULT}

パスワードに対するパスワード検証を実行するかどうかを示します。実行する場合は、検証に使用する関数を指定します。PASSWORD_COMPLEXITY_CHECKERまたはPASSWORD_VERIFY_FUNCTIONのどちらかのパスワード・パラメータを指定できます。これらは同じものです。

functionは、サポートされている3つのパスワード複雑度チェッカ関数のいずれかを示します。TimesTenにパスワード検証を実行するように指示するには、これらの関数のいずれかを指定します。有効な値は次のとおりです:
  • TT_VERIFY_FUNCTION
  • TT_STRONG_VERIFY_FUNCTION
  • TT_STIG_VERIFY_FUNCTION

NULLは、プロファイルに割り当てられたパスワード検証関数が存在しないことを示します。

DEFAULTは、ユーザーがDEFAULTプロファイルで定義された制限を受けることを示します。DEFAULTプロファイルの初期の値はNULLです。

PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータを指定しない場合、その値はDEFAULTプロファイルに定義されている制限にデフォルト設定されます。

説明: PROFILE文

  • CREATE PROFILE文を使用して、パスワード・リソースのプロファイルを作成します。パスワード・パラメータとは、パスワード・リソースに対する制限のセットです。ユーザーにプロファイルを割り当てると、そのユーザーはプロファイルで指定された制限を超えることができなくなります。ユーザーにプロファイルを割り当てていないと、TimesTenによってDEFAULTプロファイルが割り当てられます。パスワード管理とプロファイルの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』「パスワード管理」を参照してください。

  • ユーザーのパスワード・パラメータ制限を指定するには、次の手順を実行します。

    • CREATE PROFILE文を使用して、パスワード・パラメータの制限を定義するプロファイルを作成します。

    • CREATE USER文またはALTER USER文を使用して、ユーザーにプロファイルを割り当てます。

  • 各パスワード・パラメータの制限を定義する、DEFAULTプロファイルがあります。このプロファイルは、これらのパラメータに最初にUNLIMITEDを定義します(パラメータに制限が設定されていないことを示します)。次の例外があります:

    • FAILED_LOGIN_ATTEMPTS: 10に設定されます。

    • PASSWORD_LOCK_TIME: 0.0034722222222222日(5分、5/1440日)に設定されます。

    • PASSWORD_COMPLEXITY_CHECKER: NULLに設定されます。

    これらの制限を変更するには、ALTER PROFILE文を使用して、プロファイル名に"DEFAULT"を指定します。(DEFAULTは二重引用符で囲む必要があります)。詳細は、「ALTER PROFILE」を参照してください。

  • ユーザーにプロファイルが割り当てられていない場合、そのユーザーはDEFAULTプロファイルに定義されている制限を受けます。ユーザーにプロファイルが割り当てられていて、そのプロファイルでパスワード・パラメータの制限が指定されていない場合や、パスワード・パラメータにDEFAULTが指定されている場合、そのユーザーはDEFAULTプロファイルで定義されているパスワード・パラメータの制限を受けます。

  • インスタンス管理者には、システム・プロファイルが割り当てられます。インスタンス管理者のプロファイルは、変更することも削除することもできません。

パスワード複雑度チェッカの検証について

パスワード複雑度チェッカの検証により、ユーザーのパスワードはパスワードを推測しようとする侵入者を十分に阻止できる複雑なものになります。CREATE PROFILE文でパスワード複雑度チェッカ関数を指定し、このプロファイルをユーザーに割り当てると、ユーザーはパスワード複雑度チェッカ関数で定義されている要件を満たすパスワードを作成することが必要になります。そのような要件は、指定した特定のパスワード複雑度チェッカ関数によって異なります。

TimesTenには、パスワードの複雑度を管理するために、TT_VERIFY_FUNCTIONTT_STRONG_VERIFY_FUNCTIONおよびTT_STIG_VERIFY_FUNCTIONのパスワード複雑度チェッカ関数が用意されています。これらの関数は、SYSスキーマに格納されています。

パスワード複雑度チェッカ関数が対象にする文字は、文字、数字、および特殊文字です。
  • 文字:大文字と小文字
  • 数字: 0から9の数字
  • 特殊: 文字でも数字でもない文字。
    `~!@#$%^&*()_-+={}[]\/<>,.?':|(space)

    ノート:

    • 1つ以上の特殊文字を使用する場合は、パスワード全体を二重引用符(")で囲む必要があります。例外は、#@の特殊文字です。(#または@を含むパスワードは、二重引用符で囲む必要がありません)。

    • パスワードには、セミコロン(;)や二重引用符(")を含めることはできません。

    • パスワード全体を二重引用符で囲まないかぎり、パスワードの先頭は文字にする必要があります。

パスワード複雑度チェッカの検証に独自の関数を定義することはできません。CREATE USER文またはALTER USER文でIDENTIFIED BY句を使用すると、パスワードの複雑度がチェックされます。

次に、パスワード複雑度チェッカ関数を示します。

TT_VERIFY_FUNCTION

TT_VERIFY_FUNCTIONは、次のパスワード複雑度チェッカの検証を実行します。
  • パスワードは次のようにします:
    • 8文字以上にする必要があります。
    • これらの8文字のうちに、それぞれ少なくとも1つの文字、1つの数字、1つの特殊文字を含める必要があります。
  • パスワードに使用できないものを次に示します。
    • ユーザー名またはユーザー名を逆にしたもの
    • データベース名
    • OracleまたはTimesTen

    ノート:

    比較では、大文字と小文字が区別されません。

TT_STRONG_VERIFY_FUNCTION

TT_STRONG_VERIFY_FUNCTIONは、次のパスワード複雑度チェッカの検証を実行します。
  • 9文字以上にする必要があります。
  • この9文字のうちに、それぞれ少なくとも2つの大文字、2つの小文字、2つの数字および2つの特殊文字を含める必要があります。

TT_STIG_VERIFY_FUNCTION

TT_STIG_VERIFY_FUNCTIONは、次のパスワード複雑度チェッカの検証を実行します。
  • 15文字以上にする必要があります。
  • この15文字のうちに、それぞれ少なくとも1つの大文字、1つの小文字、1つの数字および1つの特殊文字を含める必要があります。

説明: パスワード複雑度チェッカの検証

  • TT_VERIFY_FUNCTIONTT_STRONG_VERIFY_FUNCTIONおよびTT_STIG_VERIFY_FUNCTIONに対するEXECUTE権限が必要です。TimesTenは、これらの関数に対するEXECUTE権限をPUBLICにデフォルトで付与します。
  • SYSTEMプロファイルとDEFAULTプロファイルには、NULLの値がデフォルトで割り当てられます。NULL値は、これらのプロファイルにパスワード複雑度チェッカ関数が存在しないことを示します。そのため、パスワード複雑度チェッカの検証は実行されません。
  • SYSTEMプロファイルを変更して、パスワード複雑度チェッカ関数を指定することはできません。システム・ユーザーのパスワードは、パスワード複雑度チェッカの検証の対象にはなりません。
  • ALTER PROFILE文を使用すると、パスワード複雑度チェッカ関数を指定するためにDEFAULTプロファイルを変更できます。そうした関数は、PASSWORD_COMPLEXITY_CHECKER (または PASSWORD_VERIFY_FUNCTION)句で指定します。
  • TimesTenのTT_VERIFY_FUNCTION関数、TT_STRONG_VERIFY_FUNCTION関数およびTT_STIG_VERIFY_FUNCTION関数は、Oracle DatabaseのORA12C_VERIFY_FUNCTION関数、ORA12C_STRONG_VERIFY_FUNCTION関数およびORA12C_STIG_VERIFY_FUNCTION関数と同等のものです。
  • ttMigrateユーティリティを使用して以前のメジャー・リリース(18.1リリースなど)にダウングレードすると、データベース内の各プロファイルのPASSWORD_COMPLEXITY_CHECKERの値はNULLに設定されます。

パスワード複雑度チェッカ関数の制限

パスワード複雑度チェッカ関数の制限は、次のとおりです。
  • パスワード複雑度チェッカ関数には、SYSスキーマを指定できません。次に例を示します:
    Command> CREATE PROFILE my_profile LIMIT 
               PASSWORD_COMPLEXITY_CHECKER SYS.TT_VERIFY_FUNCTION;
    15187: Cannot specify schema name for password complexity checker function
    The command failed.
    
  • 独自のパスワード複雑度チェッカ関数を定義することはできません。TT_VERIFY_FUNCTIONTT_STRONG_VERIFY_FUNCTIONまたはTT_STIG_VERIFY_FUNCTIONのパスワード複雑度チェッカ関数のみを使用してください。
  • パスワード複雑度チェッカの検証は、新しく作成したパスワードにのみ実行されます。この新しいパスワードは、CREATE USER文またはALTER USER文のIDENTIFIED BY句を使用して指定します。TimesTenは、古いパスワードと新しいパスワードの違いを確認しません。
  • パスワードの指定時に、マルチバイト文字はサポートされません。TimesTenは、マルチバイト文字が含まれるパスワードを検証しません。

PASSWORD_COMPLEXITY_CHECKERに対するTT_VERIFY_FUNCTIONの指定

この例では、最初にプロファイルを作成して、TT_VERIFY_FUNCTION関数を指定します。その後で、dba_profilesシステム・ビューを問い合せて、このプロファイルにTT_VERIFY_FUNCTIONが割り当てられていることを確認します。このプロファイルが割り当てられたユーザーは、この関数のパスワード検証要件を満たすパスワードを指定する必要があります。

Command> CREATE PROFILE myprofile_pw1 LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_VERIFY_FUNCTION;

Profile created.

Command> SELECT * FROM dba_profiles WHERE profile = 'MYPROFILE_PW1';
< MYPROFILE_PW1, FAILED_LOGIN_ATTEMPTS, PASSWORD, DEFAULT >
< MYPROFILE_PW1, PASSWORD_LIFE_TIME, PASSWORD, DEFAULT >
< MYPROFILE_PW1, PASSWORD_REUSE_TIME, PASSWORD, DEFAULT >
< MYPROFILE_PW1, PASSWORD_REUSE_MAX, PASSWORD, DEFAULT >
< MYPROFILE_PW1, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, TT_VERIFY_FUNCTION >
< MYPROFILE_PW1, PASSWORD_LOCK_TIME, PASSWORD, DEFAULT >
< MYPROFILE_PW1, PASSWORD_GRACE_TIME, PASSWORD, DEFAULT >
< MYPROFILE_PW1, TEMP_SPACE_PER_SESSION_MAX, MEMORY, DEFAULT >
8 rows found.

sampleuser_pw1ユーザーを作成して、このユーザーにmyprofile_pw1プロファイルを割り当てます。TT_VERIFY_FUNCTIONの要件を満たしているパスワードを指定します。TT_VERIFY_FUNCTION関数の詳細は、「TT_VERIFY_FUNCTION」を参照してください。

Command> CREATE USER sampleuser_pw1 
           IDENTIFIED BY "A1!XXcg3" PROFILE myprofile_pw1;

User created.

sampleuser_pw2を作成してみます。ユーザーにmyprofile_pw1プロファイルを割り当てます。ユーザー名を逆にしたパスワードを大文字で指定します。CREATE USER文は失敗します。パスワードには、逆にしたユーザー名を含めることはできません。比較では、大文字と小文字が区別されない点に注意してください。

Command> CREATE USER sampleuser_pw2 
           IDENTIFIED BY "2WP_RESUELPMAS" PROFILE myprofile_pw1;
15186: Password complexity check for the specified password failed
15188: TT-20002: Password contains the username reversed
The command failed.

PASSWORD_COMPLEXITY_CHECKERに対するTT_STRONG_VERIFY_FUNCTIONの指定

この例では、myprofile_pw2プロファイルを作成して、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータにTT_STRONG_VERIFY_FUNCTIONを指定します。その後で、sampleuser_pw2ユーザーを作成し、このユーザーにmyprofile_pw2プロファイルを割り当てます。パスワードはTT_STRONG_VERIFY_FUNCTION関数の要件を満たします。TT_STRONG_VERIFY_FUNCTION関数の詳細は、「TT_STRONG_VERIFY_FUNCTION」を参照してください。

Command> CREATE PROFILE myprofile_pw2 LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_STRONG_VERIFY_FUNCTION;

Profile created.

sampleuser_pw2ユーザーを作成して、このユーザーにmyprofile_pw2プロファイルを割り当てます。パスワードはTT_STRONG_VERIFY_FUNCTION関数の要件を満たしています。ユーザーが正常に作成されます。

Command> CREATE USER sampleuser_pw2 
           IDENTIFIED BY "!ddFF6C2?" PROFILE myprofile_pw2;

User created.

PASSWORD_COMPLEXITY_CHECKERに対するTT_STIG_VERIFY_FUNCTIONの指定

この例では、myprofile_pw3プロファイルを作成して、PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータにTT_STIG_VERIFY_FUNCTIONを指定します。その後で、sampleuser_pw3ユーザーを作成し、このユーザーにmyprofile_pw3プロファイルを割り当てます。パスワードはTT_STIG_VERIFY_FUNCTION関数の要件を満たします。TT_STIG_VERIFY_FUNCTION関数の詳細は、「TT_STIG_VERIFY_FUNCTION」を参照してください。

Command> CREATE PROFILE myprofile_pw3 LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_STIG_VERIFY_FUNCTION;

Profile created.

sampleuser_pw3ユーザーを作成して、このユーザーにmyprofile_pw3プロファイルを割り当てます。パスワードはTT_STIG_VERIFY_FUNCTION関数の要件を満たします。ユーザーが正常に作成されます。

Command> CREATE USER sampleuser_pw3 
           IDENTIFIED BY "!ddBBKKUYT165>m" PROFILE myprofile_pw3;

User created.

SYSTEMとDEFAULTのPASSWORD_COMPLEXITY_CHECKER値の変更

この例では、dba_profilesシステム・ビューを問い合せて、SYSTEMプロファイルとDEFAULTプロファイルのPASSWORD_COMPLEXITY_CHECKERパスワード・パラメータの値を確認します。デフォルトでは、この値はNULLです。

Command> SELECT * FROM dba_profiles WHERE 
           resource_name='PASSWORD_COMPLEXITY_CHECKER' AND 
           profile IN ('DEFAULT','SYSTEM');
< DEFAULT, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, NULL >
< SYSTEM, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, NULL >
2 rows found.

SYSTEMプロファイルのPASSWORD_COMPLEXITY_CHECKERパスワード・パラメータを変更してみます。このパスワード・パラメータは変更できないため、エラーが発生します。

Command> ALTER PROFILE SYSTEM LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_STRONG_VERIFY_FUNCTION;
15176: Profile SYSTEM cannot be altered
The command failed.

DEFAULTプロファイルのPASSWORD_COMPLEXITY_CHECKERパスワード・パラメータを変更してみます。この変更は成功します。DEFAULTプロファイルが割り当てられているユーザー(特定のプロファイルが割り当てられていないユーザー)には、TT_STRONG_VERIFY_FUNCTION関数のパスワード検証要件を満たしているパスワードの指定が必要です。

Command> ALTER PROFILE "DEFAULT" LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_STRONG_VERIFY_FUNCTION;

Profile altered

dba_profilesビューを問い合せて、DEFAULTプロファイルにTT_STRONG_VERIFY_FUNCTIONが割り当てられていることを確認します。

Command> SELECT * FROM dba_profiles WHERE 
           resource_name='PASSWORD_COMPLEXITY_CHECKER' AND 
           profile = 'DEFAULT';
< DEFAULT, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, TT_STRONG_VERIFY_FUNCTION >
1 row found.

プロファイルの作成と無効なパスワード複雑度チェッカ関数の指定の試行

この例では、PASSWORD_COMPLEXITY_CHECKER句に対して無効なパスワード複雑度チェッカ関数を指定しています。この関数がSYSスキーマに存在していても、指定可能なパスワード複雑度チェッカ関数はサポートされている3つのいずれかのみであるため、エラーが発生します。

Command> CREATE PROFILE myprofile1 LIMIT 
           PASSWORD_COMPLEXITY_CHECKER TT_COMPLEXITY_CHECK;
 8529: Invalid password complexity checker function TT_COMPLEXITY_CHECK
The command failed.

プロファイルの作成とパスワード・パラメータの制限の設定

この例では、profile1プロファイルを作成して、パスワード・パラメータに様々な制限を設定します。その次に、dba_profilesシステム・ビューを問い合せて制限を確認します。

Command> CREATE PROFILE profile1 LIMIT 
           FAILED_LOGIN_ATTEMPTS 5 
           PASSWORD_LIFE_TIME 60 
           PASSWORD_REUSE_TIME 60 
           PASSWORD_REUSE_MAX 5 
           PASSWORD_LOCK_TIME 1 
           PASSWORD_GRACE_TIME 10;
 
Profile created.

dba_profilesシステム・ビューを問い合せて制限を確認します。PASSWORD_COMPLEXITY_CHECKERパスワード・パラメータがCREATE PROFILE文で指定されていないため、PASSWORD_COMPLEXITY_CHECKERの値がDEFAULTになっている点に注目してください(この値は、DEFAULTプロファイルから得られた値です)。

Command> SELECT * FROM dba_profiles WHERE profile = 'PROFILE1' AND 
           resource_type='PASSWORD';
< PROFILE1, FAILED_LOGIN_ATTEMPTS, PASSWORD, 5 >
< PROFILE1, PASSWORD_LIFE_TIME, PASSWORD, 60 >
< PROFILE1, PASSWORD_REUSE_TIME, PASSWORD, 60 >
< PROFILE1, PASSWORD_REUSE_MAX, PASSWORD, 5 >
< PROFILE1, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, DEFAULT >
< PROFILE1, PASSWORD_LOCK_TIME, PASSWORD, 1 >
< PROFILE1, PASSWORD_GRACE_TIME, PASSWORD, 10 >
7 rows found.

プロファイルの作成とFAILED_LOGIN_ATTEMPTSの指定

この例では、profile2プロファイルを作成して、FAILED_LOGIN_ATTEMPTS1の値を指定します。その次に、user2ユーザーを作成して、user2profile2プロファイルを割り当てます。user2ユーザーはデータベースに接続しようとしますが、無効なパスワードを指定します。接続に失敗します。その5分後に、user2ユーザーはデータベースに再度接続しようとします。PASSWORD_LOCK_TIMEの値が0.0034722222222222 (5分)のため、接続に成功します(この値は、DEFAULTプロファイルで指定されています)。

Command> CREATE PROFILE profile2 LIMIT FAILED_LOGIN_ATTEMPTS 1;
 
Profile created.
 
Command> CREATE USER user2 IDENTIFIED BY user2 PROFILE profile2;
 
User created.

user2admin権限を付与します。

Command> GRANT ADMIN TO user2;

データベースに接続してみます。接続文字列で無効なパスワードを指定したため、接続に失敗します。

Command> connect adding "UID=user2;PWD=user3" as user2;
 7001: User authentication failed
The command failed.

接続文字列で正しいパスワードを指定して、再度接続してみます。次の理由で接続に失敗します。

  • 前に接続しようとして1回失敗していること

  • 5分間のパスワード・ロック時間が経過する前に、データベースに接続しようとしたこと

none: Command> use database1
database1: Command> connect adding "UID=user2;PWD=user2" as user2;
15179: the account is locked
The command failed.

5分後に、データベースに再度接続してみます。接続が成功します。

none: Command> use database1
database1: Command> connect adding "UID=user2;PWD=user2" as user2;
Connection successful: DSN=database1;UID=user2;DataStore=/scratch/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)

DEFAULTプロファイルのパスワード・パラメータ値の調査

この例では、dba_profilesシステム・ビューを問い合せて、DEFAULTプロファイルのパスワード・パラメータ値を確認します。

Command> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND 
           resource_type='PASSWORD';
< DEFAULT, FAILED_LOGIN_ATTEMPTS, PASSWORD, 10 >
< DEFAULT, PASSWORD_LIFE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_MAX, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, NULL >
< DEFAULT, PASSWORD_LOCK_TIME, PASSWORD, .0034 >
< DEFAULT, PASSWORD_GRACE_TIME, PASSWORD, UNLIMITED >
7 rows found.

PASSWORD_LIFE_TIMEとPASSWORD_GRACE_TIMEの指定

この例では、profile4プロファイルを作成して、PASSWORD_LIFE_TIMEパスワード・パラメータに0.0034722222222222 (5分)の値を指定し、PASSWORD_GRACE_TIMEパスワード・パラメータに0.01041667 (15分)の値を指定します。その次に、user4ユーザーを作成して、user4profile4プロファイルを割り当てます。この例では、user4として継続してデータベースへの接続を試行します。

Command> CREATE PROFILE profile4 LIMIT 
           PASSWORD_LIFE_TIME 0.0034722222222222 
           PASSWORD_GRACE_TIME 0.01041667;
 
Profile created.

dba_profilesシステム・ビューを問い合せて、パスワード・パラメータの値を確認します。

Command> SELECT * FROM dba_profiles WHERE profile = 'PROFILE4' AND 
           resource_type='PASSWORD';
< PROFILE2, FAILED_LOGIN_ATTEMPTS, PASSWORD, DEFAULT >
< PROFILE2, PASSWORD_LIFE_TIME, PASSWORD, .0034 >
< PROFILE2, PASSWORD_REUSE_TIME, PASSWORD, DEFAULT >
< PROFILE2, PASSWORD_REUSE_MAX, PASSWORD, DEFAULT >
< PROFILE2, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, DEFAULT >
< PROFILE2, PASSWORD_LOCK_TIME, PASSWORD, DEFAULT >
< PROFILE2, PASSWORD_GRACE_TIME, PASSWORD, .0104 >
7 rows found.

user4ユーザーを作成して、user4profile4プロファイルを割り当てます。user4CONNECT権限を付与します。

Command> CREATE USER user4 IDENTIFIED BY user4 PROFILE profile4;
 
User created.
 
Command> GRANT CONNECT TO user4;

user4としてデータベースに接続します。接続が成功します。

Command> connect adding "UID=user4;PWD=user4" as user4;
Connection successful: DSN=access1;UID=user4;DataStore=/scratch/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)

データベースからの切断5分後に、user4としてデータベースに再接続します。接続は成功しますが、警告が発行されます。パスワードの有効期間は5分で、パスワードの猶予期間は15分です。

user4: Command> disconnect user4;
Disconnecting from user4...
none: Command> use database1
database1: Command> connect adding "UID=user4;PWD=user4" as user4;
 
Warning 15182: Password will expire within 0.010417 days
 
Connection successful: DSN=access1;UID=user4;DataStore=/scratch/database1;
DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=128;
(Default setting AutoCommit=1)

データベースからの切断15分後に、user4としてデータベースに再接続します。15分間のパスワード猶予期間が終了しているため、接続に失敗します。

user4: Command> disconnect user4;
Disconnecting from user4...
none: Command> use database1
database1: Command> connect adding "UID=user4;PWD=user4" as user4;
15180: the password has expired
The command failed.

LIMITキーワードのみを指定したプロファイルの作成

この例では、profile5プロファイルを作成して、LIMITキーワードのみを指定します。その次に、dba_profilesシステム・ビューを問い合せて、profile5プロファイルのパスワード・パラメータ制限がすべてDEFAULTの値に設定されていることを確認します。

Command> CREATE PROFILE profile5 LIMIT;
 
Profile created.
Command> SELECT * FROM dba_profiles WHERE profile = 'PROFILE5' AND 
           resource_type='PASSWORD
< PROFILE5, FAILED_LOGIN_ATTEMPTS, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_LIFE_TIME, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_REUSE_TIME, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_REUSE_MAX, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_LOCK_TIME, PASSWORD, DEFAULT >
< PROFILE5, PASSWORD_GRACE_TIME, PASSWORD, DEFAULT >
7 rows found.

PASSWORD_REUSE_TIMEに対するUNLIMITEDの指定

この例では、profile6プロファイルを作成して、UNLIMITEDPASSWORD_REUSE_TIMEを指定します。パスワードは再利用できません。

Command> CREATE PROFILE profile6 LIMIT 
           PASSWORD_REUSE_MAX 2 
           PASSWORD_REUSE_TIME UNLIMITED;
 
Profile created.

user6ユーザーを作成して、user6profile6プロファイルを割り当てます。user6のパスワードを2回変更します。user6のパスワードを再利用してみます。これは、PASSWORD_REUSE_TIME値がUNLIMITEDのために失敗します。

Command> CREATE USER user6 IDENTIFIED BY user6 PROFILE profile6;
 
User created.
 
Command> ALTER USER user6 IDENTIFIED BY user6_test1;
 
User altered.
 
Command> ALTER USER user6 IDENTIFIED BY user6_test2;
 
User altered.
 
Command> ALTER USER user6 IDENTIFIED BY user6;
15183: Password cannot be reused
The command failed.

PASSWORD_REUSE_TIMEに対するDEFAULTの指定

この例では、PASSWORD_REUSE_TIMEパスワード・パラメータにDEFAULTPASSWORD_REUSE_MAXパスワード・パラメータに3の値を指定して、profile7プロファイルを作成します。TimesTenにより、PASSWORD_REUSE_TIMEパスワード・パラメータに、DEFAULTプロファイルの値が使用されます。

Command> CREATE PROFILE profile7 LIMIT 
           PASSWORD_REUSE_TIME DEFAULT 
           PASSWORD_REUSE_MAX 3;
 
Profile created.

dba_profilesシステム・ビューを問い合せて、profile7プロファイルのパスワード・パラメータの値を確認します。PASSWORD_REUSE_TIMEに対するDEFAULTの値と、PASSWORD_REUSE_MAXに対する3の値に注目してください(boldで表示)。

Command> SELECT * FROM dba_profiles WHERE profile = 'PROFILE7' AND
           resource_type = 'PASSWORD';
< PROFILE7, FAILED_LOGIN_ATTEMPTS, PASSWORD, DEFAULT >
< PROFILE7, PASSWORD_LIFE_TIME, PASSWORD, DEFAULT >
< PROFILE7, PASSWORD_REUSE_TIME, PASSWORD, DEFAULT >
< PROFILE7, PASSWORD_REUSE_MAX, PASSWORD, 3 >
< PROFILE7, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, DEFAULT >
< PROFILE7, PASSWORD_LOCK_TIME, PASSWORD, DEFAULT >
< PROFILE7, PASSWORD_GRACE_TIME, PASSWORD, DEFAULT >
7 rows found.

dba_profilesシステム・ビューを問い合せて、DEFAULTプロファイルのパスワード・パラメータの値を確認します。PASSWORD_REUSE_TIMEに対するUNLIMITEDの値に注目してください(boldで表示)。

Command> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND
           resource_type = 'PASSWORD';
< DEFAULT, FAILED_LOGIN_ATTEMPTS, PASSWORD, 10 >
< DEFAULT, PASSWORD_LIFE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_TIME, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_REUSE_MAX, PASSWORD, UNLIMITED >
< DEFAULT, PASSWORD_COMPLEXITY_CHECKER, PASSWORD, NULL >
< DEFAULT, PASSWORD_LOCK_TIME, PASSWORD, .0034 >
< DEFAULT, PASSWORD_GRACE_TIME, PASSWORD, UNLIMITED >
7 rows found.

user7ユーザーを作成して、user7profile7プロファイルを割り当てます。user7のパスワードを3回変更します。PASSWORD_REUSE_TIMEパラメータのUNLIMITEDの値が原因で、user7のパスワードは再利用できません。

Command> CREATE USER user7 IDENTIFIED BY user7 PROFILE profile7;
 
User created.
 
Command> ALTER USER user7 IDENTIFIED BY user7_test1;
 
User altered.
 
Command> ALTER USER user7 IDENTIFIED BY user7_test2;
 
User altered.
 
Command> ALTER USER user7 IDENTIFIED BY user_test3;
 
User altered.
 
Command> ALTER USER user7 IDENTIFIED BY user7;
15183: Password cannot be reused
The command failed.

PASSWORD_REUSE_TIMEとPASSWORD_REUSE_MAXの指定

この例では、PASSWORD_REUSE_TIMEパスワード・パラメータに0.0020833 (約2分)の値を指定し、PASSWORD_REUSE_MAXパスワード・パラメータに2の値を指定して、profile8プロファイルを作成します。その次に、user8ユーザーを作成して、user8profile8プロファイルを割り当てます。user8パスワードを2分以内に2回変更します。その後、2分以内に、user8の元のパスワード(user8_pwd)を再利用します。ALTER USER操作が失敗します。パスワードを2回変更しても、元のパスワードは0.00208333日(約2分)後にのみ再利用できるようになります。2分後に、user8の元のパスワード(user8_pwd)を再利用します。ALTER USER操作が成功します。ユーザーのパスワードが2回変更されていて、2分以上経過しています。

Command> CREATE PROFILE profile8 LIMIT 
           PASSWORD_REUSE_TIME 0.00208333 
           PASSWORD_REUSE_MAX 2;
 
Profile created.

user8ユーザーを作成して、user8profile8プロファイルを割り当てます。

Command> CREATE USER user8 IDENTIFIED BY user8_pwd PROFILE profile8;
 
User created.
 

すぐにユーザーを変更して、パスワードを2回変更します。

Command> ALTER USER user8 IDENTIFIED BY user8_test1;
 
User altered.
 
Command> ALTER USER user8 IDENTIFIED BY user8_test2;
 
User altered.

2分以内に、user8_pwdの元のパスワード(boldで表示)を再利用してみます。元のパスワードは2分後にのみ再利用できるため、ALTER USER操作は失敗します。

Command> ALTER USER user8 IDENTIFIED BY user8_pwd;
15183: Password cannot be reused
The command failed.

2分後に、user8_pwdの元のパスワード(boldで表示)を再利用してみます。ALTER USER操作が成功します。パスワードが2回変更されていて、2分経過しているため、元のパスワードが再利用できるようになります。

Command> ALTER USER user8 IDENTIFIED BY user8_pwd;
 
User altered.