有一个网络,该网络有一个可供所有人使用的服务器和 Oracle 数据库。
我想确保只有一个特定的技术用户可以从这个服务器连接。不应限制来自其他服务器的连接。
您可能可以在 Logon 上编写一个触发器,如果连接了错误的会话,它将拒绝来自指定服务器的所有会话。乌兹 然而,这看起来是一个糟糕的解决方案。
也许甲骨文有某种安全设置或其他允许连接有机的东西?
有一个网络,该网络有一个可供所有人使用的服务器和 Oracle 数据库。
我想确保只有一个特定的技术用户可以从这个服务器连接。不应限制来自其他服务器的连接。
您可能可以在 Logon 上编写一个触发器,如果连接了错误的会话,它将拒绝来自指定服务器的所有会话。乌兹 然而,这看起来是一个糟糕的解决方案。
也许甲骨文有某种安全设置或其他允许连接有机的东西?
简要提醒一下如果使用数据库用户名执行命令会发生什么
connect。首先,通过Oracle Net建立网络连接(会话)。通过这个连接,客户端和数据库之间的所有进一步通信都发生了。
客户端向数据库发送用户授权请求,在此基础上创建新的数据库会话。
第一步,可以仅在协议级别限制访问:IP、主机名、可用的数据库服务。但是你不能以任何方式通过用户名来限制它,因为在这一步它仍然是未知的。
由此可见,在数据库的服务器端,只有当用户通过登录触发器获得授权(步骤二)时才可以进行限制。例如:
尝试从具有给定 IP 的主机连接将被拒绝:
最好的替代解决方案可能是:通过操作系统和应用程序本身对应用程序服务器端的数据库连接引入限制。
在受限会话模式下,只有具有受限会话权限的用户才能连接数据库,其他普通用户无法连接数据库,除非我们关闭受限会话模式。
已经连接的用户可以执行他们的 DML/DDL 操作,但不会为用户创建新会话。
具有 sysdba 权限的用户可以启用该模式:
检查哪些用户启用了会话限制模式:
将权限分配给技术用户:
取消有限会话的权利:
关闭受限会话模式: