以编程方式将角色分配给Microsoft AzMan中的作用域?

时间:2009-10-16 15:43:18

标签: windows-server-2003 azman rbac

我在Windows Server 2003上使用AzMan,我编写了一个管理应用程序,完全隐藏了安全团队中的AzMan和MMC。但是,我很难实现MMC中的一个功能。

我有一个名为User的角色,以及一个名为Branch User的角色,它只包含User角色。我想在所有数据(角色分配)级别分配用户角色,在范围级别分配分支用户角色。但是,我无法找到一种方法以编程方式将分支用户角色分配给范围而不会丢失其定义。我可以分配角色(通过在范围上调用CreateRole),但它似乎只是创建一个新的空白角色。当我在MMC中右键单击它时,单击属性,然后单击显示定义,它没有任何内容。

此外,如果我尝试在该IAzRole对象上调用AddTask以向其添加“User”,则它不能按预期工作。它会将用户角色中的所有任务添加到我的分支用户角色,但不会添加角色本身。

有办法做到这一点吗?我无法理解。

1 个答案:

答案 0 :(得分:1)

是的,在WIN2k3上这是正确的方法。不幸的是,在Vista / Win2k8之前的AzMan版本中,角色定义是一个任务,其task.IsRoleDefinition设置为1.它在新版本中有自己的命名类。

基本上CreateRole()正在创建角色分配,而不是角色定义(这不一定需要具有名称“分支用户”,它可以是任何东西)。角色分配包含角色/任务/操作和成员/用户的定义之间的链接。

然后,您使用app.AddTask()将角色“分支用户”添加到角色分配。

要仅对特定范围执行此操作,您需要调用返回IAzScope对象的app.OpenScope(或app.CreateScope,如果是新的)。然后,您可以在scope.CreateTask或scope.CreateRole。

上执行以上所有操作

希望这会有所帮助..