109 DBMS_NETWORK_ACL_UTILITY
DBMS_NETWORK_ACL_UTILITYパッケージは、ネットワーク・ホストへのTCP接続を制御するアクセス制御リスト(ACL)の割当てを評価するためのユーティリティ・ファンクションを提供します。
参照:
詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。
この章の内容は次のとおりです。
109.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_portがNULLの場合)。このため、例ではlower_portおよびupper_port列はこの問合せに含まれていません。
関連項目
109.3 DBMS_NETWORK_ACL_UTILITYサブプログラムの要約
この表では、DBMS_NETWORK_ACL_UTILITYパッケージのサブプログラムをリストし、簡単に説明します。
表109-1 DBMS_NETWORK_ACL_UTILITYパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。 |
|
|
特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。 |
|
|
このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するために使用されるACLが割り当てられているドメインを戻します。 |
|
|
2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。 |
109.3.1 CONTAINS_HOSTファンクション
このファンクションは、特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。ホストまたはドメインの評価時にドメイン名解決は実行されません。
構文
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST ( host IN VARCHAR2, domain IN VARCHAR2) RETURN NUMBER;
パラメータ
表109-2 CONTAINS_HOSTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ネットワーク・ホスト |
|
|
ネットワーク・ホスト、ドメインまたはサブネット |
戻り値
特定のホストが、関連するホスト、ドメインまたはサブネットと等しいか、これらに含まれている場合は、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 8109.3.2 DOMAIN_LEVELファンクション
このファンクションは、特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。
構文
DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL (
host IN VARCHAR2)
RETURN NUMBER;パラメータ
表109-3 DOMAIN_LEVELファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ネットワーク・ホスト、ドメインまたはサブネット |
戻り値
特定のホスト、ドメインまたはサブネットのドメイン・レベル。
使用上のノート
このファンクションは、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 2109.3.3 DOMAINSファンクション
このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するACLが割り当てられているドメインを戻します。ホストのIPアドレスが指定されている場合は、かわりにサブネットを戻します。
構文
DBMS_NETWORK_ACL_UTILITY.DOMAINS (
host IN VARCHAR2)
RETURN DOMAIN_TABLE PIPELINED;パラメータ
表109-4 DOMAINSファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ネットワーク・ホスト |
戻り値
特定のホストのドメインまたはサブネット。
使用上のノート
このファンクションは、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
*109.3.4 EQUALS_HOSTファンクション
このファンクションは、2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。2つのホストまたはドメインの比較時にドメイン名解決は実行されません。
構文
DBMS_NETWORK_ACL_UTILITY.EQUALS_HOST ( host1 IN VARCHAR2, host2 IN VARCHAR2) RETURN NUMBER;
パラメータ
表109-5 EQUALS_HOSTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
比較対象のネットワーク・ホスト、ドメインまたはサブネット |
|
|
比較対象のネットワーク・ホスト、ドメインまたはサブネット |
戻り値
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