是否可以在运行时创建的对象上使用AzMan进行基于角色的授权?如果是,怎么办呢?
例如:
如果在运行时创建了类“CustomAlert”的对象,我试图看看是否可以为“CustomAlert”类的不同对象设置不同的规则。如果使用特定用户的标识创建对象,则该用户可以使用更多权限,将其视为该对象的CREATOR / OWNER。只有创建者/所有者才能修改对象。
答案 0 :(得分:4)
当然可以使用AzMan。我用这种形式的资源和基于角色的安全性实现了几个应用程序。 AzMan实际上非常灵活,我还实现了资源层次结构(想想Windows文件系统安全性),自定义用户和组以及整个层次结构中角色的完全继承,以及拒绝任何级别操作的能力。为此,您需要了解AzMan Scopes。
AzMan Scopes允许您为特定资源创建单独的角色/操作集。这个资源可以是你选择的任何东西,它只是AzMan的字符串标识符。这些角色/操作是任何应用程序级别分配角色的补充。
我之前实现它的方法是使用对象的id作为范围名称。理想情况下,为了简单起见,这应该是一个GUID(尽管它确实使MMC应用程序非常混乱),但同样可以使用“type-id”格式,即“CustomerAlert-1”(在MMC应用程序中非常友好)。在azman中执行AccessCheck时,将作用域名称传递给AccessCheck(目前只需要一个作用域,即使AccessCheck定义允许使用数组)。
我将通过一个如何做到这一点的例子(对于任何其他人都在努力)......
对于基于对象属性的访问检查(即锁定某些属性的读/写),我可以想到两种方法。首先是在对象范围内为每个属性和访问类型分配操作,即PropertyNameGet, PropertyNameSet,PropertyAddressAdd。您可以通过在应用程序级别创建操作并使用任务/角色对常用权限集进行分组来简化此操作。另一种方法是使用每个属性的范围(CustomerAlert-1-Name),但这样做会很麻烦并且效率不高,因为在访问给定对象时需要单独加载多个范围。
您应该记住,您无法在AzMan中明确拒绝操作,您只是不在应用程序/范围中为用户分配角色。这意味着某些类型的资源层次结构(组/用户)等可能更难以实现。
如果您需要任何有关AzMan的进一步帮助,请随时提问..我已经涵盖了大多数情况。
答案 1 :(得分:0)
Azman支持基于角色的安全性,但它仅基于角色 - 而不是基于ACL。如果某个特定用户已登录,则他们具有基于他们的特定权限,但这些权限只是静态值 - 可以将它们应用于给定类型的所有对象,但不会根据特定属性的具体属性而有所不同。那种类型的实例。