107 DBMS_NETWORK_ACL_ADMIN

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

この章の内容は次のとおりです。

参照:

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

107.1 DBMS_NETWORK_ACL_ADMINの概要

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

ACLを使用することで、 UTL_TCP UTL_HTTP UTL_SMTP および UTL_INADDR などのPL/SQLネットワーク・ユーティリティ・パッケージを使用した、データベースから外部ネットワークのサービスおよびリソースへのユーザーのアクセスが制御されます。

107.2 DBMS_NETWORK_ACL_ADMINの推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

107.3 DBMS_NETWORK_ACL_ADMINのセキュリティ・モデル

デフォルトでは、DBMS_NETWORK_ACL_ADMINパッケージのEXECUTE権限は、DBAロールとEXECUTE_CATALOG_ROLEに付与されています。

107.4 DBMS_NETWORK_ACL_ADMINの定数

DBMS_NETWORK_ACL_ADMINパッケージは、パラメータ値の指定に使用する定数を定義します。

これらを、次の表に示します。

表107-1 DBMS_NETWORK_ACL_ADMINの定数

定数 タイプ 説明

IP_ADDR_MASK

VARCHAR2(80)

'([[:digit:]]+\.){3}[[:digit:]]+'

IPアドレス・マスク: xxx.xxx.xxx.xxx

IP_SUBNET_MASK

VARCHAR2(80)

'([[:digit:]]+\.){0,3}\*'

IPサブネット・マスク: xxx.xxx...*

HOSTNAME_MASK

VARCHAR2(80)

'[ ^\.\:\/\*]+(\.[^\.\:\/\*]+)*'

ホスト名マスク: ???.???.???...???

DOMAIN_MASK

VARCHAR2(80)

''\*(\.[^\.\:\/\*]+)*'

ドメイン・マスク: *.???.???...???

107.5 DBMS_NETWORK_ACL_ADMINの例外

次の表に、DBMS_NETWORK_ACL_ADMINパッケージで発生する例外を示します。

表107-2 DBMS_NETWORK_ACL_ADMINの例外

例外 エラー・コード 説明

ACE_ALREADY_EXISTS

24243

ACEはすでに存在します。

EMPTY_ACL

24246

ACLが空です。

ACL_NOT_FOUND

46114

ACLが見つかりません。

ACL_ALREADY_EXISTS

46212

ACLはすでに存在します。

INVALID_ACL_PATH

46059

ACLのパスが無効です。

INVALID_HOST

24244

ホストが無効です。

INVALID_PRIVILEGE

24245

権限が無効です。

INVALID_WALLET_PATH

29248

ウォレットのパスが無効です。

BAD_ARGUMENT

29261

引数が間違っています。

UNRESOLVED_PRINCIPAL

46238

プリンシパルが未解決です。

PRIVILEGE_NOT_GRANTED

01927

権限が付与されていません。

107.6 DBMS_NETWORK_ACL_ADMINの例

ホストwww.us.example.comに対するconnect権限とresolve権限をSCOTTに付与します。

Example1

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
  host => 'www.us.example.com',
  ace  =>  xs$ace_type(privilege_list => xs$name_list('connect', 'resolve'),
                       principal_name => 'scott',
                       principal_type => xs_acl.ptype_db)); 

例2

SCOTTのホストwww.us.example.comに対するresolve権限を取り消します。

dbms_network_acl_admin.remove_host_ace(
  host => 'www.us.example.com',
  ace  =>  xs$ace_type(privilege_list => xs$name_list('resolve'),
                       principal_name => 'scott',
                       principal_type => xs_acl.ptype_db)); 

例3

ウォレットfile:/example/wallets/hr_walletに対するuse_client_certificates権限とuse_passwords権限をSCOTTに付与します。

dbms_network_acl_admin.append_wallet_ace(
  wallet_path => 'file:/example/wallets/hr_wallet',
  ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
                              principal_name => 'scott',
                              principal_type => xs_acl.ptype_db));

例4

SCOTTからウォレットfile:/example/wallets/hr_walletに対するuse_passwords権限を取り消します。

dbms_network_acl_admin.remove_wallet_ace(
  wallet_path => 'file:/example/wallets/hr_wallet',
  ace         =>  xs$ace_type(privilege_list => xs$name_list('use_passwords'),
                              principal_name => 'scott',
                              principal_type => xs_acl.ptype_db)); 

例5

DBMS_NETWORK_ACL_UTLILITYパッケージ内のCONTAINS_HOSTは、ドメインにホストが含まれるかどうかを判別します。DBA_HOST_ACEビューと一緒にこれを使用することで、ネットワーク・ホストにアクセスするユーザーとその権限の割当てを確認できます。たとえば、www.us.example.comへのアクセスは次のようになります。

SELECT HOST, LOWER_PORT, UPPER_PORT,
       ACE_ORDER, PRINCIPAL, PRINCIPAL_TYPE,
       GRANT_TYPE, INVERTED_PRINCIPAL, PRIVILEGE,
       START_DATE, END_DATE
  FROM (SELECT ACES.*,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.us.example.com',
                                                      HOST) PRECEDENCE
          FROM DBA_HOST_ACES ACES)
 WHERE PRECEDENCE IS NOT NULL
 ORDER BY PRECEDENCE DESC,
          LOWER_PORT NULLS LAST,
          UPPER_PORT NULLS LAST,
          ACE_ORDER;
 
HOST               LOWER_PORT UPPER_PORT ACE_ORDER PRINCIPAL PRINCIPAL_TYPE   GRANT_TYPE INVERTED_PRINCIPAL PRIVILEGE START_DATE END_DATE
------------------ ---------- ---------- --------- --------- ---------------- ---------- ------------------ ---------- ---------- --------
www.us.example.com         80        80          1 SCOTT     DATABASE USER    GRANT      NO                 HTTP
www.us.example.com         80        80          2 ADAMS     DATABASE USER    GRANT      NO                 HTTP
*                                                1 HQ_DBA    DATABASE USER    GRANT      NO                 CONNECT
*                                                1 HQ_DBA    DATABASE USER    GRANT      NO                 RESOLVE 

例6

たとえば、www.us.example.comにアクセスするためのHQ_DBA独自の権限は次のようになります。

SELECT HOST, LOWER_PORT, UPPER_PORT, PRIVILEGE, STATUS
  FROM (SELECT ACES.*,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.us.example.com',
                                                      HOST) PRECEDENCE
          FROM USER_HOST_ACES ACES)
 WHERE PRECEDENCE IS NOT NULL
 ORDER BY PRECEDENCE DESC,
          LOWER_PORT NULLS LAST,
          UPPER_PORT NULLS LAST;
 
 
HOST               LOWER_PORT UPPER_PORT PRIVILEGE STATUS
------------------ ---------- ---------- --------- -------
*                                        CONNECT   GRANTED
*                                        RESOLVE   GRANTED 

107.7 DBMS_NETWORK_ACL_ADMINサブプログラムの要約

この表では、DBMS_NETWORK_ACL_ADMINパッケージのサブプログラムをリストし、簡単に説明します。

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

サブプログラム 説明

ADD_PRIVILEGEプロシージャ

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

APPEND_HOST_ACEプロシージャ

アクセス制御エントリ(ACE)をネットワーク・ホストのアクセス制御リスト(ACL)に追加します。

APPEND_HOST_ACLプロシージャ

アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をネットワーク・ホストのACLに追加します。

APPEND_WALLET_ACEプロシージャ

アクセス制御エントリ(ACE)をウォレットのアクセス制御リスト(ACL)に追加します。

APPEND_WALLET_ACLプロシージャ

アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をウォレットのACLに追加します。

ASSIGN_ACLプロシージャ

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

ASSIGN_WALLET_ACLプロシージャ

(非推奨)アクセス制御リスト(ACL)をウォレットに割り当てます。

CHECK_PRIVILEGEファンクション

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

CHECK_PRIVILEGE_ACLIDファンクション

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

CREATE_ACLプロシージャ

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

DELETE_PRIVILEGEプロシージャ

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

DROP_ACLプロシージャ

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

REMOVE_HOST_ACEプロシージャ

特定のACEに一致するネットワーク・ホストのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

REMOVE_WALLET_ACEプロシージャ

特定のACEに一致するウォレットのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

SET_HOST_ACLプロシージャ

データベースからネットワーク・ホストへのアクセスを制御するために、そのホストのアクセス制御リスト(ACL)を設定します。

SET_WALLET_ACLプロシージャ

データベースからウォレットへのアクセスを制御するために、そのウォレットのアクセス制御リスト(ACL)を設定します。

