模块在逻辑上是相互分离的。每个模块都拥有一套独有的安全策略,在 Web 服务器上拥有自己的装满其 PHP
应用程序文件的文件夹,并且拥有自己的 GUI
子站点和表集。每个表名以两个表示该表所属模块的字母作为前缀。文件、策略、过程以及其他存储的代码集均遵循一种命名惯例,这种惯例将它们标识为特定模块的一部分。
在某种意义上,模块是相互分离的,但每个模块都嵌入到更大的应用程序中。模块共享相同的导航元素和公用数据,并且全都重用业务逻辑层提供的类。
表 HR_Employee
c1_id c1_emp_category web_emp_photo c2_emp_email ------- ---------------- -------------- ------------ M290171 central staff (blob) james.milton@mcgill.ca C179022 central staff (blob) doris.seagal@mcgill.ca M109022 casual (blob) luke.grande@mcgill.ca C390101 work-study (blob) patrick.roy@mcgill.ca M203400 faculty based staff (blob) mcmaster.philip@mcgill.ca
表和字段的前缀码:
HR — 人力资源模块(每个模块的每个表都有两个字母的前缀) C1 — 中央数据库 1* C2 — 中央数据库 2* WEB — Companion 数据库应用程序*
* 字段的前缀依据其源数据库确定。 由于该应用程序是 companion 数据库, 它同步并使用来自于不同来源的数据, 尤其是来自于主要中央数据库的数据。
|
虽然大部分模块遵守相似的安全结构和原则,但是在项目开始的时候,我们的每个模块都需要有专门针对其需求的安全方案。共同安全原则的一个例子是指导者原则。为每个模块大致分配三位指导者。指导者通常是符合条件的非技术性用户。他们在其模块内拥有完全的管理权限,并可以向其他较低安全级的管理员分配权限。不同安全原则的一个示例是 HR
模块中保密信息原则。当员工访问其保密信息时,他们的行级安全依赖于其实体 ID。但是在大多数其他模块中,他们的行级安全依赖于其工作的职位 ID。
安全性
如果我们的数据非常敏感,则通过传统的基于 cookie
的会话机制在应用程序级上限制访问就不足以保证安全性。对于具有复杂的访问规则并且预期具有庞大流量的数据库而言,在管理行级安全的同时获得良好性能的最佳方法是将大部分安全功能
— 那些用于强化数据限制的特定规则的安全功能 — 转移到数据库级。
通过 VPD
保护数据库引擎级上的数据访问的安全而将访问控制放在了最低级别上,从而确保入侵者的查询工具(能够越过应用程序安全机制)无法获得数据。此外,它为机构提供了更低的拥有成本:在数据服务器上一次性构建安全性,而不用将安全性构建到所有访问数据的应用程序工具中。最后,它集中了数据访问的管理和控制。
Companion 利用了 Oracle
传统的基本角色安全和用户帐户安全功能。更重要的是,它使用了两个功能强大的 VPD 工具:安全应用程序环境和 FGAC。(有关 VPD 的详细说明,参见 otn.oracle.com/deploy/security/oracle9ir2/pdf/VPD9ir2twp.pdf)。使用这四个安全性概念作为框架,让我们来探讨我们的业务模型怎么样与
Oracle 相融合。
基本用户帐户安全。安全性和数据库体系结构是围绕一个每天从中央数据库进行更新的主要名称列表而设计的。这些名称被称为实体而非用户。
Companion 包含两个用户组,工作人员和毕业生。用户组被 Oracle
的基本安全功能看作单个帐户。举例来说,这意味着 3
万个并发用户只共享两个帐户。其他用户(包括某些实体和所有的非实体)无法共享任何帐户,但它们仍然可以访问未加限制的公共数据。(注意:在本文中,用户指访问系统的人,而帐户指 Oracle 基本用户帐户。)如图 3 所示,用户是公共实体和成员的子集。
图 3:用户:包含某些数据库实体和某些公共成员的子集。
那么为什么仅为所有经过验证的用户分配两个共享帐户,而不是分别为每个用户分配一个帐户?因为对许多应用程序安全性的管理,需要依据用户可能赋予这些应用程序的各种属性进行,而非依据用户所拥有的帐户进行。可完成此目标的工具将在以下关于
VPD 的章节中进行探讨。
基本角色安全。当用户通过单击某个链接访问
Companion 应用程序时,从安全性的观点来看,用户是在访问模块。每个模块都与一个 Oracle
安全角色相关联,该角色被分配或被拒绝赋予每个用户帐户。这些安全角色管理表、视图、过程和函数等的对象级安全。基本角色安全只是将广泛的用户权限(选择、插入、执行等)分配给对象,它是建立访问的第一步。特定的用户权限由
FGAC 控制。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 34 5 下一页
上一篇:ORACLE PHP教程--从原型到产品的最短距离
下一篇:可扩展 可伸缩的 Oracle 与 PHP
|