从数据工厂授权Azure Function App http终结点 [英] Authorizing Azure Function App Http endpoint from Data Factory
本文介绍了从数据工厂授权Azure Function App http终结点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我以前使用过Azure Function Apps系统分配的托管标识来访问其他资源(密钥库),因此我理解基本概念,但我很难理解是否可以在Azure Function Apps上使用系统分配的托管标识作为授权和身份验证机制。
推荐答案
可以,请按照以下步骤操作。
1.导航到门户中的功能应用-&>Authentication / Authorization
-&>使用Azure AD身份验证对其进行配置,请遵循此doc。注意:在Express
中选择Create New AD App
,将减少不必要的麻烦。
配置后,如下图所示。
2.稍后,在门户中导航到Azure Active Directory
-&>在过滤中搜索您的函数应用名称All applications
-&>单击它-&>创建如下所示的角色-&>Create app role
-&>创建如下角色-&>App registrations
。
导航到Overview
->;单击Managed application in local directory
。
在Properties
->;中,将User assignment required?
设置为Yes
。
3.使用下面的Powershell将应用程序角色分配给您的MSI(托管标识),替换<datafactory-name>
和<functionapp-name>
。
请确保您已安装AzureAD
Powershell模块,并且有足够的权限分配应用程序角色。
Connect-AzureAD
$MSI = Get-AzureADServicePrincipal -Filter "displayName eq '<datafactory-name>'"
$funapp = Get-AzureADServicePrincipal -Filter "displayName eq '<functionapp-name>'"
$PermissionName = "Function.Test"
$approle = $funapp.AppRoles | Where-Object {$_.Value -eq $PermissionName}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $funapp.ObjectId -Id $approle.Id
4.导航到函数应用程序中的httprigger,将Authorization level
设置为Anonymous
,因为我们已经配置了AAD身份验证。
5.然后在ADF中创建要测试的Web活动,使用如下设置。
URL - https://<functionapp-name>.azurewebsites.net/api/HttpTrigger1
Resource - https://<functionapp-name>.azurewebsites.net
运行它,它将工作正常。
在此解决方案中,我们使用APP角色保护功能,如果您不将该角色授予您的MSI,即步骤3,则MSI将无法访问该功能,换句话说,如果您只将该角色授予您的MSI,则只有您的MSI才能访问该功能。
这篇关于从数据工厂授权Azure Function App http终结点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文