Azure 服务主体需要什么角色或范围来创建应用程序

What Role or Scopes Does An Azure Service Principal Need to Create Applications

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

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

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

我也尝试过使用 'Owner' 和 'User Access Administrator' 角色,但它们仍然给我一个 403 错误。我需要在上面的 Azure CLI 命令中添加什么,或者我需要添加哪些额外的角色分配?

我想将 Pulumi 程序中的服务主体与他们的 Azure AD 提供程序(基于 Terraform 的 Azure AD 提供程序)一起使用。参见:

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

您需要添加此服务主体的范围并将此服务主体的 Azure 角色更改为 'User Access Administrator' 以便您能够修改 Azure AD 中的资源.此外,'User Access Administrator' 角色将为服务主体授予该 Azure 角色分配 RBAC 权限所需的权限。请参考以下命令了解更多详情:-

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

另外,请确保您用来创建此服务主体并为其分配角色的用户 ID 具有在 Azure AD 中注册和创建应用程序的权限。如果不是,请分配该 ID 'Application Administrator' Azure AD 角色,否则即使您是 [=,管理员也应该允许您创建和注册应用程序26=].

您需要授予服务主体“应用管理员”权限。这允许您创建应用程序注册并设置它们的凭据。而且它没有授予它执行任何其他操作(例如管理用户和组)的权利。如果您打算包含这些角色,则需要向服务主体添加其他角色。

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

为了使服务主体能够管理应用程序,它需要 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 无关。