DBMS_NETWORK_ACL_ADMIN
パッケージは、ネットワークのアクセス制御リスト(ACL)を管理するためのインタフェースを提供します。
関連項目: 詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。 |
この章では、次の項目について説明します。
例1
ホストwww.us.oracle.comに対するconnect権限およびresolve権限をSCOTTに付与します。
BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl => 'www.xml', description => 'WWW ACL', principal => 'SCOTT', is_grant => true, privilege => 'connect'); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'www.xml', principal => 'SCOTT', is_grant => true, privilege => 'resolve'); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'www.xml', host => 'www.us.oracle.com'); END; / COMMIT;
例2
www.us.oracle.comに対するresolve権限をADAMSに付与します。www.us.oracle.comのACLはすでに存在しているため、ADAMSの権限のみを追加します。
BEGIN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'www.xml', principal => 'ADAMS', is_grant => true, privilege => 'resolve'); END; / COMMIT;
例3
ACL www.xmlをwww-proxy.us.oracle.comに割り当て、SCOTTおよびADAMSがwww-proxy.us.oracle.comにもアクセスできるようにします。
BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'www.xml', host => 'www-proxy.us.oracle.com'); END; / COMMIT;
例4
www.us.oracle.comからACLの割当てを解除し、www.us.oracle.comへのアクセスが許可されないようにします。
BEGIN DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL(host => 'www.us.oracle.com'); END; / COMMIT;
例5
DBMS_NETWORK_ACL_UTLILITYパッケージのDOMAINSファンクションは、ホストが属するすべてのドメインを戻します。このファンクションをこのパッケージのCHECK_PRIVILEGE_ACLIDファンクションとともに使用して、ネットワーク・ホストにアクセスするユーザーの権限に影響を与える権限の割当てを決定できます。DBMS_NETWORK_ACL_UTILITYパッケージのDOMAIN_LEVELファンクションは、各ドメインのレベルを戻し、優先順位に従ってACLの割当て順序を決定するときに使用できます。
たとえば、SCOTTがwww.us.oracle.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 dba_network_acls WHERE host IN (SELECT * FROM TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('www.us.oracle.com'))) ORDER BY DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) desc, lower_port, upper_port; HOST LOWER_PORT UPPER_PORT ACL PRIVILEGE -------------------- ---------- ---------- -------------------- --------- www.us.oracle.com 80 80 /sys/acls/www.xml GRANTED www.us.oracle.com 3000 3999 /sys/acls/www.xml GRANTED www.us.oracle.com /sys/acls/www.xml GRANTED *.oracle.com /sys/acls/all.xml * /sys/acls/all.xml
例6
たとえば、SCOTTがwww.us.oracle.comのドメイン名解決を行う権限の場合は、次のとおりです。
SELECT host, acl, DECODE( DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'resolve'), 1, 'GRANTED', 0, 'DENIED', NULL) privilege FROM dba_network_acls WHERE host IN (SELECT * FROM TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('www.us.oracle.com'))) and lower_port IS NULL AND upper_port IS NULL ORDER BY DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) desc; HOST ACL PRIVILEGE -------------------- -------------------- --------- www.us.oracle.com /sys/acls/www.xml GRANTED *.oracle.com /sys/acls/all.xml * /sys/acls/all.xml
resolve
権限は、ポート範囲なしで割り当てられたACL内でのみ有効です(lower_port
およびupper_port
がNULL
の場合)。このため、例ではlower_port
およびupper_port
列はこの問合せに含まれていません。
表94-1 DBMS_NETWORK_ACL_ADMINパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
アクセス制御リスト(ACL)で、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。 |
|
アクセス制御リスト(ACL)をネットワーク・ホストに割り当て、オプションで特定のTCPポート範囲に割り当てます。 |
|
アクセス制御リスト(ACL)をWalletに割り当てます。 |
|
アクセス制御リスト(ACL)で、権限がユーザーに付与または拒否されているかどうかを確認します。 |
|
アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。 |
|
初期権限設定を使用してアクセス制御リスト(ACL)を作成します。 |
|
アクセス制御リスト(ACL)で権限を削除します。 |
|
アクセス制御リスト(ACL)を削除します。 |
|
ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。 |
|
Walletに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。 |
このプロシージャは、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。アクセス制御エントリ(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 );
パラメータ
表94-2 ADD_PRIVILEGEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ACLの名前。相対パスの起点は/sys/aclsとなります。 |
|
権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。 |
|
権限が付与されるか拒否されるかのいずれか。 |
|
付与または拒否されるネットワーク権限。 |
|
ACEの(1ベースの)位置。 |
|
アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。権限が既存のACEに追加される場合、 |
|
アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。 |
このプロシージャは、アクセス制御リスト(ACL)をホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てます。
構文
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);
使用上の注意
ホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てることができるACLは1つだけです。新しいアクセス制御リストをネットワーク・ターゲットに割り当てると、同じターゲットに割り当てられている以前のアクセス制御リストの割当てが解除されます。ただし、アクセス制御リストは削除されません。アクセス制御リストを削除するには、DROP_ACLプロシージャを使用します。アクセス制御リストの割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。
ドメインに割り当てられているACLの優先順位は、サブドメインに割り当てられている他のACLよりも低く、サブドメインに割り当てられているACLの優先順位は、個々のホストに割り当てられているACLよりも低くなります。このため、www.us.oracle.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。
- www.us.oracle.com
- *.us.oracle.com
- *.oracle.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_port
とupper_port
の両方がNULL
ではなく、upper_port
がlower_port
以上である必要があります。ポート範囲は、同じホストですでに割り当てられている他のポート範囲とオーバーラップしないようにする必要があります。
割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。
このプロシージャは、アクセス制御リスト(ACL)をWalletに割り当てます。
例
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:/oracle/wallets/test_wallet'); END;
このファンクションは、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。
構文
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE ( acl IN VARCHAR2, user IN VARCHAR2, privilege IN VARCHAR2) RETURN NUMBER;
このファンクションは、アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。
構文
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID ( aclid IN RAW, user IN VARCHAR2 DEFAULT NULL) privilege IN VARCHAR2, RETURN NUMBER;
このプロシージャは、初期権限設定を使用してアクセス制御リスト(ACL)を作成します。ACLには、少なくとも1つの権限設定がある必要があります。ACLのアクセス制御は、ネットワーク・ターゲットに割り当てられるまで有効になりません。
構文
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 );
パラメータ
表94-7 CREATE_ACLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ACLの名前。相対パスの起点は/sys/aclsとなります。 |
|
ACLの記述属性。 |
|
権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。 |
|
権限が付与されるか拒否されるかのいずれか。 |
|
付与または拒否されるネットワーク権限 - |
|
アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。 |
|
アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。 |
このプロシージャは、アクセス制御リストの権限を削除します。
構文
DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE ( acl IN VARCHAR2, principal IN VARCHAR2, is_grant IN BOOLEAN DEFAULT NULL, privilege IN VARCHAR2 DEFAULT NULL);
このプロシージャは、ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。
構文
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);
パラメータ
表94-10 UNASSIGN_ACLファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ACLの名前。相対パスの起点は/sys/aclsとなります。ACLが |
|
ACLが削除されるホスト。ホストは、ホスト名またはホストのIPアドレスによって指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。hostが |
|
TCPポート範囲の下限( |
|
TCPポート範囲の上限。 |