重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: oracle添加ACL(访问控制表)的步骤 [打印本页]

作者: mahan    时间: 2026-1-18 19:53
标题: 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 文件、授予权限、分配主机和端口的访问权限以及验证配置是否生效。






欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2