UNASSIGN_ACLプロシージャ

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

UNASSIGN_WALLET_ACLプロシージャ

(非推奨)ウォレットに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

107.7.1 ADD_PRIVILEGEプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャAPPEND_WALLET_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 );

パラメータ

表107-4 ADD_PRIVILEGEファンクションのパラメータ

パラメータ 説明

acl

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

principal

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

is_grant

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

privilege

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

position

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

start_date

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

end_date

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

使用上の注意

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

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

107.7.2 APPEND_HOST_ACEプロシージャ

このプロシージャは、アクセス制御エントリ(ACE)をネットワーク・ホストのアクセス制御リスト(ACL)に追加します。ACLはデータベースから特定のホストへのアクセスを制御し、ACEは特定のプリンシパルに付与または拒否される権限を指定します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
   host         IN VARCHAR2,
   lower_port   IN PLS_INTEGER DEFAULT NULL,
   upper_port   IN PLS_INTEGER DEFAULT NULL,
   ace          IN XS$ACE_TYPE);

パラメータ

表107-5 APPEND_HOST_ACEファンクションのパラメータ

パラメータ 説明

host

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

lower_port

オプションのTCPポート範囲の下限です。

upper_port

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

ace

ACE。

使用上の注意

  • ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

  • ACEを削除するには、REMOVE_HOST_ACEプロシージャを使用します。

  • ホストのACLは、そのドメインのACLより優先されます。www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。

    • www.us.example.com

    • *.us.example.com

    • *.example.com

    • *.com

    • *

  • IPアドレスのACLは、そのサブネットのACLより優先されます。192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

    • 192.168.0.100

    • 192.168.0.*

    • 192.168.*

    • 192.*

    • *

  • resolve権限を持つACEは、ポート範囲が指定されていないホストのACLに対してのみ追加できます。

  • connect権限を持つACEが、ポート範囲が指定されたホストのACLと、ポート範囲が指定されていないホストのACLに追加された場合、ポート範囲が指定されたホストのACLが優先されます。

  • ホストのTCPポート範囲を指定する場合、そのホストの他の既存のポート範囲とオーバーラップする範囲は指定できません。

  • ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

参照:

XS$ACE_TYPEオブジェクト・タイプの詳細は、『Oracle Database Real Application Security管理者および開発者ガイド』を参照してください。

107.7.3 APPEND_HOST_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をネットワーク・ホストのACLに追加します。

構文

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

パラメータ

表107-6 APPEND_HOST_ACLファンクションのパラメータ

パラメータ 説明

host

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

lower_port

オプションのTCPポート範囲の下限です。

upper_port

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

acl

追加元のACL

使用上の注意

  • ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

  • ACEを削除するには、REMOVE_HOST_ACEプロシージャを使用します。

  • ホストのACLは、そのドメインのACLより優先されます。www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。

    • www.us.example.com

    • *.us.example.com

    • *.example.com

    • *.com

    • *

  • IPアドレスのACLは、そのサブネットのACLより優先されます。192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

    • 192.168.0.100

    • 192.168.0.*

    • 192.168.*

    • 192.*

    • *

  • resolve権限を持つACEは、ポート範囲が指定されていないホストのACLに対してのみ追加できます。

  • connect権限を持つACEが、ポート範囲が指定されたホストのACLと、ポート範囲が指定されていないホストのACLに追加された場合、ポート範囲が指定されたホストのACLが優先されます。

  • ホストのTCPポート範囲を指定する場合、そのホストの他の既存のポート範囲とオーバーラップする範囲は指定できません。ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

107.7.4 APPEND_WALLET_ACEプロシージャ

このプロシージャは、アクセス制御エントリ(ACE)をウォレットのアクセス制御リスト(ACL)に追加します。ACLはデータベースから特定のウォレットへのアクセスを制御し、ACEは特定のプリンシパルに付与または拒否される権限を指定します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE (
   wallet_path    IN VARCHAR2,
   ace            IN XS$ACE_TYPE);

パラメータ

表107-7 APPEND_WALLET_ACEファンクションのパラメータ

パラメータ 説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

ACE。

使用上の注意

  • ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

  • ACEを削除するには、REMOVE_WALLET_ACEプロシージャを使用します。

  • ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

参照:

