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 8
109.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 2
109.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