论坛首页 Java企业应用论坛

一个可能的列级权限控制方案讨论

浏览 22920 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-13  
ACL有很多规则组成。每项规则有三个要素:主体(用户),操作的对象(对象,对象的某个属性,或者程序),被授权的操作(读,写,执行等)。

基于行的权限控制也好,基于列的控制权限也好,只是ACL中的操作对象的粒度不同。

在信息安全领域,关于访问控制的理论是很丰富和完备的。但是,现在要完美的实现这些理论却还是很困难的。主要限制就是实现的复杂度以及性能。

所以,根据实际情况,在安全性和性能,复杂度之家折衷考虑吧。
0 请登录后投票
   发表时间:2006-07-14  
引用

需求是 角色1 可对 attr1 进行读操作, 对 attr2 进行写操作, 而 角色2 对 attr1, attr2 都没有读权限.

這用 aop 的觀念實現一點都不難, 否則利用 SessionBean 設定 method-security 應該是最方便的.

........................................................................
另外, 在 directory server 應該有區分 ACL and ACI

aci 的範例

aci: (target=”“ldap:///$rootSuffix”)
  (targetfilter=(!(objectclass=sunServiceComponent)))
  (targetattr != “userPassword||passwordHistory
   ||passwordExpirationTime||passwordExpWarned||passwordRetryCount
  ||retryCountResetTime||accountUnlockTime||passwordAllowChangeTime”)
  (version 3.0; acl “anonymous access rights”;
   allow (read,search,compare)
   userdn = “ldap:///anyone”; )

根據不同 target, 設定相關的 permissions ( allow/deny ) 以及相關人員,

ACL 在同一個 directoy entry 之中, 僅算是 ACI 的屬性,  通常應用在系統的存取權限控制上..
........................................................................

說真的. 我完全不知道為什麼 method security 會扯到 ACL .

引用

ACL一般应用于用户数少(相对于权限)的场景,性能好是它的特点
RBAC一般应用于用户多,权限也多的场景,灵活是其主要解决的问题


最後, ACL 和 RBAC 也沒什麼直接的關係. ACI 可以設定 DN 為 Role...
"ACL一般应用于用户数少, RBAC一般应用于用户多" 真的是蠻奇怪的觀念的 ...

你們回帖的人 有使用過 DS 做過 Access Control 嗎 ?
0 请登录后投票
   发表时间:2006-07-14  
我想这个问题解决本质依赖于数据库
如果使用的是ORACLE数据库考虑使用"精细访问控制"看可不可以,这也许比你的要求做的更好,至少在数据库级你是做不到随便查看,修改,和删除数据了,这得看你如何根据角色来制定策略了.说的对与不对只能作为参考.
我曾经做过这样的东西:根据用户角色,什么样角色可以访问数据库中的什么记录.什么样的角色可以对它进行修改,插入数据(这依赖数据库中指定的策略了).这个都可以做到行级的访问控制了.我目前只知道ORACLE可以做到.其他的不了解.SQL server应该不能这样!呵呵!
0 请登录后投票
   发表时间:2006-07-14  
引用
你們回帖的人 有使用過 DS 做過 Access Control 嗎 ?

老兄,你从哪个星系过来的亚,我们有说到DS吗?

引用
这个都可以做到行级的访问控制了.

我还真没听说过Oracle可以做到一个表中某几行可以由某人修改,另外几行又只能只读什么的,能说清楚点么?

回到楼主的问题:
引用
1. 如何拦截 <ww:> 标签的访问 ?
2. 只在 ui 上控制是否足够安全? 如果需要后台控制, 觉得难度工作量更大.

1.为什么不采取安全标签来控制而要拦截 标签访问?
2.前台要控制,后台视安全要求了来决定,仅仅在一两个地方做权限的特殊控制问题不大,难的是整个权限系统设计通用,概念一致,简单,还要容易管理.
0 请登录后投票
   发表时间:2006-07-14  
现在一般的Web应用,由于使用Connection Pool,一般数据库用户都使用的同一个。所以依赖数据库的访问控制机制是不行的。

普遍的,全面的属性级访问控制是否有必要?象ACEGI的话也只是支持对象级的访问控制。
0 请登录后投票
   发表时间:2006-07-15  
wolfsquare 写道
引用
你們回帖的人 有使用過 DS 做過 Access Control 嗎 ?

老兄,你从哪个星系过来的亚,我们有说到DS吗?


喔 ~ 我只是好奇問問.. 沒有挑釁的意思

因為 討論到 Access Control 的彈性與複雜性 最好還是以 Directory Server 有繼承性的關係會比在資料庫中容易的多..
0 请登录后投票
   发表时间:2006-07-15  
DS也有适用场景的,在需要使用权限做大量过滤时候就只好抓瞎了,不如SQL连接来得干脆。
0 请登录后投票
   发表时间:2006-07-15  
Feiing 写道

public class DomainObject {
   private String attr1;
   private String attr2;
}


需求是 角色1 可对 attr1  进行读操作, 对 attr2 进行写操作,  而 角色2  对 attr1, attr2 都没有读权限.

我到是不建议把这些放到web层处理,应该放到logic层。
public class Field{
    private String name;
    private  Object value;
    private type class;
    private isRead;
    private isWrite;
    private String role;
}

public class DomainObject  implment IDomain{
   private Field attr1;
   private Field attr2;
}

如果配置什么的看编程技巧了,我是把这些业务表的列都生成xml,角色和表列的关系也在xml中,启动web服务器时把没个角色 规则实例化成 一个java对象,如果修改角色,只要修改内存中java对象和xml就可以了。
经过实践,比放数据库中简单。
0 请登录后投票
   发表时间:2006-07-15  
wolfsquare 写道


引用
这个都可以做到行级的访问控制了.

我还真没听说过Oracle可以做到一个表中某几行可以由某人修改,另外几行又只能只读什么的,能说清楚点么?


Oracle高级安全特性中有个"精细存取控制",这是我在<Oracle专家高级编程>中学得,并在实际项目中用到.
Oracle标准版是没有这个特性地!只有企业版的才有!当然标准版了可以通过一个小巧门可以做到.
比较有意思的东西!!!
0 请登录后投票
   发表时间:2006-07-15  
引用
如果配置什么的看编程技巧了,我是把这些业务表的列都生成xml,角色和表列的关系也在xml中,启动web服务器时把没个角色 规则实例化成 一个java对象,如果修改角色,只要修改内存中java对象和xml就可以了。
经过实践,比放数据库中简单。

这种方式对维护者就是恶梦啊。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics