oracle数据库企业人事,Oracle数据库企业用户和角色与Microsoft Active Directory?

我们有一个遗留应用程序,我们可以完全访问运行它的源代码和平台,因此如果需要,几乎可以实现任何更改.

该应用程序是一个Java Swing重量级GUI(桌面),以2层方式通过JDBC直接访问数据库.在应用程序启动时,用户输入他/她的凭证,包括用户和密码.当前的安全架构是:

>使用Oracle Internet Directory 10g(OID)的Oracle数据库10g企业版(迁移到11g).

> Oracle使用Enterprise Users,因此在连接到DB时,连接中提供的用户来自GUI,Oracle验证OID.

>数据库权限通过Enterprise Roles进​​行管理. DB中定义的每个ER映射在OID中定义的组,因此用户对对象(表,过程…)的访问权限由他/她在OID中所属的组控制.

>多个GUI用户可以创建其他用户,因此在OID中创建它们,分配给相应的OID组以授予数据库权限.这是使用OID中对此“超级用户”的特殊Oracle权限来完成的.这是通过GUI使用标准LDAP API而非OID API完成的. GUI用户使用其凭据连接到OID并执行LDAP操作.

这个想法是用Microsoft Active Directory替换OID,因此数据库会根据AD验证用户.根据用户所属的组,还将从AD检索在ER中定义的数据库权限.

假设Oracle DB 11g和MS Windows Server 2008(或必要时的上层版本),这可能吗?

限制/注意事项:

> Oracle通常安装在Linux,RH上.

>不能使用Oracle Virtual Directory,也不能使用任何Identity Management Oracle产品,只能使用Oracle DB Enterprise.

> GUI应用程序在已经在Windows域中使用AD的Windows工作站上执行,可以使用他们的操作系统凭据而不是GUI使用的自定义用户,但这必须使用Java(任何支持的版本)来完成.

> SSL,证书不是首选方式,因为它们需要配置.

>使用MS KDC的Kerberos也不是首选方式.

>使用AD的新安全架构可能会导致安全性降低,但这是可以接受的.

>不希望将第三方产品添加到安全架构中.

> Oracle和Microsoft应支持Oracle DB – MS AD集成.

如果有可能是Oracle-AD解决方案,我们需要具有类似安装经验的人员的一些建议.欢迎提供一些指导和步骤!

解决方法:

我维护的应用程序做了类似的事情,数据库OS独立于大约100个用户,但以更简单的方式.用户通过应用程序进行身份验证并从数据库授权.以下是详细信息:

>用户表,包括他们的电子邮件和启用/禁用状态

>所有AD组的表,其具有特定前缀以指示它们是应用程序组(例如:APP_ADMINS,APP_USERS)

>包含组/用户链接的表

下一部分是同步信息.在我们的组织中,如果添加新用户或更改现有用户的权限,IT会在早上完成工作.该应用程序通常具有一夜之间使用率低的窗口(即:不是一天24小时/使用).

在应用程序Web服务器上,我们有一个Windows服务,它可以同步组和用户.

在晚上的数据库中,我运行一个预定的作业,它截断了组用户链接,并通过使用DBMS_LDAP直接查询到Active Directory来重新创建它们.

出于您的目的,您可能希望编写一个更复杂的包,该包具有运行三个LDAP查询的数据库包,以同步组,用户和组用户,而不是我的截断解决方案.

我发现DBMS_LDAP功能强大但记录不完整.如果IT部门碰巧改变了用户所在的OU,则不会从Oracle端获得大量有用信息.

Tim的网站非常有用,article和here有我重复使用的代码.

编辑:使用应用程序有两个部分:

>你是谁? (身份验证)如果您未提供Active Directory中列出的名称和密码,则不允许您通过登录页面.

>你被允许做什么? (授权)这是权限粒度范围很广的地方.我们仅限于对一部分工作单元的基本操作:读取,更新,分配其他用户,取消分配其他用户.我们的权限不是那么精细,所以它们可以表述为“用户X在此表上选择”.他们可以更好地称为“用户X”

可以更新文件的这一部分,如果他们被分配“.

在某种程度上,这是由应用程序驱动的.它根据需要创建与数据库的池连接.用户登录到应用程序,但作为具有所需权限的共享用户连接到数据库.

进入一个更详细的例子:

用户X登录.他们的用户名和密码与Active Directory中的用户名和密码相匹配.

验证后,它们将被带到主页面.在此期间,应用程序向数据库查询此用户具有的权限,并将其缓存在内存中.

主页面加载每个子工作区域.每个区域都会询问缓存的权限:

– “你有权看到这个区域吗?”如果是这样显示工作区域.

– “你有权编辑这个区域吗?”如果是,则显示编辑/创建链接.

EDIT2:

原始海报评论说

We are trying to replicate the user permissions onto application to DB

permissions onto database objects.

这听起来像是一个方形钉/圆孔问题.您的业​​务逻辑可以定义为此表上的用户X需要选择,但如果您询问用户他们正在使用该应用程序.他们需要能够处理应用程序显示的任何内容.通常将表和视图以及自定义过滤器分组以显示用户在应用程序中需要的内容.这就是为什么某些应用程序发现在应用程序级别更容易实施授权的原因.

您的应用程序需要在Active Directory中复制数据库权限的内容是什么?

标签:linux,oracle,active-directory,authentication,windows

来源: https://codeday.me/bug/20190806/1595274.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部