可以,请按照以下步骤操作。
1.在门户中导航到您的函数应用 -> Authentication / Authorization -> 使用 Azure AD 身份验证对其进行配置,按照此 doc 操作。 注意:在Express中,我们选择Create New AD App,这样可以减少不必要的麻烦。
配置后如下图。
2.片刻后,导航到门户中的Azure Active Directory -> App registrations -> 使用过滤器搜索您的函数应用名称All applications -> 单击它 -> App roles | Preview -> Create app role -> 创建如下角色 -> Apply.
导航到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.导航到函数应用中的httptrigger,将Authorization level设置为Anonymous,因为我们已经配置了AAD auth。
5.然后在您的 ADF 中,创建一个 Web Activity 进行测试,使用如下设置。
URL - https://<functionapp-name>.azurewebsites.net/api/HttpTrigger1
Resource - https://<functionapp-name>.azurewebsites.net
运行它,它会正常工作的。
在此解决方案中,我们使用 app 角色保护功能,如果您不将角色授予您的 MSI,即第 3 步,则 MSI 将无法访问该功能,换句话说,如果您只是给该角色只对您的 MSI,只有您的 MSI 才能访问该功能。