XS$ACE_TYPEオブジェクト・タイプの詳細は、『Oracle Database Real Application Security管理者および開発者ガイド』を参照してください。

107.7.5 APPEND_WALLET_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をウォレットのACLに追加します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACL (
   wallet_path    IN VARCHAR2,
   acl            IN VARCHAR2);

パラメータ

表107-8 APPEND_WALLET_ACLファンクションのパラメータ

パラメータ 説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

追加元のACL

使用上の注意

  • ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

  • ACEを削除するには、REMOVE_WALLET_ACEを使用します。

  • ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

107.7.6 ASSIGN_ACLプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

構文

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);

パラメータ

表107-9 ASSIGN_ACLファンクションのパラメータ

パラメータ 説明

acl

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

host

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

lower_port

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

upper_port

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

使用上の注意

  • ホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てることができるACLは1つだけです。新しいアクセス制御リストをネットワーク・ターゲットに割り当てると、同じターゲットに割り当てられていた以前のアクセス制御リストの割当ては解除されます。ただし、アクセス制御リストは削除されません。アクセス制御リストを削除するには、DROP_ACLプロシージャを使用します。アクセス制御リストの割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。

  • ドメインに割り当てられているACLの優先順位は、サブドメインに割り当てられている他のACLよりも低く、サブドメインに割り当てられているACLの優先順位は、個々のホストに割り当てられているACLよりも低くなります。このため、www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。

    - www.us.example.com

    - *.us.example.com

    - *.example.com

    - *.com

    - *

    同様に、サブネットに割り当てられているACLの優先順位は、より小さいサブネットに割り当てられている他のACLよりも低く、より小さいサブネットに割り当てられているACLの優先順位は、個々のIPアドレスに割り当てられているACLよりも低くなります。このため、192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

    - 192.168.0.100

    - 192.168.0.*

    - 192.168.*

    - 192.*

    - *

  • ポート範囲は、ACLのconnect権限の割当てにのみ適用できます。ACLのresolve権限の割当ては、ポート範囲なしでACLがホストに割り当てられている場合にのみ有効です。

    connect権限の割当てでは、ポート範囲なしでホストに割り当てられているACLの優先順位は、ポート範囲を指定して同じホストに割り当てられている他のACLよりも低くなります。

  • TCPポート範囲を指定する場合は、lower_portupper_portの両方がNULLではなく、upper_portlower_port以上である必要があります。ポート範囲は、同じホストですでに割り当てられている他のポート範囲とオーバーラップしないようにする必要があります。

  • 割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。

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

107.7.7 ASSIGN_WALLET_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)をWalletに割り当てます。

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

構文

UTL_HTTP.ASSIGN_WALLET_ACL (
   acl          IN  VARCHAR2,
   wallet_path  IN  VARCHAR2);

パラメータ

表107-10 ASSIGN_WALLET_ACLプロシージャのパラメータ

パラメータ 説明

acl

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

wallet_path

ACLの割当て先のWalletのディレクトリ・パス。このパスは大文字と小文字が区別され、形式はfile:directory-pathです。

使用上の注意

割当てを削除するには、UNASSIGN_WALLET_ACLプロシージャを使用します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
    acl         => 'wallet-acl.xml', 
    description => 'Wallet ACL',
    principal   => 'SCOTT',
    is_grant    => TRUE,
    privilege   => 'use-client-certificates');
 
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl         => 'wallet-acl.xml', 
    principal   => 'SCOTT',
    is_grant    => TRUE,
    privilege   => 'use-passwords');
 
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL(
    acl         => 'wallet-acl.xml', 
    wallet_path => 'file:/example/wallets/test_wallet');
END;

107.7.8 CHECK_PRIVILEGEファンクション

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

構文

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

パラメータ

表107-11 CHECK_PRIVILEGEファンクションのパラメータ

パラメータ 説明

acl

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

user

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

privilege

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

戻り値

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

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

107.7.9 CHECK_PRIVILEGE_ACLIDファンクション

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

構文

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

パラメータ

表107-12 CHECK_PRIVILEGE_ACLIDファンクションのパラメータ

パラメータ 説明

aclid

ACLのオブジェクトID

user

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

privilege

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

戻り値

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

107.7.10 CREATE_ACLプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

構文

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 );

パラメータ

表107-13 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_date

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

使用上の注意

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

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

107.7.11 DELETE_PRIVILEGEプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

