web-dev-qa-db-de.com

Der Client mit der Objekt-ID hat keine Berechtigung zum Ausführen der Aktion "Microsoft.DataFactory/datafactories/datapipelines/read" über den Gültigkeitsbereich

Ich habe versucht, die Data Factory-Pipeline über die Azure-Funktion programmgesteuert aufzurufen. Der folgende Fehler wird geworfen.

verknüpfung: http://eatcodelive.com/2016/02/24/starting-an-Azure-data-factory-pipeline-from-c-net/

AuthorizationFailed: Der Client 'XXXX-XXXXX-XXXX' mit der Objekt-ID 'XXX829e05'XXXX-XXXXX' hat keine Berechtigung zum Ausführen der Aktion 'Microsoft.DataFactory/datafactories/datapipelines/read' über den Bereich '/subscriptions/XXXXXX-4bf5-84c6-3a352XXXXXX/resourcegroups/fffsrg/providers/Microsoft.DataFactory/datafactories/ADFTestFFFS/datapipelines/ADFTutorialPipelineCustom'.

ich habe versucht, nach ähnlichen Problemen zu suchen, aber das Suchergebnis hat mir keine Lösung für mein Problem geliefert. Können Sie uns bitte sagen, was das Problem sein könnte?

Ziel ist es, die Data Factory-Pipeline immer dann auszuführen, wenn eine Datei zu Blob hinzugefügt wird. Um das Ergebnis zu erzielen, versuchen wir, die Data Factory-Pipeline von der Azure-Funktion mithilfe des Blob-Triggers aufzurufen.

Jede Hilfe in dieser Hinsicht wird sehr geschätzt.

Vielen Dank

7
ravibhat

Sie erhalten den Fehler, dass Sie nicht berechtigt sind, die Aktion "Microsoft.DataFactory/datafactories/datapipelines/read" über den Bereich der Pipeline auszuführen, da Sie nicht über die entsprechenden Berechtigungen für die Datafactory verfügen.

Sie benötigen entweder die Berechtigungen "Contributor"/"DataFactoryContributor", um Data Factory-Ressourcen oder untergeordnete Ressourcen zu erstellen und zu verwalten. Weitere Informationen zu den Azure RBAC-Rollen finden Sie unter folgendem Link:

https://docs.Microsoft.com/de-de/Azure/active-directory/role-based-access-built-in-roles

Da der Kunde versucht, den ADF-Client innerhalb von Azure Function zu verwenden, wird empfohlen, AAD-Anwendung und Dienstprinzipal für die Authentifizierung des ADF-Clients zu verwenden. Anweisungen zum Erstellen von AAD-Anwendungs- und Service-Principals finden Sie hier:

https://docs.Microsoft.com/de-de/Azure/azure-resource-manager/resource-group-authenticate-service-principal

Folgen Sie den Anweisungen zum Erstellen der Active Directory-Anwendung, des Dienstprinzips, und weisen Sie sie der Rolle Data Factory Contributor im folgenden Link und dem Codebeispiel für die Verwendung des Dienstprinzips mit dem ADF-Client zu.

6
SharmM

Wir hatten vor kurzem dieses Problem mit derselben Nachricht und fanden heraus, dass der Benutzer durch ein anderes Abonnement angemeldet war (wir haben 2). Durch die Verwendung von az login --subscription wurde das Problem für uns gelöst.

1
Rob Targosz

Ich habe dieses Problem gelöst, indem ich diesem Beitrag folgte: https://www.nwcadence.com/blog/resolving-authorizationfailed-2016 Mit dem Befehl in PowerShell:

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

Schritt 1: Melden Sie sich bei Ihrem Azure-Portal an 
Schritt 2: Suchen Sie in der linken Menüleiste nach Abonnements und klicken Sie auf.
 enter image description here

schritt 3: Klicken Sie auf Access Control IAM und anschließend auf Add.  enter image description here

Schritt 4: Wählen Sie im Fenster Berechtigung hinzufügen die Option Mitwirkender für die Rolle aus. Geben Sie in das Eingabefeld Select den in Azure AD erstellten App-Namen (in Azure Active Directory erstellt) ein und wählen Sie ihn aus. In meinem Fall habe ich Azure Resource Management erstellt.  enter image description here

Schritt 5: Nachdem Sie die Berechtigung erteilt haben, klicken Sie in Ihrem Abonnementfenster auf Aktualisieren, und Ihre App wird in der Liste angezeigt. Siehe folgendes Beispiel .  enter image description here

