如何将ip地址列入白名单以访问oracle数据库

How to whitelist ip address to access oracle database

我是 oracle 数据库的新手。我在 linux 平台上托管的 12c 版 oracle 数据库上工作。我必须将 IP 地址列表列入白名单才能访问 oracle 数据库。

示例:以下是服务器详细信息,我需要添加我的 IP 地址才能连接到数据库

(PROTOCOL = TCP)(HOST = 192.168.56.122) (PORT = 1521)


kishan 192.108.10.132 xyz@gmail.com  

我已经阅读了这些文档,但没有太大帮助。任何帮助将不胜感激!

https://docs.oracle.com/en/cloud/paas/casb-cloud/palug/putting-ip-addresses-blacklists-or-whitelists.html#GUID-17060E3D-D8B6-41F1-AAEB-9CC3F4D7B670

https://docs.oracle.com/en/cloud/paas/exadata-express-cloud/csdbp/configure-ip-whitelist-policy.html

您似乎在寻找 ACL(访问控制列表)。这是一个例子:

创建 ACL:

BEGIN
   DBMS_NETWORK_ACL_ADMIN.create_acl (
      acl          => 'kishan.xml',
      description  => 'HTTP Access',
      principal    => 'KISHAN',        -- user in your database
      is_grant     => TRUE,
      privilege    => 'connect',
      start_date   => NULL,
      end_date     => NULL);
END;
/

分配 ACL:

BEGIN
   DBMS_NETWORK_ACL_ADMIN.assign_acl (acl         => 'kishan.xml',
                                      HOST        => '192.108.10.132',
                                      lower_port  => NULL,
                                      upper_port  => NULL);
END;
/

添加权限

BEGIN
   -- TRAFOGLED
   DBMS_NETWORK_ACL_ADMIN.add_privilege (acl         => 'kishan.xml',
                                         principal   => 'KISHAN',
                                         is_grant    => TRUE,
                                         privilege   => 'connect',
                                         start_date  => NULL,
                                         end_date    => NULL);

   DBMS_NETWORK_ACL_ADMIN.add_privilege (acl         => 'kishan.xml',
                                         principal   => 'KISHAN',
                                         is_grant    => TRUE,
                                         privilege   => 'resolve',
                                         start_date  => NULL,
                                         end_date    => NULL);
END;
/

COMMIT;

完成所有这些后,用户 KISHAN 应该可以访问 192.108.10.132。如果有其他用户应该获得相同的访问权限,只需将他们添加到“添加权限”脚本中即可。

@Littlefoot 描述的 ACL 控制从数据库内部到外部资源的访问(例如,PL/SQL 存储过程访问 Web 服务或电子邮件服务器)。如果您正在谈论将数据库 客户端 列入白名单,从其他主机连接到数据库,则有几个选项,但请注意不要在管理开销方面陷入困境.考虑您要解决的实际问题是什么非常重要。

您可以使用

  1. 主机服务器的本地防火墙(例如 iptables、firewall1 等)以限制对端口 1521(或您正在使用的任何端口)的访问;
  2. sqlnet.ora 中的 TCP.INVITED_NODES 参数(参见此处:https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-897ABB80-64FE-4F13-9F8C-99361BB4465C);
  3. 如果您有企业版数据库,则使用 Oracle Connection Manager。

不过,一般来说,我不会将范围限制在比子网更窄的范围内。原因是没有任何好的方法可以更精确地做到这一点:IP 地址往往会随着 DHCP 频繁更改,这可能会导致用户无意中被锁定,并且他们很容易被不良行为者欺骗。跟踪每个单独的 IP 也是管理上的噩梦。

查看我去年写的这些文章,了解更多细节和一些需要考虑的重要问题: