您可以拥有多个 Oracle ACL 文件吗?

use*_*653 2 oracle oracle-11g-r2 database-mail

我有一个需要通过 Oracle 触发器发送电子邮件的应用程序。我知道在 Oracle 11g 中,您必须有一个 ACL 文件才能授予某些模式访问网络的权限。我的计划是为每个需要访问网络的用户创建一个单独的 ACL 文件,然后使用以下查询检查它是否已正确创建:

SELECT * FROM DBA_NETWORK_ACLS;
Run Code Online (Sandbox Code Playgroud)

但是,似乎此查询只返回了一条记录 - 始终是创建的最新 ACL。这是否意味着您只能拥有一个 ACL?如果是这样,大概这意味着在客户端的服务器上安装这个应用程序时,我必须只向他们现有的 ACL 添加权限,而不是尝试创建一个新的?

谢谢!

更新

这些是我正在使用的命令:

--create ACL for USER1
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(ACL => 'testacl1.xml', 
                                  DESCRIPTION => 'ACL',
                                  PRINCIPAL   => 'USER1',
                                  IS_GRANT    => TRUE,
                                  PRIVILEGE   => 'connect');
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL => 'testacl1.xml',
                                     PRINCIPAL => 'USER1',  
                                     IS_GRANT  => TRUE,  
                                     PRIVILEGE => 'resolve'); 
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(ACL => 'testacl1.xml', host => '*'); 

--create ACL for USER2
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(ACL => 'testacl2.xml', 
                                  DESCRIPTION => 'ACL',
                                  PRINCIPAL   => 'USER2',
                                  IS_GRANT    => TRUE,
                                  PRIVILEGE   => 'connect');
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL => 'testacl2.xml',
                                     PRINCIPAL => 'USER2',  
                                     IS_GRANT  => TRUE,  
                                     PRIVILEGE => 'resolve'); 
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(ACL => 'testacl2.xml', host => '*');
Run Code Online (Sandbox Code Playgroud)

问题是 testacl2 似乎覆盖了 testacl1。这是否意味着我只能拥有一个 ACL 文件,或者每个主机只能拥有一个 ACL 文件?

Mat*_*Mat 5

检查为外部网络服务创建访问控制列表文档(在参数描述之后查看步骤 2):

只能将一个访问控制列表分配给任何主机、域或 IP 子网,以及 TCP 端口范围(如果已指定)。

你的第二个任务只是取代了第一个。每个主机/域只能有一个 ACL 文件。

  • +1。所以答案是,对标题是肯定的,但不是基于具体情况。 (2认同)