Database 如何将访问oracle数据库的ip地址列为白名单

Database 如何将访问oracle数据库的ip地址列为白名单,database,oracle,security,networking,whitelist,Database,Oracle,Security,Networking,Whitelist,我是oracle数据库的新手。我在linux平台上运行12c版本的oracle数据库。为了访问oracle数据库,我必须列出ip地址的白名单 示例:以下是服务器详细信息,我需要添加我的IP地址才能连接到数据库 (PROTOCOL = TCP)(HOST = 192.168.56.122) (PORT = 1521) kishan 192.108.10.132 xyz@gmail.com 我看了这些文件,但没有多大帮助。任何帮助都将不胜感激 看起来您正在寻找ACL(访问控制列表)。下面

我是oracle数据库的新手。我在linux平台上运行12c版本的oracle数据库。为了访问oracle数据库,我必须列出ip地址的白名单

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

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


kishan 192.108.10.132 xyz@gmail.com  
我看了这些文件,但没有多大帮助。任何帮助都将不胜感激


看起来您正在寻找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
。如果有其他用户应该获得相同的访问权限,只需将其添加到“添加权限”脚本中。

看起来您正在查找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
。如果有其他用户应该获得相同的访问权限,只需将其添加到“添加权限”脚本中。

acl如@Littlefoot所述,控制从数据库内部访问外部资源(例如,访问web服务或电子邮件服务器的PL/SQL存储过程)。如果您正在谈论白名单数据库客户机,从其他主机连接到数据库,那么有两种选择,但请注意不要在管理开销方面陷入困境。考虑你正在试图解决的实际问题是非常重要的。

你可以用

  • 主机服务器的本地防火墙(例如iptables、firewall1等),以限制对端口1521(或您正在使用的任何端口)的访问
  • sqlnet.ora中的TCP.u NODES参数(请参见此处:)
  • 如果您有Enterprise Edition数据库,请使用Oracle Connection Manager
  • 不过,一般来说,我不会限制在比子网更窄的范围内。原因是没有更好的方法可以更精确地做到这一点:IP地址往往会随着DHCP而频繁更改,这可能会导致用户被无意中锁定,并且很容易被坏人欺骗。跟踪每个IP也是一场管理噩梦

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


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

    你可以用

  • 主机服务器的本地防火墙(例如iptables、firewall1等),以限制对端口1521(或您正在使用的任何端口)的访问
  • sqlnet.ora中的TCP.u NODES参数(请参见此处:)
  • 如果您有Enterprise Edition数据库,请使用Oracle Connection Manager
  • 不过,一般来说,我不会限制在比子网更窄的范围内。原因是没有更好的方法可以更精确地做到这一点:IP地址往往会随着DHCP而频繁更改,这可能会导致用户被无意中锁定,并且很容易被坏人欺骗。跟踪每个IP也是一场管理噩梦

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


    有没有其他方法可以将ACL以外的ip地址列入白名单?据我所知,没有。除非您想降级到Oracle数据库版本10g。有没有其他方法可以将ACL以外的ip地址列入白名单?据我所知,没有。除非您想降级到Oracle数据库版本10g。