SQL*Plusで、SYSTEMアカウント内の表の1つであるPRODUCT_USER_PROFILE(PUP)表を使用した製品レベルのセキュリティが提供されています。このセキュリティは、SQLのGRANTとREVOKEコマンドおよびユーザー・ロールによるユーザー・レベルのセキュリティを補います。
SQL*Plus環境では、DBAはPUP表を使用して、特定のSQLおよびSQL*Plusコマンドをユーザー単位で使用禁止にできます。Oracle DatabaseでなくSQL*Plusでこのセキュリティが実行されます。DBAは、GRANT、REVOKEおよびSET ROLEコマンドへのアクセスを制限して、ユーザーによる各自のデータベース権限の変更を制御することもできます。
SQL*Plusでは、ユーザーがSQL*Plusにログインすると、PUP表から制限が読み込まれ、セッションが終了するまでその制限が保持されます。PUP表の変更は、次に対象ユーザーがSQL*Plusにログインするときに有効になります。
SYSTEM、SYS、またはSYSBACKUP、SYSDBA、SYSDG、SYSKMまたはSYSOPER権限で認証するユーザーが接続またはログインする場合、SQL*PlusではPUP表は読み込まれません。そのため、これらのユーザーに制限は適用されません。
PUP表は、ローカル・データベースのみに適用されます。データベース・リンク経由でリモート・データベース上のオブジェクトにアクセスする場合、リモート・データベース用のPUP表は適用されません。リモート・データベースは、データベース・リンクからユーザー名およびパスワードを抽出して、ユーザー・プロファイルおよびユーザー権限を維持することはできません。
PUP表には、次の列が含まれています。
PRODUCT NOT NULL VARCHAR2 (30) USERID VARCHAR2(30) ATTRIBUTE VARCHAR2(240) SCOPE VARCHAR2(240) NUMERIC_VALUE NUMBER(15,2) CHAR_VALUE VARCHAR2(240) DATE_VALUE DATE LONG_VALUE LONG
次に、PUP表の各列について説明します。
PUP列 | 説明 |
---|---|
PRODUCT |
製品名(この場合はSQL*Plus)が含まれている必要があります。この列には、ワイルド・カードまたはNULLは入力できません。 |
USERID |
コマンドを使用禁止にする対象ユーザーのユーザー名(大文字)が含まれている必要があります。複数のユーザーのコマンドを使用禁止にするには、SQLワイルド・カード(%)を使用するか、または複数のエントリを入力します。したがって、次のエントリはすべて有効です。
|
ATTRIBUTE |
使用禁止にするSQL、SQL*PlusまたはPL/SQLコマンドの名前(大文字)が含まれている必要があります(たとえば、RUNなど)。ロールを使用禁止にする場合、文字列ROLESが含まれている必要があります。ワイルド・カードは入力できません。使用禁止にできるSQLおよびSQL*Plusコマンドのリストについては、「PUP表の管理」を参照してください。ロールを使用禁止にする方法については、ロールの作成および制御についてを参照してください。 |
SCOPE |
使用されません。NULLを入力してください。他の製品では、特定のファイル制限またはその他のデータがこの列に格納されることがあります。 |
NUMERIC_VALUE |
使用されません。NULLを入力してください。他の製品では、この列に数値が格納されることがあります。 |
CHAR_VALUE |
SQL、SQL*PlusまたはPL/SQLコマンドを使用禁止にするには、文字列DISABLEDが含まれている必要があります。ロールを使用禁止にする場合は、使用禁止にするロールの名前が含まれている必要があります。ワイルド・カードは入力できません。ロールを使用禁止にする方法については、SQLPLUS -RESTRICTでのコマンドの使用禁止についてを参照してください。 |
DATE_VALUE |
使用されません。NULLを入力してください。他の製品では、この列にDATE値が格納されることがあります。 |
LONG_VALUE |
使用されません。NULLを入力してください。他の製品では、この列にLONG値が格納されることがあります。 |