108 DBMS_NETWORK_ACL_UTILITY

DBMS_NETWORK_ACL_UTILITYパッケージは、ネットワーク・ホストへのTCP接続を制御するアクセス制御リスト(ACL)の割当てを評価するためのユーティリティ・ファンクションを提供します。

参照:

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

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

108.1 DBMS_NETWORK_ACL_UTILITYのセキュリティ・モデル

DBMS_NETWORK_ACL_UTILITYパッケージのEXECUTEは、PUBLICに付与されます。

108.2 DBMS_NETWORK_ACL_UTILITYの例

このパッケージ内のCONTAINS_HOSTファンクションは、ドメインまたはサブネットに特定のホストまたはIPアドレスが含まれているかどうかを示します。

このファンクションを DBMS_NETWORK_ACL_ADMIN パッケージのCHECK_PRIVILEGE_ACLIDファンクションとともに使用して、ネットワーク・ホストにアクセスするユーザーの権限に影響を与える権限の割当てを決定できます。CONTAINS_HOSTファンクションの戻り値は、優先順位に従ってACLの割当て順序を決定するときにも使用できます。

例1

たとえば、SCOTTがwww.hr.example.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 (SELECT host, acl, aclid, lower_port, upper_port,
               DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.hr.example.com', host)
                 precedence
          FROM dba_network_acls)
 WHERE precedence > 0
 ORDER BY precedence DESC, lower_port nulls LAST;


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

例2

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

SELECT host, acl,
  DECODE(
    DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'resolve'),
      1, 'GRANTED', 0, 'DENIED', null) privilege
  FROM (SELECT host, acl, aclid,
               DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.hr.example.com', host)
                 precedence
          FROM dba_network_acls
         WHERE lower_port IS NULL AND upper_port IS NULL)
 WHERE precedence > 0
 ORDER BY precedence DESC;

HOST                   ACL                          PRIVILEGE
---------------------- ---------------------------- ---------
www.hr.example.com     /sys/acls/hr-www.xml         GRANTED
*.hr.example.com       /sys/acls/hr-domain.xml
*.example.com          /sys/acls/corp-domain.xml
 

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

108.3 DBMS_NETWORK_ACL_UTILITYサブプログラムの要約

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

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

サブプログラム 説明

CONTAINS_HOSTファンクション

特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。

DOMAIN_LEVELファンクション

特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。

DOMAINSファンクション

このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するために使用されるACLが割り当てられているドメインを戻します。

EQUALS_HOSTファンクション

2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。

108.3.1 CONTAINS_HOSTファンクション

このファンクションは、特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。ホストまたはドメインの評価時にドメイン名解決は実行されません。

構文

DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST (
   host      IN    VARCHAR2,
   domain    IN    VARCHAR2)
 RETURN NUMBER;

パラメータ

表108-2 CONTAINS_HOSTファンクションのパラメータ

パラメータ 説明

host

ネットワーク・ホスト

domain

ネットワーク・ホスト、ドメインまたはサブネット

戻り値

特定のホストが、関連するホスト、ドメインまたはサブネットと等しいか、これらに含まれている場合は、NULL以外の値を戻します。

  • domainがホスト名の場合は、そのドメインに1を足したレベルを戻します。

  • domainがドメイン名の場合は、そのドメイン・レベルを戻します。

  • domainがIPアドレスまたはサブネットの場合は、IPアドレスまたはサブネットの有効アドレス・ビット数を戻します。

  • ドメインがワイルドカード「*」の場合は、0を戻します。

戻されたNULL以外の値は、ACL割当てのドメインまたはサブネットの優先順位を示します。値が大きいほど優先順位は高くなります。ホストが特定のホスト、ドメインまたはサブネットと等しいか、またはこれらに含まれている場合は、NULLが戻されます。

SELECT host, acl, precedence
  FROM (select host, acl,
               DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('192.0.2.3', host)
                 precedence
          FROM dba_network_acls)
 WHERE precedence > 0
 ORDER BY precedence DESC;

HOST                   ACL                        PRECEDENCE
---------------------- -------------------------- ----------
192.0.2.3              /sys/acls/hr-www.xml               32
::ffff:192.0.2.0/120   /sys/acls/hr-domain.xml            24
::ffff:192.0.0.0/104   /sys/acls/corp-domain.xml           8

108.3.2 DOMAIN_LEVELファンクション

このファンクションは、特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。

構文

DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL (
    host  IN VARCHAR2) 
  RETURN NUMBER;

パラメータ

表108-3 DOMAIN_LEVELファンクションのパラメータ

パラメータ 説明

host

ネットワーク・ホスト、ドメインまたはサブネット

戻り値

特定のホスト、ドメインまたはサブネットのドメイン・レベル。

使用上の注意

このファンクションは、IPv6のアドレスとサブネット、およびCIDR表記法のサブネットは処理できないことに注意してください。

SELECT host, acl, domain_level
  FROM (select host, acl,
               DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) domain_level
          FROM dba_network_acls)
 order by domain_level desc;

HOST                   ACL                          DOMAIN_LEVEL
---------------------- ---------------------------- ------------
www.hr.example.com     /sys/acls/hr-www.xml                    4
*.hr.example.com       /sys/acls/hr-domain.xml                 3
*.example.com          /sys/acls/corp-domain.xml               2

108.3.3 DOMAINSファンクション

このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するACLが割り当てられているドメインを戻します。ホストのIPアドレスが指定されている場合は、かわりにサブネットを戻します。

構文

DBMS_NETWORK_ACL_UTILITY.DOMAINS (
    host  IN VARCHAR2) 
  RETURN DOMAIN_TABLE PIPELINED;

パラメータ

表108-4 DOMAINSファンクションのパラメータ

パラメータ 説明

host

ネットワーク・ホスト

戻り値

特定のホストのドメインまたはサブネット。

使用上の注意

このファンクションは、IPv6アドレスを処理できないことに注意してください。また、IPv4アドレスに任意の数の接頭辞ビットのサブネットを生成することもできません。

select * from table(dbms_network_acl_utility.domains('www.hr.example.com'));
 
DOMAINS
--------------------------
www.hr.example.com
*.hr.example.com
*.example.com
*.com
*

108.3.4 EQUALS_HOSTファンクション

このファンクションは、2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。2つのホストまたはドメインの比較時にドメイン名解決は実行されません。

構文

DBMS_NETWORK_ACL_UTILITY.EQUALS_HOST (
   host1    IN    VARCHAR2,
   host2    IN    VARCHAR2)
 RETURN NUMBER;

パラメータ

表108-5 EQUALS_HOSTファンクションのパラメータ

パラメータ 説明

host1

比較対象のネットワーク・ホスト、ドメインまたはサブネット

host2

比較対象のネットワーク・ホスト、ドメインまたはサブネット

戻り値

2つのホスト、ドメインまたはサブネットが等しい場合は1を戻します。そうでない場合は0(ゼロ)を戻します。

SELECT host, acl
  FROM dba_network_acls
 WHERE DBMS_NETWORK_ACL_UTILITY.EQUALS_HOST('192.0.2.*', host) = 1;
 
HOST                   ACL
---------------------- ----------------------------
::ffff:192.0.2.0/120   /sys/acls/hr-domain.xml