如何将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/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 服务或电子邮件服务器)。如果您正在谈论将数据库 客户端 列入白名单,从其他主机连接到数据库,则有几个选项,但请注意不要在管理开销方面陷入困境.考虑您要解决的实际问题是什么非常重要。
您可以使用
- 主机服务器的本地防火墙(例如 iptables、firewall1 等)以限制对端口 1521(或您正在使用的任何端口)的访问;
- 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);
- 如果您有企业版数据库,则使用 Oracle Connection Manager。
不过,一般来说,我不会将范围限制在比子网更窄的范围内。原因是没有任何好的方法可以更精确地做到这一点:IP 地址往往会随着 DHCP 频繁更改,这可能会导致用户无意中被锁定,并且他们很容易被不良行为者欺骗。跟踪每个单独的 IP 也是管理上的噩梦。
查看我去年写的这些文章,了解更多细节和一些需要考虑的重要问题:
我是 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/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 服务或电子邮件服务器)。如果您正在谈论将数据库 客户端 列入白名单,从其他主机连接到数据库,则有几个选项,但请注意不要在管理开销方面陷入困境.考虑您要解决的实际问题是什么非常重要。
您可以使用
- 主机服务器的本地防火墙(例如 iptables、firewall1 等)以限制对端口 1521(或您正在使用的任何端口)的访问;
- 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);
- 如果您有企业版数据库,则使用 Oracle Connection Manager。
不过,一般来说,我不会将范围限制在比子网更窄的范围内。原因是没有任何好的方法可以更精确地做到这一点:IP 地址往往会随着 DHCP 频繁更改,这可能会导致用户无意中被锁定,并且他们很容易被不良行为者欺骗。跟踪每个单独的 IP 也是管理上的噩梦。
查看我去年写的这些文章,了解更多细节和一些需要考虑的重要问题: