2021年5月25日火曜日

APEXのアップグレードで忘れがちなネットワークACLの設定

 Oracle APEXのバージョンアップの際に忘れがちな作業なので、メモを残しておきます。

現在利用中のOracle APEXのバージョンが19.2であれば、スキーマはAPEX_190200になります。そのスキーマで許可されているネットワークACLを確認します。check_privilege_aclidのの引数のprivilegeとしてはconnectとresolveを選べますが、大抵はconnectだと思います。setやcolは出力を見やすくするために含めています。

set pages 1000 lines 120 trims on trimo on
col host format a40
col acl format a60
col privilege format a10
select host, acl,
decode(dbms_network_acl_admin.check_privilege_aclid(aclid, 'APEX_190200','connect'), 1, 'GRANTED', 0, 'DENIED', NULL) privilege
from dba_network_acls;
SYSで接続して上記をコピペして実行すると、以下の結果になりました。

SQL> set pages 1000 lines 120 trims on trimo on

col host format a40

col acl format a60

col privilege format a10

select host, acl,

decode(dbms_network_acl_admin.check_privilege_aclid(aclid, 'APEX_190200','connect'), 1, 'GRANTED', 0, 'DENIED', NULL) privilege

from dba_network_acls;SQL> SQL> SQL> SQL>   2    3  


HOST ACL       PRIVILEGE

---------------------------------------- ------------------------------------------------------------ ----------

elocation.oracle.com /sys/acls/geocoder.xml       GRANTED

localhost /sys/acls/local-access-users.xml       GRANTED

raw.githubusercontent.com /sys/acls/github.xml       GRANTED

* NETWORK_ACL_787D0D2B97286933E0530CAAE80A12FB


SQL> 


新しいバージョンのAPEXがインストール済みであるとします。バージョンが21.1であれば、APEX_210100です。

プロシージャDBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGEを呼び出して、新しいバージョンのAPEXにもconnect権限を割り当てます。

begin
  dbms_network_acl_admin.add_privilege(acl => '/sys/acls/local-access-users.xml',
                                    principal => 'APEX_210100',
                                    is_grant  => true,
                                    privilege => 'connect');
end;
/
commit;
権限を割り当てたいACLを選んで実行します。ACLを割り当てたら、結果を確認します。スキーマの指定を変更して、最初に実行したSELECT文を実行します。

SQL> select host, acl,decode(dbms_network_acl_admin.check_privilege_aclid(aclid, 'APEX_210100','connect'), 1, 'GRANTED', 0, 'DENIED', NULL) privilege from dba_network_acls;


HOST ACL       PRIVILEGE

---------------------------------------- ------------------------------------------------------------ ----------

elocation.oracle.com /sys/acls/geocoder.xml       GRANTED

localhost /sys/acls/local-access-users.xml       GRANTED

raw.githubusercontent.com /sys/acls/github.xml       GRANTED

* NETWORK_ACL_787D0D2B97286933E0530CAAE80A12FB


SQL> 


以上です。