【问题标题】:What Role or Scopes Does An Azure Service Principal Need to Create ApplicationsAzure 服务主体需要什么角色或范围来创建应用程序
【发布时间】:2022-02-25 20:20:39
【问题描述】:

我目前使用 Azure CLI 创建服务主体:

az ad sp create-for-rbac --name foo --role Contributor

我需要服务主体拥有足够的权限来创建/修改/删除各种 Azure AD 资源,包括应用程序、其他服务主体和服务主体密码。当我使用上述服务主体创建其他服务主体时,我目前收到 403 Forbidden 错误。

我也尝试过使用“所有者”和“用户访问管理员”角色,但这些角色仍然给我一个 403 错误。我需要向上述 Azure CLI 命令添加什么或需要添加哪些额外的角色分配?

我想通过他们的 Azure AD 提供程序(基于 Terraform 的 Azure AD 提供程序)在 Pulumi 程序中使用服务主体。见:

https://github.com/pulumi/pulumi-azuread/issues/246

【问题讨论】:

    标签: azure azure-active-directory terraform pulumi azure-service-principal


    【解决方案1】:

    为了让服务主体能够管理应用程序,它需要 API 权限。没有范围之类的东西,因为 API 权限是针对 Azure AD API 的。范围仅在与资源管理器 API 相关时才适用。这些不是一回事。

    当您在 Azure AD 中进行应用程序注册时,您可以找到该应用程序,这也是您可以分配 API 权限并授予同意的地方。 您将在 Azure Active Directory Graph 或 Microsoft Graph 上执行此操作。根据我的经验,只有分配给 Azure Active Directory Graph 的权限才有效。

    Application.ReadWrite.All 应用 读写所有应用程序

    Application.ReadWrite.OwnedBy 应用 管理此应用创建或拥有的应用

    您将找到可以使用的这两个应用程序权限。第一个您可以使用管理所有应用程序。

    您使用的 az cli 命令用于创建角色分配。这是订阅上的 RBAC,除了服务主体是 AAD 资源之外,它与 Azure AD 无关。

    【讨论】:

    【解决方案2】:

    您需要添加此服务主体的范围,并将此服务主体的 Azure 角色更改为 “用户访问管理员”,以便您可以修改 Azure AD 中的资源。此外,“用户访问管理员” 角色将为服务主体提供该 Azure 角色分配 RBAC 权限所需的权限。详情请参考以下命令:-

      az ad sp create-for-rbac --name foo --role User Access Administrator --scopes /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup1}
    

    此外,请确保您用于创建此服务主体并向其分配角色的用户 ID 具有在 Azure AD 中注册和创建应用程序的权限。如果没有,请分配该 ID '应用程序管理员' Azure AD 角色,否则即使您是 '用户',管理员也应该允许您创建和注册应用程序。

    【讨论】:

    • User Access Administrator 角色似乎没有提供正确的权限,并且在使用上面的 --role 参数时Application Administrator 不存在。
    • 我建议您在上述命令中提及“用户访问管理员”作为角色,并为执行此命令的用户 ID 提供“应用程序管理员”Azure AD 角色并尝试.
    • 我似乎仍然得到 403,所以我认为这不是正确的角色。
    • 您是订阅所有者吗?如果是,那么请在 powershell 中使用这些凭据执行我声明的给定命令。由于您正在为服务主体分配“管理员”级别的角色分配,因此您应该拥有更高的权限来将该角色分配给相关的服务主体。
    • 该命令似乎仍然没有给我足够的权限。除非我用来部署 Azure 资源的 Pulumi 有问题。请参阅github.com/pulumi/pulumi-azuread/issues/246 了解更多信息。
    【解决方案3】:

    您需要授予服务主体“应用管理员”权限。这允许您创建应用程序注册并设置其凭据。而且它没有赋予它做任何其他事情的权利,例如管理用户和组。如果您的意图是包含这些,则需要向服务主体添加其他角色。

    https://docs.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator

    【讨论】:

    • 如何在上面的 Azure CLI 命令中设置这些?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2020-01-31
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    相关资源
    最近更新 更多