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 文件、授予权限、分配主机和端口的访问权限以及验证配置是否生效。

 

posted @ 2024-12-23 14:13  信铁寒胜  阅读(527)  评论(0)    收藏  举报