ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

80 DBMS_NETWORK_ACL_ADMIN

DBMS_NETWORK_ACL_ADMINパッケージは、ネットワークのアクセス制御リスト(ACL)を管理するためのインタフェースを提供します。


関連項目:

詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。

この章では、次の項目について説明します。


DBMS_NETWORK_ACL_ADMINの使用方法


例1

ホストwww.us.oracle.comに対するconnect権限およびresolve権限をSCOTTに付与します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl         => 'www.xml',
                                    description => 'WWW ACL',
                                    principal   => 'SCOTT',
                                    is_grant    => true,
                                    privilege   => 'connect');

  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl       => 'www.xml',
                                       principal => 'SCOTT',
                                       is_grant  => true,
                                       privilege => 'resolve');

  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl  => 'www.xml',
                                    host => 'www.us.oracle.com');
END;
/
COMMIT;

例2

www.us.oracle.comに対するresolve権限をADAMSに付与します。www.us.oracle.comのACLはすでに存在しているため、ADAMSの権限のみを追加します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl       => 'www.xml',
                                       principal => 'ADAMS',
                                       is_grant  => true,
                                       privilege => 'resolve');
END;
/
COMMIT;

例3

ACL www.xmlをwww-proxy.us.oracle.comに割り当て、SCOTTおよびADAMSがwww-proxy.us.oracle.comにもアクセスできるようにします。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl  => 'www.xml',
                                    host => 'www-proxy.us.oracle.com');
END;
/
COMMIT;

例4

www.us.oracle.comからACLの割当てを解除し、www.us.oracle.comへのアクセスが許可されないようにします。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL(host => 'www.us.oracle.com');
END;
/
COMMIT;

例5

DBMS_NETWORK_ACL_UTLILITYパッケージのDOMAINSファンクションは、ホストが属するすべてのドメインを戻します。 このファンクションをこのパッケージのCHECK_PRIVILEGE_ACLIDファンクションとともに使用して、ネットワーク・ホストにアクセスする権限に影響を与える権限の割当てを決定できます。 DBMS_NETWORK_ACL_UTILITYパッケージのDOMAIN_LEVELファンクションは、各ドメインのレベルを戻し、優先順位に従ってACLの割当て順序を決定するときに使用できます。

たとえば、SCOTTがwww.us.oracle.comに接続する権限の場合は、次のとおりです。

  SELECT host, lower_port, upper_port, acl,
     DECODE(
         DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'connect'),
            1, 'GRANTED', 0, 'DENIED', null) privilege
     FROM dba_network_acls
    WHERE host IN
      (SELECT * FROM
         TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('www.us.oracle.com')))
   ORDER BY DBMS_NETWORK_ACL_UTLITITY.DOMAIN_LEVEL(host) desc, lower_port,
                                               upper_port;


   HOST                 LOWER_PORT UPPER_PORT         ACL          PRIVILEGE
   -------------------- ---------- ---------- -------------------- ---------
   www.us.oracle.com            80         80 /sys/acls/www.xml    GRANTED
   www.us.oracle.com          3000       3999 /sys/acls/www.xml    GRANTED
   www.us.oracle.com                          /sys/acls/www.xml    GRANTED
   *.oracle.com                               /sys/acls/all.xml
   *                                          /sys/acls/all.xml

例6

たとえば、SCOTTがwww.us.oracle.comのドメイン名解決を行う権限の場合は、次のとおりです。

   SELECT host, acl,
     DECODE(
          DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'resolve'),
            1, 'GRANTED', 0, 'DENIED', NULL) privilege
     FROM dba_network_acls
    WHERE host IN
      (SELECT * FROM
         TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('www.us.oracle.com'))) and
      lower_port IS NULL AND upper_port IS NULL
   ORDER BY DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) desc;


   HOST                         ACL          PRIVILEGE
   -------------------- -------------------- ---------
   www.us.oracle.com    /sys/acls/www.xml    GRANTED
   *.oracle.com         /sys/acls/all.xml
   *                    /sys/acls/all.xml

resolve権限は、ポート範囲なしで割り当てられたACL内でのみ有効です(lower_portおよびupper_portNULLの場合)。このため、lower_portおよびupper_port列はこの問合せに含まれていません。


DBMS_NETWORK_ACL_ADMINサブプログラムの要約

表80-1 DBMS_NETWORK_ACL_ADMINパッケージのサブプログラム

サブプログラム 説明

ADD_PRIVILEGEプロシージャ


アクセス制御リスト(ACL)で、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。

ASSIGN_ACLプロシージャ


アクセス制御リスト(ACL)をネットワーク・ホストに割り当て、オプションで特定のTCPポート範囲に割り当てます。

