DBMS_CREDENTIAL
パッケージは、EXTPROC
コールアウト・ファンクションのみでなく、SCHEDULER
の外部ジョブ、リモート・ジョブ、ファイル・ウォッチャを認証および偽装するためのインタフェースを提供します。
関連項目:
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
使用上の注意
例
資格証明は、EXTPROC
コールアウト・ファンクションのみでなく、SCHEDULER
のリモート・ジョブ、外部ジョブ、ファイル・ウォッチャを認証および偽装するためのユーザー名とパスワードのペアを保持するデータベース・オブジェクトです。これらは、CREATE_CREDENTIALプロシージャを使用して作成されます。プロシージャでは、Windowsサーバーに対して実行するリモート外部ジョブでWindowsドメインを指定することもできます。
Oracle資格証明には、それぞれ一意の資格証明名が付けられています。資格証明の関連付けは、その一意の資格証明名をPL/SQL別名ライブラリを介してEXTPROC
に関連付けることで実行できます。
資格証明をPL/SQL別名ライブラリと外部プロシージャに関連付けるには、CREATE
AND
/
OR
REPLACE
LIBRARY
権限またはCREATE
AND/OR
REPLACE
FUNCTION
/
PROCEDURE
権限、および関連付ける別名ライブラリのDLLまたは共有オブジェクトに対する読取り権限が必要です。ファンクションまたはプロシージャを作成または置換(あるいはその両方)して、別名ライブラリを利用できるようにするためです。
認証後は、指定されたユーザー資格証明に定義されているクライアントの識別情報に基づいて、EXTPROC
がクライアントのかわりに動作する必要があります。認証されていない場合は、EXTPROC
はエラー・メッセージを戻す必要があります。
資格証明を作成または変更するには、CREATE
CREDENTIAL
権限が必要です。自身のスキーマ以外のスキーマに資格証明を作成しようとしている場合は、CREATE
ANY
CREDENTIAL
権限が必要です。
既存のCREATE
OR
REPLACE
LIBRARY
文とCREATE
OR
REPLACE
FUNCTION
/
PROCEDURE
ではCREDENTIAL
句がサポートされていないため、このモデルのCREATE
OR
REPLACE
LIBRARY
およびCREATE
OR
REPLACE
FUNCTION/PROCEDURE
文では、構文およびセマンティクの変更が必要になります。
次に例を示します。
CREATE OR REPLACE LIBRARY test AS '$ORACLE_HOME/bin/test.so' CREDENTIAL ricky_cred; CREATE OR REPLACE FUNCTION ftest1 (x VARCHAR2, y BINARY_INTEGER) RETURN BINARY_INTEGER AS LANGUAGE C LIBRARY test NAME "negative" PARAMETERS(x STRING, y INT);
CREDENTIAL
句で定義されている資格証明名は、データベース・オブジェクトの名前です。そのため、資格証明名を一重または二重引用符で囲まないでください。
外部ジョブで使用する資格証明の例を、次に示します。
BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'example_job', job_type => 'EXECUTABLE', job_action => '/bin/ls', credential_name => 'ricky_cred'); END; /
表39-1 DBMS_CREDENTIALパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
Oracle資格証明というデータベース・オブジェクトに、保存済のユーザー名とパスワードのペアを作成します。 |
|
Oracle資格証明を無効にします。 |
|
Oracle資格証明を削除します。 |
|
Oracle資格証明を有効にします。 |
|
既存のOracle資格証明を更新します。 |
このプロシージャは、Oracle資格証明というデータベース・オブジェクトに、保存済のユーザー名とパスワードのペアを作成します。
構文
DBMS_CREDENTIAL.CREATE_CREDENTIAL ( credential_name IN VARCHAR2, username IN VARCHAR2, password IN VARCHAR2, database_role IN VARCHAR2 DEFAULT NULL windows_domain IN VARCHAR2 DEFAULT NULL, comments IN VARCHAR2 DEFAULT NULL, enabled IN BOOLEAN DEFAULT TRUE);
パラメータ
表39-2 CREATE_CREDENTIALプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
資格証明の名前。オプションで、スキーマを接頭辞として付加できます。 |
|
この資格証明を選択した場合、ジョブの実行時にオペレーティング・システムまたはリモート・データベースにログインするためのユーザー名。 |
|
この資格証明を選択した場合、ジョブの実行時にリモート・オペレーティング・システムにログインするためのパスワード。大文字と小文字が区別されます。 |
|
この資格証明を使用するデータベース・ジョブが管理者権限でログインするかどうかを示します。値は、 |
|
Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。このドメインは、自動的に大文字に変換されます。 |
|
ユーザーへの資格証明の説明に使用可能なテキスト文字列。スケジューラでは、このフィールドは使用されません。 |
|
資格証明が有効化されるかどうかを決定します。 |
使用上の注意
資格証明は特定のスキーマに存在し、CREATE
CREDENTIAL
またはCREATE
ANY
CREDENTIAL
システム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE
CREDENTIAL
またはCREATE
ANY
CREDENTIAL
権限が必要です。
ユーザー名では大文字と小文字が区別されます。二重引用符または空白を含むことはできません。
既存の資格証明名を使用して資格証明を作成しようとすると、エラーが戻されます。既存の資格証明を変更するには、ユーザーはDROP_CREDENTIALプロシージャを使用して、まず既存の資格証明を削除する必要があります。
別名ライブラリによってすでに参照されている既存の資格証明を削除しようとすると、エラーが戻されます。既存の資格証明を確認せずに削除するには、DROP_CREDENTIALプロシージャ
のforceパラメータをTRUE
に設定する必要があります。
資格証明は、UPDATE_CREDENTIALプロシージャを使用しても変更できます。
例
基本資格証明の作成
CONN scott
Enter password: password
BEGIN
-- Basic credential.
DBMS_CREDENTIAL.CREATE_CREDENTIAL(
credential_name => 'TIM_HALL_CREDENTIAL',
username => 'tim_hall',
password => 'password');
END
Windows資格証明の作成
CONN scott
Enter password: password
-- Credential including Windows domain
BEGIN
DBMS_CREDENTIAL.CREATE_CREDENTIAL(
credential_name => 'TIM_HALL_WIN_CREDENTIAL',
username => 'tim_hall',
password => 'password',
windows_domain => 'localdomain');
END
資格証明の表示情報
資格証明に関する情報は、[DBA|ALL|USER] _CREDENTIALS
ビューを使用して表示されます。
COLUMN credential_name FORMAT A25 COLUMN username FORMAT A20 COLUMN windows_domain FORMAT A20 SELECT credential_name, username, windows_domain FROM user_credentials ORDER BY credential_name; CREDENTIAL_NAME USERNAME WINDOWS_DOMAIN ------------------------- -------------------- -------------------- TIM_HALL_CREDENTIAL tim_hall TIM_HALL_WIN_CREDENTIAL tim_hall LOCALDOMAIN 2 rows selected. SQL>
このプロシージャは、Oracle資格証明を無効にします。
構文
DBMS_CREDENTIAL.DISABLE_CREDENTIAL ( credential_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
使用上の注意
資格証明は特定のスキーマに存在し、CREATE
CREDENTIAL
またはCREATE
ANY
CREDENTIAL
システム権限を持つユーザーが無効にできます。自身のスキーマ以外のスキーマで資格証明を無効にするには、CREATE
ANY
CREDENTIAL
権限が必要です。
オペレーティング・システムへの特定のユーザーとしてのアクセスのエントリ・ポイントとして、OSユーザーの資格証明を表示できます。資格証明の無効化を許可することで、管理者(または資格証明の所有者)は、(外部ジョブ、データベース・ジョブ、ファイル転送、外部プロシージャ、ファイル・ウォッチの)特定のユーザーとしてのデータベースからOSへのすべてのログインを迅速かつ簡単に、また可逆的に拒否することができます。既存の無効な資格証明を有効にするには、ENABLE_CREDENTIALプロシージャを使用する必要があります。
ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になる場合があります。
このプロシージャは、Oracle資格証明を有効にします。
使用上の注意
資格証明は特定のスキーマに存在し、CREATE
CREDENTIAL
OR
CREATE
ANY
CREDENTIAL
システム権限を持つユーザーが無効にできます。自身のスキーマ以外のスキーマで資格証明を無効にするには、CREATE
CREDENTIAL
OR
CREATE
ANY
CREDENTIAL
権限が必要です。
オペレーティング・システムへの特定のユーザーとしてのアクセスのエントリ・ポイントとして、OSユーザーの資格証明を表示できます。資格証明の無効化を許可することで、管理者(または資格証明の所有者)は、(外部ジョブ、ファイル転送、外部プロシージャ、ファイル・ウォッチの)特定のユーザーとしてのデータベースからOSへのすべてのログインを迅速かつ簡単に、また可逆的に拒否することができます。既存の資格証明を無効にするには、DISABLE_CREDENTIALプロシージャを使用する必要があります。
ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になる場合があります。
このプロシージャは、既存のOracle資格証明を更新します。
構文
DBMS_CREDENTIAL.UPDATE_CREDENTIAL ( credential_name IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2);
使用上の注意
資格証明は特定のスキーマに存在し、CREATE
CREDENTIAL
またはCREATE
ANY
CREDENTIAL
システム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE
ANY
CREDENTIAL
権限が必要です。
ユーザー名では大文字と小文字が区別されます。二重引用符または空白を含むことはできません。
更新された資格証明を参照するEXTPROC
別名ライブラリは無効になります。ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になります。
例
基本資格証明の更新
CONN scott
Enter password: password
BEGIN
-- Basic credential.
DBMS_CREDENTIAL.UPDATE_CREDENTIAL (
credential_name => 'TIM_HALL_CREDENTIAL',
attribute => 'password',
value => 'password2');
DBMS_CREDENTIAL.UPDATE_CREDENTIAL (
credential_name => 'TIM_HALL_CREDENTIAL',
attribute => 'username',
value => 'tim_hall');
END;
Windows資格証明の更新
CONN scott
Enter password: password
-- Credential including Windows domain
BEGIN
DBMS_CREDENTIAL.UPDATE_CREDENTIAL(
credential_name => 'TIM_HALL_WIN_CREDENTIAL',
username => 'tim_hall',
password => 'password',
windows_domain => 'localdomain');
END
資格証明の表示情報
資格証明に関する情報は、[DBA|ALL|USER] _CREDENTIALS
ビューを使用して表示されます。
COLUMN credential_name FORMAT A25 COLUMN username FORMAT A20 COLUMN windows_domain FORMAT A20 SELECT credential_name, username, windows_domain FROM all_credentials ORDER BY credential_name; CREDENTIAL_NAME USERNAME WINDOWS_DOMAIN ------------------------- -------------------- -------------------- TIM_HALL_CREDENTIAL tim_hall TIM_HALL_WIN_CREDENTIAL tim_hall LOCALDOMAIN 2 rows selected. SQL>