0
shebin c babu

SEE Häufig auftretendes Problem bei Verwendung von Azure-Ressourcengruppen und RBAC https://blogs.msdn.Microsoft.com/Azure4fun/2016/10/20/common-problem-when-using-Azure-resource-groups-rbac/

Dieses Problem tritt häufiger bei neueren Abonnements auf und tritt normalerweise auf, wenn zuvor noch kein bestimmter Ressourcentyp in diesem Abonnement erstellt wurde.

Subskriptionsadministratoren beheben dieses Problem häufig, indem sie Ressourcengruppenbesitzern Rechte auf Abonnementebene gewähren, was ihrer Strategie widerspricht, den Zugriff auf die Ebene der Ressourcengruppe und nicht auf die Abonnementebene zu beschränken.

Ursache

Einige Administratoren sagen, dass einige Ressourcen Zugriff auf die Abonnementebene benötigen, um diese Ressourcen erstellen zu können, und dass die "Besitzer" -Rechte auf Ressourcengruppenebene nicht ausreichend sind. Das ist nicht wahr.

Lassen Sie uns einen Schritt zurückgehen, um zu verstehen, wie das alles zuerst funktioniert.

Um Ressourcen in Azure (mithilfe des Ressourcenmanagermodells) bereitzustellen, benötigen Sie einen Ressourcenanbieter, der die Erstellung dieser Ressource unterstützt. Wenn Sie beispielsweise eine virtuelle Maschine bereitstellen, muss zunächst ein Ressourcenanbieter "Microsoft.Compute" im Abonnement verfügbar sein, bevor Sie dies tun können.

Ressourcenanbieter werden nur auf der Ebene des Abonnements registriert.

Glücklicherweise ist der Azure Resource Manager (ARM) intelligent genug, um das für Sie herauszufinden. Wenn eine neue Azure-Ressource bereitgestellt wird und der für diesen Ressourcentyp erforderliche Ressourcenanbieter noch nicht in der Subscription registriert ist, versucht ARM, sie für Sie zu registrieren. Diese Aktion (Registrierung des Ressourcenanbieters) erfordert Zugriff auf die Abonnementebene.

Standardmäßig wird jedes neue Azure-Abonnement mit einer Liste häufig verwendeter Ressourcenanbieter vorregistriert. Der Ressourcenanbieter für IoTHub ist beispielsweise keiner von ihnen.

Wenn einem Benutzer Eigentümerrechte nur für eine bestimmte Ressourcengruppe erteilt werden und dieser Benutzer versucht, eine Ressource bereitzustellen, für die zum ersten Mal ein Ressourcenanbieter registriert werden muss, schlägt dieser Vorgang fehl. Dies ist in unserem obigen Fall der Fall, als versucht wurde, IoThub bereitzustellen.

Im Endeffekt müssen wir DO NOT Zugriffsberechtigungen für die Abonnementebene erteilen, damit Benutzer Ressourcen wie HDInsight, IotHub und SQLDW usw. in ihren Ressourcengruppen erstellen können, für die sie Eigentümerrechte besitzen solange die Ressourcenanbieter für diese Ressourcen bereits registriert sind.

0
Michael Hunter

Folgen Sie diesem Beitrag: https://docs.Microsoft.com/en-us/Azure/azure-resource-manager/resource-group-create-service-principal-portal

In diesem Beitrag wird Role als "Reader" angegeben, der stattdessen "Owner" sein sollte. Andernfalls würde bei der Bereitstellung ein Berechtigungsfehler ausgegeben.

0
user3828102

Lösung:

  1. Schritt 1: Registrieren Sie eine App in Azure Active Directory.
  2. Schritt 2: Weisen Sie derselben App die Rolle "Data Factory Contributor" zu. Dies erreichen wir durch die Verwendung von Power Shell.

Der folgende Code funktioniert für mich. Versuchen Sie es in Power Shell, nachdem Sie sich mit dem Azure-Berechtigungsnachweis angemeldet haben. 
Implementierung:

  1. Schritt 1: $azureAdApplication = New-AzureRmADApplication -DisplayName <AppName> -HomePage <URL> -IdentifierUris <URL with domain> -Password <Password>
  2. Schritt 2: New-AzureRmRoleAssignment -RoleDefinitionName "Data Factory Contributor" -ServicePrincipalName $azureAdApplication.ApplicationId
0
Jeyachandran