Как настроить версию API Azure Powershell для создания роли

#azure #azure-powershell

#azure #azure-powershell

Вопрос:

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

Существует ряд хороших источников документации и пошаговых инструкций о том, как это сделать, и теоретически это кажется простым, но я продолжаю сталкиваться с проблемами при запуске командлета Powershell:

 New-AzureRmRoleDefinition -InputFile [pathtojsondoc]
  

Входной файл — это просто json, описывающий роль

 "Name":  "Test Role",    
"IsCustom":  true,
"Description":  "Role Description",
"Actions":  [
   "Microsoft.Resources/subscriptions/resourceGroups/read"
            ],
"NotActions":  [ ],
"AssignableScopes":  [ ]
  

}

При вызове New-AzureRmRoleDefinition функции я получаю следующую ошибку:

New-AzureRmRoleDefinition: InvalidApiVersionParameter: Версия api ‘2015-07-01’ недействительна. Поддерживаемые версии ‘2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015-11-01,2015-01-01,2014-04-01-preview,2014-04-01,2014-01-0

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

Комментарии:

1. Ваши «Назначаемые области» не должны быть пустыми. Я протестировал команду с "AssignableScopes": [ "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ] помощью . Это работает отлично. Какова версия вашего Azure PowerShell? И используете ли вы глобальную среду Azure?

2. Извините, образец был пуст, но фактический запуск имеет значение. Я удалил его, чтобы сохранить GUID моей подписки вне кода. Я работаю над глобальной инфраструктурой, если быть точным, на западе США, и я использую выпуск инструментов от 28 сентября.

3. Вам не нужно указывать apiVersion для командлетов — что-то кажется неправильным… Попробуйте выполнить Get-Module -Name AzureRM.Resources и посмотреть, какая у вас версия (я думаю, должна быть 3.2)

4. @bmoore-msft. Я согласен, что это кажется неправильным. Манифест 3.2.0 в соответствии с командой Get-Module.

5. Хорошо, зарегистрируйте проблему здесь: github.com/Azure/azure-powershell/issues и я поспрашиваю вокруг, чтобы узнать, кто может помочь разобраться в том, что происходит…

Ответ №1:

Оказывается, ошибка, которую я получал, была неправильным сообщением об ошибке, вызывающим неправильную диагностику.

После обновления до последней версии Azure PowerShell я получил ту же ошибку, поэтому я немного покопался и нашел обновленный пример кода.

Я устанавливал назначаемые области в файле для определенных групп ресурсов, используя формат /subscriptions/*******/myresourcegroupname , но правильный формат — /subscriptions/*******/resourceGroups/myresourcegroupname обратите внимание на дополнительный /resourceGroups/ путь.