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

时间:2018-12-04 16:48:47

标签: azure azure-devops azure-active-directory azure-pipelines-release-pipeline

我正在与一个禁用了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,该脚本在运行时将显示一个交互式凭据对话框。不确定是否可以抑制这种情况。

更新2

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

更新3

因此,要使整个过程自动化,我在考虑是否可以使用 Azure DevOps Service Connection 在发布管道中执行这些powershell脚本?

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

它还应该隐藏MFA凭据对话框。

1 个答案:

答案 0 :(得分:1)

  

唯一的其他方法是将开发人员分配给具有此权限的Azure AD角色之一吗:应用程序开发人员,应用程序管理员或云应用程序管理员?

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

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

但是如何在不访问门户的情况下自动进行应用注册?

使用Microsoft Graph API,您可以通过creating an Application object注册应用。截至2018年12月5日,它仍处于Microsoft Graph的测试版中。

如果您需要生产就绪的端点the Azure AD Graph API supports this,则这是各种命令行和PowerShell选项所使用的端点:New-AzureADApplicationaz ad app createNew-AzureRmADApplication

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

  

又如何确保发布管道具有正确的Azure AD权限以表示同意?

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