Oracle Proxy 简介
Oracle Proxy是指,直接对Oracle数据库进行访问的客户端被代理了,由代理服务器与Oracle交互。在一些应用场景中,我们需要将应用与数据库隔离开来,以保证应用的高可用和安全性。Oracle Proxy正是可以满足这种需求的工具。下面,我将为大家详细介绍Oracle Proxy的使用方法和原理。
Oracle Proxy 原理
Oracle Proxy的基本原理是通过监听端口,将请求重定向到Oracle实例;将传入的连接信息转发到另一个的目标,来代理链接。Oracle鉴权机制首先会验证Proxy user,然后来连接到真实数据库。这种代理方式可以方便的重新分配、并发、隔离角色存取等等。在下面的例子中,我们可以通过Oracle Proxy将客户端访问的sysdba权限与普通用户权限隔离开来。
string = "CONNECT %s@%s AS " % (username, service_name)
conn = cx_Oracle.connect(proxy_username, userpwd, string, mode=cx_Oracle.SYSDBA)
Oracle Proxy 用途
Oracle Proxy的应用场景很多,以下是一些常用的场景:
- 隔离Oracle账号密码:将密码隔离,只保留少数人掌握,保证账号密码的安全性。
- 监控Oracle连接统计信息:通过Proxy可以获得实时的连接信息,及时排查问题。
- 控制Oracle用户权限:Oracle Proxy 可以限制用户的特定操作,避免用户对数据库造成过多的安全风险。
Oracle Proxy 操作步骤
操作步骤如下:
- 安装Oracle Client
- 创建Proxy User
- 授权给Proxy User
- 配置Oracle Proxy Listener
- 启动Oracle Proxy服务
#!/bin/bash
if [ $# -ne 1 ];then
echo "Usage:$0 listener_name"
exit 1;
fi
# Listener name
LISTENER_NAME=$1
# Login user for the real database
true DATABASE_USER=ora_user
# Proxy user
PROXY_USER=proxy_user
# Password
PASSWORD=password
# Create proxy_connect_identifier
DB_UNIQUE_NAME="localhost"
# Connection pool size
POOL_SIZE=10
# Oracle Proxy configuration
wxtp -setrouter ${LISTENER_NAME} -connecttype Basic \
-pooling ${POOL_SIZE} -user ${PROXY_USER}/${PASSWORD}@${DB_UNIQUE_NAME} \
-defaultuser ${DATABASE_USER} \
-logdir /tmp/ora_proxy
Oracle Proxy 配置示例
下面是一个简单的Oracle Proxy部署示例:
- 主机名:localhost
- 真实数据库使用者:ora_user
- 代理数据资料库使用者:proxy_user
- 代理数据库的用户名/密码:proxy_user/password
- 代理连接的身份标识(ID):localhost.prod.oracle.com
PROXY_USER=proxy_user
PASSWORD=password
DB_UNIQUE_NAME="localhost"
# Create proxy
wxtp -setrouter my_listener -connecttype Basic \
-pooling 10 -user ${PROXY_USER}/${PASSWORD}@${DB_UNIQUE_NAME} \
-defaultuser ora_user \
-logdir /tmp/ora_proxy
Oracle Proxy 总结
Oracle Proxy提供了一种隔离Oracle账号、监控Oracle连接信息、控制Oracle用户权限的解决方案,可以满足现代企业应用系统的需求。大家在进行Oracle Proxy 的使用和配置时要注意鉴权机制、端口监听、身份标识、默认用户等方面的问题。希望大家在使用Oracle Proxy时可以充分发挥它的优势,使企业应用系统更加稳定、更加安全。