CHECK_PRIVILEGEファンクション


アクセス制御リスト(ACL)で、権限がユーザーに付与または拒否されているかどうかを確認します。

CHECK_PRIVILEGE_ACLIDファンクション


アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

CREATE_ACLプロシージャ


初期権限設定を使用してアクセス制御リスト(ACL)を作成します。

DELETE_PRIVILEGEプロシージャ


アクセス制御リスト(ACL)で権限を削除します。

DROP_ACLプロシージャ


アクセス制御リスト(ACL)を削除します。

UNASSIGN_ACLプロシージャ


ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。



ADD_PRIVILEGEプロシージャ

このプロシージャは、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。アクセス制御エントリ(ACE)が存在しない場合は、これを作成します。

構文

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
   acl             IN VARCHAR2,
   principal       IN VARCHAR2,
   is_grant        IN BOOLEAN,
   privilege       IN VARCHAR2,
   position        IN PLS_INTEGER DEFAULT NULL,
   start_date      IN TIMESTAMP WITH TIMESTAMP DEFAULT NULL,
   end_date        IN TIMESTAMP WITH TIMESTAMP DEFAULT NULL );

パラメータ

表80-2 ADD_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

principal

権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。

is_grant

付与または拒否されるネットワーク権限 - 'connect | resolve'(大/小文字が区別されます)。データベース・ユーザーは、UTL_TCPUTL_HTTPUTL_SMTPおよびUTL_MAILユーティリティ・パッケージを使用して外部ネットワーク・ホスト・コンピュータに接続する場合、そのコンピュータに対するconnect権限が必要です。UTL_INADDRパッケージを使用して、与えられたホストIPアドレスからホスト名を解決したり、与えられたホスト名からIPアドレスを解決する場合は、データベース・ユーザーにresolve権限を付与します。

privilege

付与または拒否されるネットワーク権限。

position

ACEの(1ベースの)位置。 NULL以外の値を指定すると、新しいACEの特定の位置に権限が追加されます。同じis_grant(付与または拒否)を持つプリンシパルに対して別のACEが存在しないようにする必要があります。 NULL値を指定すると、プリンシパルとis_grantに一致するACEが存在する場合はそのACEに権限が追加され、一致するACEが存在しない場合はACLの終わりに権限が追加されます。

start_date

アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。 権限が既存のACEに追加される場合、start_dateは無視されます。

end_state

アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。end_datestart_date以降にする必要があります。 権限が既存のACEに追加される場合、end_dateは無視されます。


使用上の注意

権限を削除するには、DELETE_PRIVILEGEプロシージャを使用します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
        acl         => 'us-oracle-com-permissions.xml',
        principal   => 'ST_USERS',
        is_grant    =>  TRUE,
        privilege   => 'connect')
END;

ASSIGN_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)をホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てます。

構文

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
   acl         IN VARCHAR2,
   host        IN VARCHAR2,
   lower_port  IN PLS_INTEGER DEFAULT NULL,
   upper_port  IN PLS_INTEGER DEFAULT NULL);

パラメータ

表80-3 ASSIGN_ACLプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

host

ACLの割当て先のホスト。ホストは、ホスト名またはホストのIPアドレスによって指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

TCPポート範囲の下限(NULLでない場合)。

upper_port

TCPポート範囲の上限。NULLの場合は、lower_portの値と想定されます。


使用上の注意

BEGIN
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
     acl         => 'us-oracle-com-permissions.xml',
     host        => '*.us.oracle.com',
     lower_port  => 80);
END;

CHECK_PRIVILEGEファンクション

このファンクションは、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

構文

DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE (
   acl             IN VARCHAR2,
   user            IN VARCHAR2,
   privilege       IN VARCHAR2)
  RETURN NUMBER;

パラメータ

表80-4 CHECK_PRIVILEGEファンクションのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

user

チェック対象のユーザー。ユーザーがNULLである場合は、実行者と想定されます。ユーザー名はALL_USERSビューのUSERNAME列と同様、大/小文字が区別されます。

privilege

チェックするネットワーク権限。


戻り値

権限が付与された場合は1、権限が拒否された場合は0、権限が付与されず、かつ拒否されなかった場合には、NULLが戻されます。

SELECT DECODE(
  DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(
       'us-oracle-com-permissions.xml', 'SCOTT', 'resolve'),
  1, 'GRANTED', 0, 'DENIED', NULL) PRIVILEGE
FROM DUAL;

CHECK_PRIVILEGE_ACLIDファンクション

このファンクションは、アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

構文

DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID (
   aclid           IN RAW,
   user            IN VARCHAR2 DEFAULT NULL)
   privilege       IN VARCHAR2,
 RETURN NUMBER;

パラメータ

表80-5 CHECK_PRIVILEGE_ACLIDファンクションのパラメータ

パラメータ 説明

aclid

ACLのオブジェクトID

user

チェック対象のユーザー。ユーザーがNULLである場合は、実行者と想定されます。ユーザー名はALL_USERSビューのUSERNAME列と同様、大/小文字が区別されます。

privilege

チェックするネットワーク権限。


戻り値

権限が付与された場合は1、権限が拒否された場合は0、権限が付与されず、かつ拒否されなかった場合には、NULLが戻されます。


CREATE_ACLプロシージャ

このプロシージャは、初期権限設定を使用してアクセス制御リスト(ACL)を作成します。ACLには、少なくとも1つの権限設定がある必要があります。ACLのアクセス制御は、ネットワーク・ターゲットに割り当てられるまで有効になりません。

構文

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
   acl             IN VARCHAR2,
   description     IN VARCHAR2,
   principal       IN VARCHAR2,
   is_grant        IN BOOLEAN,
   privilege       IN VARCHAR2,
   start_date      IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
   end_date        IN TIMESTAMP WITH TIMEZONE DEFAULT NULL );

パラメータ

表80-6 CREATE_ACLプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

description

ACLの記述属性。

principal

権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。

is_grant

権限が付与されるか拒否されるかのいずれか。

privilege

付与または拒否されるネットワーク権限 - 'connect | resolve'(大/小文字が区別されます)。データベース・ユーザーは、UTL_TCPUTL_HTTPUTL_SMTPおよびUTL_MAILユーティリティ・パッケージを使用して外部ネットワーク・ホスト・コンピュータに接続する場合、そのコンピュータに対するconnect権限が必要です。UTL_INADDRパッケージを使用して、与えられたホストIPアドレスからホスト名を解決したり、与えられたホスト名からIPアドレスを解決する場合は、データベース・ユーザーにresolve権限を付与します。

start_date

アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。

end_state

アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。end_datestart_date以降にする必要があります。


使用上の注意

アクセス制御リストを削除するには、DROP_ACLプロシージャを使用します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
     acl          => 'us-oracle-com-permissions.xml',
     description  => 'Network permissions for *.us.oracle.com',
     principal    => 'SCOTT',
     is_grant     => TRUE,
     privilege    => 'connect');
END;

DELETE_PRIVILEGEプロシージャ

このプロシージャは、アクセス制御リストの権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE (
   acl           IN VARCHAR2,
   principal     IN VARCHAR2,
   is_grant      IN BOOLEAN DEFAULT NULL,
   privilege     IN VARCHAR2 DEFAULT NULL);

パラメータ

表80-7 DELETE_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

principal

すべてのACEが削除されるプリンシパル(データベース・ユーザーまたはロール)。

is_grant

権限が付与されるか拒否されるかのいずれか。NULL値を指定すると、付与された権限と拒否された権限の両方が削除されます。

privilege

削除されるネットワーク権限。NULL値を指定すると、すべての権限が削除されます。


BEGIN
  DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE(
        acl         => 'us-oracle-com-permissions.xml',
        principal   => 'ST_USERS')
END;

DROP_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.DROP_ACL (
   acl           IN VARCHAR2);

パラメータ

表80-8 DROP_ACLプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。


BEGIN
   DBMS_NETWORK_ACL_ADMIN.DROP_ACL(
      acl => 'us-oracle-com-permissions.xml');
END;

UNASSIGN_ACLプロシージャ

このプロシージャは、ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

構文

DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL (
   acl         IN VARCHAR2 DEFAULT NULL,
   host        IN VARCHAR2 DEFAULT NULL,
   lower_port  IN PLS_INTEGER DEFAULT NULL,
   upper_port  IN PLS_INTEGER DEFAULT NULL);

パラメータ

表80-9 UNASSIGN_ACLプロシージャのパラメータ

パラメータ 説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。aclがNULLの場合、ホストに割り当てられているACLの割当てが解除されます。

host

ACLが削除されるホスト。ホストは、ホスト名またはホストのIPアドレスによって指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。hostがNULLの場合、任意のホストからACLの割当てが解除されます。hostaclの両方がNULLの場合、ACLのすべての割当てが削除されます。

lower_port

TCPポート範囲の下限(NULLでない場合)。

upper_port

TCPポート範囲の上限。NULLの場合は、lower_portの値と想定されます。


BEGIN
   DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL(
     host        => '*.us.oracle.com',
     lower_port  => 80);
END;