oracle添加ACL(访问控制表)的步骤
一、新增
步骤 1: 创建 ACL 文件并授予权限
首先,我们创建一个新的 ACL 文件,并允许 INFODBA用户访问外部 HTTP 服务。
BEGIN
-- 创建一个新的ACL,允许bakmes用户进行网络访问
DBMS_NETWORK_ACL_ADMIN.create_acl(
acl => 'http_acl.xml', -- ACL 文件名
description => 'ACL for HTTP access for INFODBA', -- 描述
principal => 'INFODBA', -- 用户名
is_grant => TRUE, -- 是否授予权限
privilege => 'connect' -- 权限类型
);
END;
步骤 2: 为目标主机分配网络访问权限
接下来,您需要为目标主机(xxx.xxx.xxxx)的指定端口(8655)分配访问权限。
BEGIN
-- 为指定的主机(10.68.240.218)和端口(8655)授予访问权限
DBMS_NETWORK_ACL_ADMIN.assign_acl(
acl => 'http_acl.xml', -- 使用前面创建的ACL
host => 'xxx.xxx.xxxx', -- 目标IP地址
lower_port => 8655, -- 端口号(开始)
upper_port => 8655 -- 端口号(结束)
);
END;
/
步骤 3: 确认 ACL 配置是否正确
使用以下查询来查看当前的网络访问控制列表(ACL)配置,确认配置已经生效:
SELECT * FROM dba_network_acls;
步骤 4: 测试 HTTP 请求
完成上述配置后,可以使用以下 SQL 来测试 bakmes 用户是否可以成功通过 UTL_HTTP 发起 HTTP 请求:
SELECT utl_http.request('http://xxx.xxx.xxxx:8655')
FROM dual;
如果配置成功,应该能够正常返回 HTTP 请求的响应内容。
二、修改
步骤 1: 如果需要修改或删除 ACL 配置
如果您需要修改或删除已配置的 ACL,可以使用以下步骤。
修改 ACL
如果需要修改已存在的 ACL,可以先删除相关权限,然后重新分配权限。
BEGIN
-- 删除指定的权限
DBMS_NETWORK_ACL_ADMIN.remove_privilege(
acl => 'http_acl.xml',
principal => 'INFODBA',
privilege => 'connect'
);
-- 重新添加新的权限,若需要
DBMS_NETWORK_ACL_ADMIN.add_privilege(
acl => 'http_acl.xml',
principal => 'INFODBA',
is_grant => TRUE,
privilege => 'connect'
);
END;
/
删除 ACL
如果您需要删除不再需要的 ACL 文件,可以使用以下命令:
BEGIN DBMS_NETWORK_ACL_ADMIN.drop_acl('http_acl.xml'); END;
总结
通过上述步骤,您为用户 bakmes 配置了访问控制列表(ACL),允许其通过 UTL_HTTP 请求 xxx.xxx.xxxx:8655。这包括创建 ACL 文件、授予权限、分配主机和端口的访问权限以及验证配置是否生效。

浙公网安备 33010602011771号