从数据工厂授权Azure Function App http终结点 [英] Authorizing Azure Function App Http endpoint from Data Factory

查看:18
本文介绍了从数据工厂授权Azure Function App http终结点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们目前正在Azure Data Factory中开发一个ETL解决方案,该解决方案需要调用Azure函数App HTTP触发器。我们的Data Factory实例已配置托管标识,我想知道如何保护Azure Function App以仅允许从Data Factroy托管标识进行访问?

我以前使用过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>

请确保您已安装AzureADPowershell模块,并且有足够的权限分配应用程序角色。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