ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!
前回「PL/SQLを使いこなしてデータベース管理」で、PL/SQLを学びました。今回から2回にわたって、Oracleデータベースのセキュリティについて紹介します。
プロファイルを使用したパスワード管理が対象です。そのほかサーバリソース制限など、プロファイルで何ができるかを理解しておきましょう。
Oracleサーバでは、プロファイルを使用することで、定期的なパスワード変更を促したりパスワードの複雑さを保証したりできます。サーバリソース制限を行う場合は、RESOURCE_LIMIT初期化パラメータをTRUEにする必要がありますが、パスワード管理ではその必要はありません。
プロファイルに指定するパスワード管理用のキーワードには、次のものがあります。
有効期間 | PASSWORD_LIFE_TIME パスワードが失効するまでの有効期間(日数) |
---|---|
期限切れ後の猶予日数 | PASSWORD_GRACE_TIME 有効期間超過後の猶予期間(日数)。猶予期間も超過するとアカウントはロックされる |
パスワードが失効すると、ログイン時にパスワードの変更を促すプロンプトが表示されます。
猶予期間中は下記のように、セッションを確立するたびにメッセージが表示されます。
SQL> conn scott/tiger ERROR: ORA-28002: the password will expire within 10 days
再利用に必要な日数 | PASSWORD_REUSE_TIME パスワードを再使用できるようになるまでの期間(日数) |
---|---|
再利用に必要な変更回数 | PASSWORD_REUSE_MAX パスワードを再使用できるようになるまでに必要なパスワードの変更回数 |
以前のパスワードを再び使用するには、PASSWORD_REUSE_TIMEとPASSWORD_REUSE_MAXの両方を満たす必要があります。例えばPASSWORD_REUSE_TIMEに30、PASSWORD_REUSE_MAXに3が設定されている場合は、パスワードを3回変更し、かつ1回目の変更から30日経過していれば、最初のパスワードが使用できます。
複雑なパスワード検証のための関数 | PASSWORD_VERIFY_FUNCTION パスワード変更時に、パスワードの複雑さをチェックするファンクション |
---|---|
パスワードの検証ファンクションはSYSユーザーが所有し、TRUEまたはFALSEを戻す必要があります。$ORACLE_HOME/rdbms/admin/utlpwdmg.sqlを使用すると、デフォルトのパスワード検証ファンクションを作成し、DEFAULTプロファイルに設定することができます。デフォルトのパスワード検証ファンクションでは、パスワードに対して次の検証が行われます。
SQL> ALTER USER scott IDENTIFIED BY scott REPLACE tiger; ALTER USER scott IDENTIFIED BY scott REPLACE tiger * 行1でエラーが発生しました。: ORA-28003: 指定されたパスワードのパスワード照合に失敗しました。 ORA-20001: Password same as or similar to user
上記は、ユーザー名と同じパスワードに変更しようとしてエラーになった例です。
ALTER USER権限を持たないユーザーでも自分のパスワードは変更可能ですが、パスワード検証ファンクションが有効になっている場合、REPLACE句にて古いパスワードを指定する必要があります。
ロックされるまでのログイン試行失敗回数 | FAILED_LOGIN_ATTEMPTS アカウントがロックされるまでのログイン失敗回数 |
---|---|
指定回数失敗後、ロックされる日数 | PASSWORD_LOCK_TIME ログイン失敗回数を超過後のアカウントがロックされた状態になる期間(日数) |
アカウントがロックされると、セッションを確立することはできません。アカウントロックは、PASSWORD_LOCK_TIMEを経過後に解除されますが、ALTER USER ... ACCOUNT UNLOCKコマンドを使用して解除することもできます。
ユーザーを作成後、パスワードをすぐに変更させ、パスワードには数値を1文字、アンダーバーを1文字含めるために設定する機能を2つ選択しなさい。
a.デフォルトパスワード
b.プロファイル
c.期限切れパスワード
d.パスワード検証ロール
正解:b、c
前回、宿題とした問題です。
ユーザーのパスワードをユーザー自身に変更させるためには、期限切れパスワードを使用します(正解c)。
SQL> ALTER USER ユーザー名 PASSWORD EXPIRE;
これにより、ユーザーがSQL*Plusを使用して次回ログインを試みたとき、パスワードを変更しなければログインできなくなります。
また、パスワードに数値や記号を必ず含めさせるなど複雑さを検証する場合は、パスワード検証ファンクションを作成し、プロファイルにてそのファンクションを利用します(正解b)。パスワード検証ファンクションを含むプロファイルをユーザーに割り当てることで、パスワードの変更時にチェック機能が働くようになります。
そのほかの選択肢の不正解の理由は次のとおりです。
●選択肢a:Oracleサーバには、デフォルトパスワードというものは存在しません。データベース認証を使用する場合は、必ず明示的にパスワードを使用する必要があります。
●選択肢d:パスワードを検証するには、ファンクションを使用します。ロールで検証するという機能はありません。
次のようなパスワード検証が必要になりました。
この設定を行う方法を選択しなさい。
a.ユーザーを作成時にパスワード検証プロシージャを実行する
b.ユーザーにパスワード検証ロールを付与する
c.プロファイルにてパスワード検証ファンクションを設定する
d.プロファイルにてパスワード制限プロシージャを設定する
正解:c
パスワードを検証するためには、パスワード検証ファンクションを作成し、そのファンクションをプロファイルに設定します(正解c)。
ファンクションの作成にはルールがあるため、通常は$ORACLE_HOME/rdbms/admin/utlpwdmg.sqlをそのまま、もしくはカスタマイズして使用します。
そのほかの選択肢にあるような、パスワード検証のプロシージャやロールは存在しません。
プロファイルを使用して設定できる機能を2つ選択しなさい。
a.特定のユーザーのオブジェクトへの問い合わせを行えるようにする
b.同じユーザー名のセッション数を制限する
c.データベースがオープンしていなくてもセッションが確立できるようにする
d.一定回数ログインに失敗したらアカウントをロックする
正解:b、d
プロファイルを使用したパスワード検証では、次の機能が提供されます。
また、正解bのように、プロファイルを使用してセッション数を制限するといったリソース制限を行うことができます。プロファイルを使用したリソース制限に関しては、「第6回 Oracleユーザーを作成してみよう」を参照してください。
そのほかの選択肢の不正解の理由は次のとおりです。
●選択肢a:オブジェクトへのアクセスを管理するのは権限です。通常はオブジェクト権限を使用しますが、システム権限やロールを使用して管理することもできます。
●選択肢c:データベースがオープンしていなくても接続できるようにするには、SYSOPER権限かSYSDBA権限が必要です。
次回は、「Oracle Databaseのセキュリティ:監査」を確認します。次の宿題を解いておいてください。
次の初期化パラメータが設定されているときの動作を選択しなさい。
REMOTE_OS_AUTHENT=TRUE
a.リモートクライアントからのOS認証は拒否する
b.リモートクライアントからのOracleデータベースへの接続でOS認証が使用される
c.リモートクライアントに対し、OS認証で接続できる
d.リモートシステムのオペレーティングシステムの変更が許可される
IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。
Copyright © ITmedia, Inc. All Rights Reserved.