it-swarm.com.ru

Клиент с идентификатором объекта не имеет полномочий для выполнения действия "Microsoft.DataFactory/datafactories/datapipelines/read" над областью действия.

Я пытался вызвать конвейер фабрики данных из функции Azure программным способом. Его выкидывает следующая ошибка.

ссылка на сайт: http://eatcodelive.com/2016/02/24/starting-an-Azure-data-factory-pipeline-from-c-net/

AuthorizationFailed: У клиента 'XXXX-XXXXX-XXXX' с идентификатором объекта 'XXX829e05'XXXX-XXXXX' нет полномочий для выполнения действия «Microsoft.DataFactory/datafactories/datapipelines/read» выходит за рамки '/Subscriptions/XXXXXX-4bf5-84c6-3a352XXXXXX/resourcegroups/fffsrg/providers/Microsoft.DataFactory/datafactories/ADFTestFFFS/datapipelines/ADFTutorialPipelineCustom.

пытался найти похожие проблемы, но ни один из результатов поиска не дал мне решения моей проблемы. Не могли бы вы указать нам, в чем может быть проблема?

Цель состоит в том, чтобы запустить конвейер фабрики данных всякий раз, когда файл добавляется в BLOB-объект. поэтому для достижения результата мы пытаемся вызвать конвейер фабрики данных из функции Azure, используя триггер blob.

Любая помощь в этом отношении очень ценится.

Спасибо

7
ravibhat

Вы получаете сообщение об ошибке, что у вас нет прав на выполнение действия «Microsoft.DataFactory/datafactories/datapipelines/read» над областью конвейера, поскольку у вас нет соответствующих разрешений для datafactory.

Для создания и управления ресурсами фабрики данных или дочерними ресурсами у вас должны быть разрешения «Contributor»/«DataFactoryContributor». Подробнее о ролях Azure RBAC по следующей ссылке:

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

Поскольку клиент пытается использовать клиент ADF изнутри функции Azure, рекомендуется использовать приложение AAD и субъект-службу для аутентификации клиента ADF. Инструкции по созданию приложения AAD и принципала службы вы можете найти здесь:

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

Пожалуйста, следуйте инструкциям по созданию приложения Active Directory, участника службы, а затем назначьте его роли «Участник фабрики данных» в следующей ссылке и в примере кода для использования участника службы с клиентом ADF.

6
SharmM

У нас недавно была эта проблема с тем же сообщением, и мы обнаружили, что она была вызвана тем, что пользователь вошел в систему с другой подпиской (у нас есть 2). Использование логина az --subscription решило проблему для нас.

1
Rob Targosz

Я решил, следуя этому сообщению: https://www.nwcadence.com/blog/resolving-authorizationfailed-2016 С помощью команды в PowerShell:

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

Шаг 1. Войдите на свой портал Azure. 
Шаг 2: найдите Подписки в левой части меню и нажмите.
enter image description here

шаг 3: Нажмите Access Control IAM, а затем нажмите Add . enter image description here

Шаг 4. В окне «Добавить разрешение» выберите участника для роли. В поле ввода введите имя приложения, созданного в Azure AD (созданный в Azure Active Directory), и выберите его. В моем случае я создал Azure Resource Management . enter image description here

Шаг 5: После того, как вы дали успешное разрешение, нажмите «Обновить» в окне подписки, и вы увидите свое приложение в списке. Смотрите ниже пример . enter image description here

0
shebin c babu

СМ. Общая проблема при использовании групп ресурсов 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… и т.д., В своих группах ресурсов, на которые у них есть права владельца, так как Пока поставщики ресурсов для этих ресурсов уже зарегистрированы.

0
Michael Hunter

Следуйте этому сообщению: https://docs.Microsoft.com/en-us/Azure/azure-resource-manager/resource-group-create-service-principal-portal

В этом посте Роль обозначена как «Читатель», которая должна быть «Владельцем», иначе она выдаст ошибку разрешения при развертывании.

0
user3828102

Решение:

  1. Шаг 1. Зарегистрируйте приложение в Azure Active Directory.
  2. Шаг 2. Назначьте роль «Участник фабрики данных» тому же приложению. мы можем добиться этого с помощью Power Shell.

Приведенный ниже код работает для меня. Попробуйте войти в Power Shell после входа с учетными данными Azure. 
Реализация:

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