【问题标题】:Azure AD - Specific roles for sub-projectsAzure AD - 子项目的特定角色
【发布时间】:2017-06-27 05:07:00
【问题描述】:

我希望使用 Azure Active Directory 开发应用程序,主要是因为内置支持 Web API 和跨各种 Azure 工具的轻松身份验证。

我的应用程序将包含多个项目,每个项目都包含多个子项目。涵盖了身份验证后,我现在正在尝试弄清楚如何使用 Azure AD 处理授权。我设想每个子项目 (5-10) 会有不同的角色,每个子项目都会分配给他们。

现在,我知道 AD 支持角色和组。角色是权限集,组是用户集。虽然我可以为每个子项目创建一个组,但我希望某些角色可能会根据每个较大的项目而有所不同,所以我不能只检查给定用户是否被分配到 X 组和Y 角色。更不用说,因为一个用户可以被分配到多个组和角色,我看不到一种方法来指定该角色仅适用于一个组(因为用户可能不打算在所有组)。

所以,我现在看到的唯一前进方式就是在每次创建新项目和特定于每个项目的子项目时创建新角色。然而,随着这些项目和子项目随着时间的推移而被创建和删除,我预计我们将开始达到 AD 支持的角色总数的上限(尤其是在每个用户的基础上)。

在传统的 Active Directory 中,我希望这将通过组织单位来处理,这些组织单位可以代表每个项目和每个子项目,每个项目都有分配的角色和组。但是,根据https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-admin-guide-create-ou 的说法,Azure AD 中不支持组织单位,并且无法通过 AD Graph API 进行分配。

使用 Azure AD,除了此时每个子项目的独特角色之外,还有更好的方法吗?

谢谢!

编辑以获取更多信息:

目前 Azure AD 支持组和角色。假设我有两个项目,A 和 B,每个项目都有两个内部子项目,A1 和 A2,以及 B1 和 B2。此外,我希望将一个用户分配给 A1 上的管理员角色、B2 上的超级用户角色,并且没有访问 B2 或 A1 的权限。

似乎我可以为 A1、A2、B1 和 B2 创建一个组,然后简单地将用户分配到组 A1 和 B2。在后端,我可以指定用户应该在这些组中,并拒绝任何不在的用户访问。

好的,这样就可以处理组访问,但是我想分配角色。我可以授予他们管理员和高级用户,但是他们将在他们所在的两个组中都拥有这两个角色,因为我无法在组的上下文中分配角色。

我能看到的唯一其他方法是为每个组创建不同的角色,所以现在我有“Admin-A1”、“Power User-A1”、“Admin-A2”、“Power User-A2” 、“Admin-B1”、“Power User-B1”、“Admin-B2”和“Power User-B2”,但这会随着时间的推移大大增加我的对象数量(50 个项目,每个项目有 10 个子项目8 个角色将在那里开始工作,尽管 500k 是相当高的门槛)。

我预见到拥有这么多角色会带来可维护性问题。由于我无法将角色与组相关联,并且只能为其指定显示名称和描述(两者都有助于项目所有者在分配它们时查看),您如何建议我在后端识别哪些角色与哪个项目相关联(无需保留我自己的 guid 列表来存储额外的属性)?有没有办法使用角色/组提交自定义属性?

【问题讨论】:

    标签: azure azure-active-directory


    【解决方案1】:

    您正在开发什么样的角色?您指的是应用程序角色吗?

    根据我的理解,我们可以在 Azure 门户上为每个子项目注册一个单独的应用程序,并根据我们注册的每个应用程序自定义角色,并将角色分配给我们想要的用户/组。这个角色应该只适用于应用程序的相应项目。

    有关基于角色管理应用程序的更多详细信息,您可以参考代码示例here

    ,我希望我们将开始达到 AD 支持的角色总数的上限(尤其是在每个用户的基础上)。

    单个用户的角色没有这样的限制。但如果您使用的是免费版 Azure AD,它支持 500,000 个对象。对象是目录服务中的一个条目,由其唯一的专有名称表示。这里有两个有用的链接供您参考:

    Azure AD service limits and restrictions

    Azure Active Directory editions

    【讨论】:

    • 嗨飞,我更新了原始问题以添加一个适用的场景来说明为什么需要这么多单独的角色而不是它们之间的某种属性似乎很奇怪。谢谢!
    • 不确定我理解正确。根据我的理解,您提到的所有子项目似乎都是一个单独的项目。我们可以在 Azure 上注册相应的应用程序,并通过同一租户中的组或角色进行管理,以便所有项目可以共享相同的用户管理。如果我误解了,请随时告诉我。
    • 我的应用程序将有几个不同的功能组件,我理解 Azure AD 结构意味着这些组件中的每一个都是单独的应用程序。然而,在组织层面,每个项目都有一些共性,但被分成不同的团队(子项目)。许多人将同时分配到多个子项目。 Azure AD 似乎不支持像这样的某种嵌套应用程序结构,而且免费的 AD 只允许每个用户拥有 10 个应用程序,与 500k 个对象相比,这将是相当有限的。
    • 演示看起来对实现这一点很有用,但它们只针对单个“组”角色,并暗示我只需要为不同的组设置不同的角色。在他们的示例中,只有一个组,因此无需区分仅适用于某些组的角色。理想情况下,解释我需要做什么才能将角色与给定组相关联的示例会很有用(例如,我是该组中的管理员,但只是该组中的用户),因为我看不到任何方式都有这样的自定义映射。
    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多