10Gパスワード・バージョンを使用するユーザーのパスワードの確認と再設定

セキュリティを向上するため、10Gバージョンのパスワードを使用しているユーザー・アカウントを確認しパスワードをリセットして、より安全なバージョンのパスワードが今後使用されるようにします。

現行ユーザーのすべてのパスワード・バージョンの確認

DBA_USERSデータ・ディクショナリ・ビューを問い合せて、ユーザー・アカウントに構成されているすべてのパスワード・バージョンのリストを確認できます。

次に例を示します。

SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

USERNAME                       PASSWORD_VERSIONS
------------------------------ -----------------
JONES                          10G 11G 12C 
ADAMS                          10G 11G
CLARK                          10G 11G
PRESTON                        11G
BLAKE                          10G

PASSWORD_VERSIONS列は、アカウントに存在するパスワード・バージョンのリストを示しています。10Gは以前の大/小文字を区別しないOracleパスワード・バージョン、11GはSHA-1ベースのパスワード・バージョン、12CはSHA-2ベースのSHA-512パスワード・バージョンを表します。

  • ユーザーjones: このユーザーのパスワードは、SQLNET.ALLOWED_LOGON_VERSION_SERVERパラメータ設定が8のときに、Oracle Database 12cリリース12.1で再設定されました。これにより、3つのすべてのパスワード・バージョンを作成できます。

  • ユーザーadamsおよびclark: これらのアカウントのパスワードは最初にOracle Database 10gで作成され、Oracle Database 11gで再設定されました。Oracle Database 11gソフトウェアは、その時点でSQLNET.ALLOWED_LOGON_VERSIONのデフォルト設定8を使用していました。大/小文字の区別がデフォルトで有効になっているため、これらのパスワードは、prestonのパスワードと同様に大/小文字が区別されます。

  • ユーザーpreston: このアカウントは、排他モード(SQLNET.ALLOWED_LOGON_VERSION = 12)で実行されていたOracle Database 11gデータベースからインポートされました。

  • ユーザーblake: このアカウントは、Oracle Database 10gパスワード・バージョンをまだ使用しています。この段階では、ユーザーblakeはログインできません。

10Gパスワード・バージョンを使用するユーザーのパスワードの再設定

セキュリティを強化するには、すべてのユーザーのアカウントから10Gパスワード・バージョンを削除します。次の手順では、10Gパスワード・バージョンを使用しているユーザーのパスワードを再設定するために、クライアントのログインの許可に必要な機能レベルを制御するSQLNET.ALLOWED_LOGON_VERSION_SERVER設定を一時的に緩和する必要があります。設定を緩和することで、それらのユーザーがログインしてパスワードを変更し、10Gパスワード・バージョンに加えてより新しいパスワード・バージョンを生成できるようになります。その後にデータベースが排他モードを使用するように設定して、クライアントがO5L_NP機能を使用できるようにします。その後、ユーザーはパスワードを再設定して、パスワード・バージョンに10G,を含めずに、より安全な11G12Cのパスワード・バージョンのみを含めるようにすることができます。

  1. DBA_USERSビューを問い合せて、10Gパスワード・バージョンのみを使用しているユーザーを特定します。
    SELECT USERNAME FROM DBA_USERS 
    WHERE ( PASSWORD_VERSIONS = '10G '
    OR PASSWORD_VERSIONS = '10G HTTP ')
    AND USERNAME <> 'ANONYMOUS';
    
  2. データベースを排他モードで実行しないように、次のように構成します。
    1. sqlnet.oraファイルのSQLNET.ALLOWED_LOGON_VERSION_SERVER設定を編集して、デフォルトより緩やかな設定にします。次に例を示します。
      SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
    2. データベースを再起動します。
  3. DBA_USERSビューに問い合せて、10Gパスワード・バージョンのみを使用するユーザーを期限切れにします。

    10Gパスワード・バージョンのみを使用し、11Gまたは12Cパスワード・バージョンのいずれかまたは両方を使用していないユーザーを期限切れにする必要があります。

    次に例を示します。

    ALTER USER username PASSWORD EXPIRE;
    
  4. パスワードを期限切れにしたユーザーにログインするよう依頼します。

    ユーザーがログインすると、パスワードを変更するよう求められます。データベースは、10Gパスワード・バージョンに加えて、アカウントで欠けている11Gおよび12Cパスワード・バージョンを生成します。データベースは許可モードで実行されているため、10Gパスワード・バージョンはそのまま存在します。

  5. ユーザーが接続しているクライアント・ソフトウェアにO5L_NP機能があることを確認します。

    Oracle Databaseリリース11.2.0.3以上のすべてのクライアントにO5L_NP機能があります。以前のOracle Databaseクライアントがある場合は、CPUOct2012パッチをインストールする必要があります。

  6. すべてのクライアントにO5L_NP機能があれば、次のようにサーバーのセキュリティを排他モードに設定しなおします。
    1. インスタンス初期化ファイルからSEC_CASE_SENSITIVE_LOGONパラメータ設定を削除するか、SEC_CASE_SENSITIVE_LOGONTRUEに設定します。
      SEC_CASE_SENSITIVE_LOGON = TRUE
    2. サーバーsqlnet.oraファイルからSQLNET.ALLOWED_LOGON_VERSION_SERVERパラメータを削除するか、または、サーバーsqlnet.oraファイルのSQLNET.ALLOWED_LOGON_VERSION_SERVERの値を元の12に設定して、排他モードに設定します。
      SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12
    3. データベースを再起動します。
  7. まだ10Gパスワード・バージョンを使用しているアカウントを特定します。
    SELECT USERNAME FROM DBA_USERS
    WHERE PASSWORD_VERSIONS LIKE '%10G%' 
    AND USERNAME <> 'ANONYMOUS';
  8. まだ10Gパスワード・バージョンを使用しているアカウントを期限切れにします。
    ALTER USER username PASSWORD EXPIRE;
  9. これらのユーザーに自分のアカウントにログインするよう依頼します。

    ユーザーがログインすると、パスワードを再設定するよう求められます。次に、データベースは、アカウントに対して11Gおよび12Cパスワード・バージョンのみを生成します。データベースは排他モードで実行されているため、10Gパスワード・バージョンは生成されません。

  10. 次の問合せを再実行します。
    SELECT USERNAME FROM DBA_USERS
    WHERE PASSWORD_VERSIONS LIKE '%10G%' 
    AND USERNAME <> 'ANONYMOUS';

    この問合せに何も応答がなければ、10Gパスワード・バージョンを使用しているアカウントはありません。これで、データベースは以前のバージョンよりも安全なモードで稼働しています。