Azure 开发人员用户同意应用访问公司数据

Azure Developer User consent to app accessing company data

我正在与一个禁止用户同意 Azure 应用程序的组织合作。 "Users can consent to apps accessing company data on their behalf" 在 Azure 门户中设置为

我希望开发人员能够在不将上述设置设置为“是”的情况下同意他们在 Azure 中拥有应用程序。 (应用程序需要“登录并读取用户配置文件”委托权限 Azure AD)。

1:唯一的其他方法是将开发人员分配给具有以下权限之一的 Azure AD 角色是否正确:应用程序开发人员、应用程序管理员或云应用程序管理员?

2:我还想在 AzureDevOps 发布 pineline 期间自动执行此过程。目前,发布管道通过 ARM 模板创建所有需要的 Azure 资源。

但是如何在不进入门户的情况下自动执行 应用程序注册? 我如何确保发布管道具有正确的 Azure AD 权限以同意? 我可以强制管道 运行 作为我赋予上述角色的“Azure AD 服务用户吗?

更新 1

似乎可以使用powershell 进行Azure AD 注册。 http://blog.octavie.nl/index.php/2017/09/13/creating-azure-ad-app-registration-with-powershell-part-1

由于 AzureAD 使用 MFA,脚本将在 运行ning 时显示交互式凭据对话框。不确定我们是否可以抑制它。

更新 2

并使用 powershell 同意应用程序。 https://www.mavention.nl/blogs-cat/create-azure-ad-app-registration-with-powershell-part-2/?cn-reloaded=1

更新 3

所以为了自动化整个过程,我在想我们是否可以使用 Azure DevOps 服务连接 在发布管道期间执行这些 powershell 脚本?

不确定 Azure DevOps 服务连接需要什么权限?

它还应该禁止 MFA 凭据对话框。

Is it correct that the only other way is the assign the developers to one of the Azure AD roles that has this permission: Application Developer, Application Administrator or Cloud Application Administrator?

这取决于应用请求的权限,以及您希望开发人员同意谁(他们自己或整个组织):

  • Application Developer 目录角色的成员只能同意委派的权限(不是应用程序权限),并且只能代表他们自己(不代表整个租户)。只有该角色的其他成员才能使用该应用程序(他们各自代表自己同意),并且仅当请求的权限是用户同意的委派权限时。如果您的唯一要求是让开发人员能够获得对 Microsoft Graph 的委派 User.Read 权限,那么这可行。
  • 应用程序管理员云应用程序管理员目录角色的成员可以代表所有用户同意委派权限和应用程序-只有权限,但对 Azure AD 或 Microsoft Graph 的仅限应用的权限除外。这些角色都 非常 享有特权,您不太可能希望普通开发人员拥有此权限——如果仅授予所需的权限,当然不会 User.Read.

But how do I automate the App Registration without going to the Portal?

使用 Microsoft Graph API,您可以通过 creating an Application object 注册应用程序。截至 2018-12-05,这在 Microsoft Graph 中仍处于测试阶段。

如果您需要生产就绪端点,the Azure AD Graph API supports this, which is what's used by the various command-line and PowerShell options: New-AzureADApplication, az ad app create, and New-AzureRmADApplication

要在没有用户参与的情况下执行此操作,客户端应用程序(创建应用程序注册的应用程序)至少需要 Application.ReadWrite.OwnedBy 应用程序权限。

And how do I ensure that the release pipeline has the correct Azure AD permission to give consent?

这就是事情变得复杂的地方。虽然可以如上所述创建应用程序注册(应用程序对象),但目前没有应用程序权限允许一个应用程序为另一个应用程序授予同意。尽管正在进行 "normal" 应用程序权限允许一个应用程序授予其他应用程序某些权限的工作,但目前只有授权同意这些权限的目录角色的成员才能执行此操作。