DBMS_NETWORK_ACL_UTILITYパッケージは、ネットワーク・ホストへのTCP接続を制御するアクセス制御リスト(ACL)の割当てを評価するためのユーティリティ・ファンクションを提供します。
|
関連項目: 詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。 |
この章では、次の項目について説明します。
このパッケージ内の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列はこの問合せに含まれていません。
表102-1 DBMS_NETWORK_ACL_UTILITYパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。 |
|
|
特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。 |
|
|
このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するために使用されるACLが割り当てられているドメインを戻します。 |
|
|
2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。 |
このファンクションは、特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。ホストまたはドメインの評価時にドメイン名解決は実行されません。
戻り値
特定のホストが、関連するホスト、ドメインまたはサブネットと等しいか、これらに含まれている場合は、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
このファンクションは、特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。
例
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
このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するACLが割り当てられているドメインを戻します。ホストのIPアドレスが指定されている場合は、かわりにサブネットを戻します。