構文

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

パラメータ

表107-14 DELETE_PRIVILEGEファンクションのパラメータ

パラメータ 説明

acl

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

principal

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

is_grant

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

privilege

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

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

107.7.12 DROP_ACLプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

構文

DBMS_NETWORK_ACL_ADMIN.DROP_ACL (
   acl           IN VARCHAR2);

パラメータ

表107-15 DROP_ACLプロシージャのパラメータ

パラメータ 説明

acl

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

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

107.7.13 REMOVE_HOST_ACEプロシージャ

このプロシージャは、特定のACEに一致するネットワーク・ホストのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE (
   host               IN VARCHAR2,
   lower_port         IN PLS_INTEGER DEFAULT NULL,
   upper_port         IN PLS_INTEGER DEFAULT NULL,
   ace                IN XS$ACE_TYPE,
   remove_empty_acl   IN BOOLEAN DEFAULT FALSE);

パラメータ

表107-16 REMOVE_HOST_ACEファンクションのパラメータ

パラメータ 説明

host

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

lower_port

オプションのTCPポート範囲の下限です。

upper_port

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

ace

ACE。

remove_empty_acl

ACEが削除されてACLが空になったときに、そのACLを削除するかどうか

使用上の注意

ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

107.7.14 REMOVE_WALLET_ACEプロシージャ

このプロシージャは、特定のACEに一致するウォレットのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.REMOVE_WALLET_ACE (
   wallet_path        IN VARCHAR2,
   ace                IN XS$ACE_TYPE,
   remove_empty_acl   IN BOOLEAN DEFAULT FALSE);

パラメータ

表107-17 REMOVE_WALLET_ACEファンクションのパラメータ

パラメータ 説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

ACE。

remove_empty_acl

ACEが削除されてACLが空になったときに、そのACLを削除するかどうか

使用上の注意

ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

107.7.15 SET_HOST_ACLプロシージャ

このプロシージャは、データベースからネットワーク・ホストへのアクセスを制御するために、そのホストのアクセス制御リスト(ACL)を設定します。

構文

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

パラメータ

表107-18 SET_HOST_ACLファンクションのパラメータ

パラメータ 説明

host

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

lower_port

オプションのTCPポート範囲の下限です。

upper_port

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

acl

ACL。NULLを指定すると、ホストのACLの設定が解除されます。

使用上の注意

アクセス制御エントリ(ACE)がホストのACLに追加されると、そのホストのACLがオンデマンドで作成および設定されます。ホストのACLは手動で設定しないことをお薦めします。

107.7.16 SET_WALLET_ACLプロシージャ

このプロシージャは、データベースからウォレットへのアクセスを制御するために、そのウォレットのアクセス制御リスト(ACL)を設定します。

構文

DBMS_NETWORK_ACL_ADMIN.SET_WALLET_ACL (
   wallet_path    IN VARCHAR2,
   acl            IN VARCHAR2);

パラメータ

表107-19 SET_WALLET_ACLファンクションのパラメータ

パラメータ 説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

acl

ACL。NULLを指定すると、ホストのACLの設定が解除されます。

使用上の注意

アクセス制御エントリ(ACE)がウォレットのACLに追加されると、そのウォレットのACLがオンデマンドで作成および設定されます。ウォレットのACLは手動で設定しないことをお薦めします。

107.7.17 UNASSIGN_ACLプロシージャ

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

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

構文

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);

パラメータ

表107-20 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.example.com',
     lower_port  => 80);
END;

107.7.18 UNASSIGN_WALLET_ACLプロシージャ

この推奨されないプロシージャは、Walletに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

注意:

Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

構文

UTL_HTTP.UNASSIGN_WALLET_ACL (
   acl          IN  VARCHAR2 DEFAULT NULL,
   wallet_path  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表107-21 UNASSIGN_WALLET_ACLプロシージャのパラメータ

パラメータ 説明

acl

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

wallet_path

ACLの割当て先のWalletのディレクトリ・パス。このパスは大文字と小文字が区別され、形式はfile:directory-pathです。aclwallet_pathの両方がNULLの場合、Walletに割り当てられているACLのすべての割当てが解除されます。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.UNASSIGN_WALLET_ACL(
    acl         => 'wallet-acl.xml', 
    wallet_path => 'file:/example/wallets/test_wallet');
END;