azure 具有对象ID的客户端无权在作用域上执行操作“Microsoft.DataFactory/datafactories/datapipelines/read

x759pob2  于 2023-01-09  发布在  其他
关注(0)|答案(9)|浏览(135)

我试图调用数据工厂管道从Azure函数编程。它抛出以下错误。
链接:http://eatcodelive.com/2016/02/24/starting-an-azure-data-factory-pipeline-from-c-net/

  • 授权失败:对象ID为"XXX829e05" XXXX-XXXXX "的客户端" XXXX-XXXXX-XXXX "无权执行操作" Microsoft.数据工厂/数据工厂/数据管道/读取"范围"/订阅/XXXXXX-4bf5 - 84c6 - 3a352XXXXXX/资源组/fffsrg/提供程序/Microsoft.数据工厂/数据工厂/ADFTestFFFS/数据管道/ADFTutorialPipelineCustom"。*

我尝试搜索类似问题,但没有搜索结果为我提供问题的解决方案,您能否指导我们可能的问题?
目标是,每当文件被添加到blob时运行数据工厂管道。因此,为了实现这一结果,我们尝试使用blob触发器从azure函数调用数据工厂管道。

ulydmbyx

ulydmbyx1#

步骤1:登录Azure门户
第2步:在左侧菜单栏中找到订阅,然后单击。

步骤3:单击“访问控制IAM”,然后单击“添加.


步骤4:在“添加权限”窗口中,为角色选择贡献者。在选择输入框中,键入你在Azure AD中创建的应用名称(在Azure Active Directory中创建)并选择它。在我的示例中,我创建了Azure Resource Management.

步骤5:成功授予权限后,点击订阅窗口中的刷新,您将看到您的应用显示在列表中。请参见下例。

wecizke3

wecizke32#

SEE使用Azure资源组和RBAC https://blogs.msdn.microsoft.com/azure4fun/2016/10/20/common-problem-when-using-azure-resource-groups-rbac/时的常见问题
此问题更可能发生在较新的订阅中,并且通常发生在以前从未在该订阅中创建过某个资源类型的情况下。
订阅管理员通常通过在订阅级别上授予资源组所有者参与者权限来解决此问题,这与他们将访问隔离到资源组级别而不是订阅级别的策略相矛盾。
根本原因
一些管理员说,一些资源需要访问订阅级别才能创建这些资源,而资源组级别上的"所有者"权限是不够的。这是不正确的。
让我们先退一步来理解这一切是如何工作的。
若要设置Azure中的任何资源(使用资源管理器模型),你需要具有支持创建该资源的资源提供程序。例如,如果你将设置虚拟机,则需要首先在订阅中具有可用的"Microsoft. Compute"资源提供程序,然后才能执行该操作。
资源提供程序仅在订阅级别上注册。
幸运的是,Azure资源管理器(ARM)足够智能,可以为你解决这个问题。当配置新的Azure资源时,如果该资源类型所需的资源提供程序尚未在订阅中注册,ARM将尝试为你注册。该操作(资源提供程序注册)需要访问订阅级别。
默认情况下,任何新的Azure订阅都将预先注册一个常用资源提供者列表,例如,IoTHub的资源提供者不在其中。
当用户仅被授予特定资源组的所有者权限时,如果该用户尝试预配需要首次注册资源提供者的资源,则该操作将失败。这就是我们在上面的示例中尝试预配IoThub时发生的情况。
因此,底线是,我们 * 不 * 需要为用户授予订阅级别的访问权限,以便用户能够在他们拥有所有者权限的资源组中创建HDInsight、IotHub和SQLDW等资源,只要这些资源的资源提供程序已经注册。

raogr8fs

raogr8fs3#

您收到错误消息,指出您无权在管道范围内执行操作“Microsoft.DataFactory/datafactories/datapipelines/read”,因为您没有数据工厂的相关权限。
您需要具有“Contributor”/“DataFactoryContributor”权限才能创建和管理数据工厂资源或子资源。有关Azure RBAC角色的详细信息,请访问以下链接:
https://learn.microsoft.com/en-us/azure/active-directory/role-based-access-built-in-roles
由于客户尝试从Azure Function内部使用ADF客户端,因此建议使用AAD应用程序和服务主体对ADF客户端进行身份验证。你可以在此处找到有关创建AAD应用程序和服务主体的说明:
https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal
请按照以下链接中有关如何创建Active Directory应用程序、服务主体,然后将其分配给Data Factory Contributor角色的说明以及将服务主体用于ADF客户端的代码示例进行操作。

q7solyqu

q7solyqu4#

我们最近遇到了同样的消息问题,发现这是由于用户使用不同的订阅登录(我们有2个)引起的。使用az login --subscription为我们解决了这个问题。

wa7juj8i

wa7juj8i5#

溶液:
1.步骤1:在Azure Active Directory中注册应用。
1.第2步:将"数据工厂贡献者"角色分配给同一个应用程序。我们可以通过使用Power Shell来实现这一点。
下面的代码适合我。请在使用Azure凭据登录后在Power Shell中试用。
实施:
1.步骤1:$azureAdApplication = New-AzureRmADApplication -DisplayName <AppName> -HomePage <URL> -IdentifierUris <URL with domain> -Password <Password>
1.步骤2:New-AzureRmRoleAssignment -RoleDefinitionName "Data Factory Contributor" -ServicePrincipalName $azureAdApplication.ApplicationId

dauxcl2d

dauxcl2d6#

关注此帖子:https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal
在这篇文章中,角色被指定为"读者",而应该是"所有者",否则会在部署时出现权限错误。

wko9yo5t

wko9yo5t7#

我解决了以下这篇文章:在PowerShell中使用以下命令执行https://www.nwcadence.com/blog/resolving-authorizationfailed-2016

Get-AzureRmResourceProvider -ListAvailable | Select-Object ProviderNamespace | Foreach-Object { Register-AzureRmResourceProvider -ProviderName $_.ProviderNamespace}
yhxst69z

yhxst69z8#

对于遇到类似问题并显示相同错误消息的其他人-在“az login”后,我在尝试以所有者身份创建资源组时收到相同的错误,我使用以下方法解决了此问题:

az account set --subscription "Azure Subscription 1"

基本上是由于订阅没有设置,您可以在这里找到详细信息:https://learn.microsoft.com/en-us/cli/azure/manage-azure-subscriptions-azure-cli#get-the-active-subscription

6jygbczu

6jygbczu9#

我通过查找企业应用程序〉对象ID解决了这个问题。(奇怪的是,它没有使用应用程序注册表〉应用程序ID)
https://jeanpaul.cloud/2020/02/03/azure-data-factory-pipeline-execution-error/

相关问题