返回 Oracle 数据库安全性主页

代理验证

Oracle 代理验证在 Oracle8i 中首次推出,旨在为应用程序开发人员在设计多层体系结构时提供更多的灵活性。由于能够满足基于 Internet 的应用程序的伸缩性需求,多层体系结构在二十世纪九十年代开始流行。它们包含两个组件 — 一个中间层和一个后端数据库。基于 Oracle 的多层体系结构包含 Oracle 融合中间件和 Oracle 数据库。目前,很多应用程序仅仅将用户认证到中间层,而中间层则作为一个大用户连接到数据库。只要后端数据库不要求最终用户的身份,该模型就能够起作用。在过去的 5 年中,身份传播对于合规性和整体安全而言已经变得越来越重要。身份传播能够以多种方式实现。

现有的多层应用程序使用的最常见的方法是,通过现有的单个大用户连接将客户端标识符从中间层传递到后端数据库。客户端标识符在 Oracle 数据库 9i 中引入,旨在让应用程序通过现有的胖或瘦 JDBC 连接将标识符从中间层传递到后端数据库。当 Oracle 数据库审计启动后,客户端标识符将被记录到 Oracle 数据库审计线索中。一旦完成初始化,客户端标识符的值可以通过任意 SQL 或 PL/SQL 语句在数据库中进行引用。

  SQL> select sys_context ('userenv', 'client_identifier') from dual;

要通过 OCI 设置 CLIENT_IDENTIFIER 属性,在调用 OCIAttrSet() 时使用 OCI_ATTR_CLIENT_IDENTIFIER 属性。然后,在下次请求服务器时,信息会传播并存储在服务器会话中。例如:

  OCIAttrSet (session,
  
  OCI_HTYPE_SESSION,
  (dvoid *) "appuser1",
  (ub4)strlen("appuser1"),
  OCI_ATTR_CLIENT_IDENTIFIER,
  OCIError *error_handle);

对于使用 JDBC 的应用程序而言,在连接池环境中,客户端标识符可用于识别哪个轻量级用户当前正在使用数据库会话。要为 JDBC 应用程序设置 CLIENT_IDENTIFIER,使用下面的 oracle.jdbc.OracleConnection 接口方法:

  • setClientIdentifier():为连接设置客户端标识符
  • clearClientIdentifier():为连接清除客户端标识符

要了解更多信息,请参考 Oracle 调用接口编程人员指南和 Oracle 数据库 JDBC 开发人员指南及参考手册。

另一种方法是,应用程序可使用传统的代理验证将真实的最终用户验证到后端数据库,然后再代理到单个大用户。该方法可与 Oracle 企业用户安全性结合使用。利用企业用户安全性,可在后端数据库中定义一个共享模式,从而极大地减少 Oracle 数据库用于处理最终用户所需的数据库帐户数量。在 Oracle 数据库 10g 第 2 版之前,Oracle 代理验证只能与胖或瘦 JDBC 连接结合使用。在 Oracle 数据库 10g 第 2 版中,Oracle 引入了命令行代理功能。

命令行代理功能对于在后端服务器上执行批量任务以及作为单个大用户进行连接尤其有用。

  SQL> grant create session to Steve identified by steve_password;
  SQL> grant create session to sales_app_dba identified by sales_app_dba_password;

  SQL> alter user sales_app_dba connect through Steve;

  SQL> connect Steve[sales_app_dba]/steve_password

注意,steve 的口令也可通过外部口令存储特性存储在 Oracle 钱夹中。命令行代理可与外部口令存储一同使用,为保障批量任务提供出色的解决方案。

 
了解更多
· Oracle 示例:数据库安全性

安全选件
· Oracle Database Vault
· Oracle Advanced Security
· Oracle Label Security
· Oracle 安全备份

安全特性
· 数据加密
· 虚拟专用数据库
· 数据库审计
· 备份加密
· 代理验证
· 企业用户安全性
· 安全应用程序角色
· 细粒度审计

相关技术
· Audit Vault
· 安全备份
· 配置管理
· 信息权利管理
· 身份管理

早期版本
· Oracle10g R2 安全性
· Oracle9iR2 安全性
· Oracle9i 安全性

论坛
· Audit Vault
· 安全性
· 数据库
寄送此页面
Printer View 打印机视图