web-dev-qa-db-ja.com

Oracle:Oracle 11のHTTP ACLにユーザーを追加するにはどうすればよいですか?

ユーザーをネットワークACL(アクセス制御リスト)に追加するにはどうすればよいですか?

このコードを実行すると

declare
    req utl_http.req;
begin
    req := utl_http.begin_request('http://example.com');
end;

このエラーが表示されます。

ORA-24247: network access denied by access control list (ACL)
2
Mark Harrison

まず、HTTPポートであるポート80のACLがあるかどうかを確認します。そうすると、次のようになります。

select * from dba_network_acls;

Host     LOWER_PORT UPPER_PORT ACL                     ACLID                                                                                                                                                                                                
---      ---------- ---------- ---                     -----
*        80         80         /sys/acls/www.xml       1FBEC09C32D78F5AE05335D6488A7883                                                                                                                                                         

再作成する必要がある場合は、次のコマンドで削除できます。

dbms_network_acl_admin.drop_acl('www.xml');

ACLを作成します。

 dbms_network_acl_admin.create_acl(
     acl => 'www.xml',
     description => 'WWW ACL',
     principal => 'SCOTT',
     is_grant => true,
     privilege => 'connect'
 );

ホストとポートをACLに割り当てます。

 dbms_network_acl_admin.assign_acl(
     acl => 'www.xml',
     Host => '*',
     lower_port => 80
 );

ACLにユーザーを追加します。

 dbms_network_acl_admin.add_privilege(
     acl => 'www.xml',
     principal => 'OE',
     is_grant => true,
     privilege => 'connect'
 );

バージョンに関する注意:kevinsky は、これがOracle 11に該当するが、Oracle 12で変更されたことを指摘しています。

2
Mark Harrison