Как назначить разрешения на чтение и запись приложению AD для управления ресурсами с помощью API управления ресурсами с Azure java SDK

Я пытаюсь подключиться к Azure Resource Manager API с помощью java sdk. У меня есть приложение AD с включенными разрешениями «API управления службами Windows». При запуске тестовых образцов я получаю следующую ошибку при выполнении вызова get для определенной группы ресурсов.

Exception in thread "main" com.microsoft.windowsazure.exception.ServiceException: AuthorizationFailed: The client '1111-5a7b-4384-9fee-3a593a8c6875' with object id '1111115-5a7b-4384-9fee-3a593a8c6875' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/zzzzzzzzzzzz-ae67-ed0926abfe0d/resourcegroups/Group'.
at com.microsoft.windowsazure.exception.ServiceException.createFromJson

Как назначить права чтения и записи приложению в AD, которое используется для подключения к управлению ресурсами API?


person Dat    schedule 26.11.2015    source источник


Ответы (2)


Как сказал @Gaurav Mantri, самый простой способ назначить роль читателя для вашего рекламного приложения — использовать Azure Preview Portal при запуске образца ServicePrincipalExample по адресу https://github.com/Azure/azure-sdk-for-java./blob/master/azure-mgmt-samples/src/main/java/com/microsoft/azure/samples/authentication/ServicePrincipalExample.java.

Полную информацию о том, как это сделать, см. ниже.

введите здесь описание изображения

Согласно картинке выше, шаги следующие:

  1. Нажмите Resource groups.
  2. Введите имя группы ресурсов в поле элементов фильтра и щелкните выбранную группу ресурсов.
  3. Нажмите кнопку settings.
  4. Нажмите кнопку Users.
  5. Нажмите кнопку Add. введите здесь описание изображения
  6. Нажмите Select a role и выберите роль Reader. введите здесь описание изображения
  7. Нажмите кнопку Add users, введите название рекламного приложения в поле поиска и выберите рекламное приложение, чтобы нажать кнопку select.
  8. Нажмите кнопку OK на вкладке Add access.

Теперь вы можете снова запустить образец, который вернет правильный результат без ошибок.

Помимо Azure PowerShell, вы также можете использовать для этого Azure CLI.

  1. Войдите в Azure cli, используя свое имя пользователя и пароль, запустите azure login
  2. Переключите режим руки, запустите azure config mode arm
  3. Назначение ролей, запустить azure role assignment create --objectId <objectId> -o Reader -c /subscriptions/<subscriptionId>/>.

Примечание. Для идентификатора объекта вы можете запустить azure ad sp show --search <ad-app-name>, чтобы показать его.

Затем снова запустите образец без ошибок.

person Peter Pan    schedule 27.11.2015
comment
Спасибо @ Питер Пэн. Я могу обновлять роли с помощью powershell. Пример портала, который вы показали выше, обновляет роли в определенной группе ресурсов, а не в приложении AD, верно? Что это значит? Мы обновляем права доступа только для этой конкретной группы ресурсов. Это не то же самое, что обновление прав доступа в приложении API. Пожалуйста, поправьте меня, если я ошибаюсь. Это очень запутанно.. :( - person Dat; 30.11.2015
comment
@Sam Это назначает разрешение роли Reader для группы ресурсов. Затем API управления ресурсами может считывать метаданные в идентификаторе приложения AD, связанном с группой ресурсов. Я думаю, вам следует просмотреть справочную ссылку @Gaurav Mantri и msdn.microsoft. .com/en-us/library/azure/dn906885.aspx. В приложении API хост шлюза контролирует разрешение доступа, которое не сравнимо с этим. - person Peter Pan; 30.11.2015

Что вам нужно сделать, так это назначить роль Reader вашего приложения в вашей подписке Azure. Это можно сделать программно с помощью ARM API или использовать Azure PowerShell сделать это.

Однако проще всего назначить роль с помощью Azure Preview Portal. Эта ссылка может оказаться полезной для назначения ролей с помощью портала предварительной версии: https://azure.microsoft.com/en-in/documentation/articles/role-based-access-control-configure/.

person Gaurav Mantri    schedule 26.11.2015
comment
Спасибо @Гаурав Мантри. Я могу назначать роли с помощью powershell. И возможность использовать пакеты SDK azure maven java для выполнения вызовов ресурсов. Еще одна заминка... Я пытаюсь перечислить образы ОС с помощью этого вызова. VirtualMachineImageResourceList l = cmc.getVirtualMachineImagesOperations().list(null); - person Dat; 30.11.2015
comment
Но он выдает исключение, говорящее об исключении в потоке main com.microsoft.windowsazure.exception.ServiceException: BadRequest: URL-адрес запроса недействителен. в com.microsoft.windowsazure.exception.ServiceException.createFromJson(ServiceException.java:292) в com.microsoft.azure.management.compute.VirtualMachineImageOperationsImpl.list(VirtualMachineImageOperationsImpl.java:441) - person Dat; 30.11.2015
comment
Что мне здесь не хватает? - person Dat; 30.11.2015
comment
ИМХО, вы можете опубликовать этот вопрос как отдельный вопрос. - person Gaurav Mantri; 30.11.2015