Какая роль Azure, кроме участника, разрешает выполнение Add-AzureRmAutoscaleSetting.

У меня есть сценарий Powershell, который используется для развертывания облачной службы Azure (классическая). До сегодняшнего дня пользователю приложения была назначена Contributor роль. В рамках ужесточения мер безопасности мы отменяем эту Contributor роль, поскольку она слишком широка.

Частью процесса развертывания является обновление настроек AutoScaling производственного слота с помощью _ 3_:

Add-AzureRmAutoscaleSetting -Location "East US" -Name $scalingName -ResourceGroupName $resourceGroup -TargetResourceId $targetResourceId -AutoscaleProfile $autoscaleProfile

Поскольку пользователю Azure больше не назначена роль Contributor, эта команда теперь не сообщает, что это «Запрещено»:

Add-AzureRmAutoscaleSetting : Exception type: ErrorResponseException, Message: Null/Empty, Code: Null, Status code:Forbidden, Reason phrase: Forbidden
At C:\Path\AzureRMTools.psm1:131 char:5
+     Add-AzureRmAutoscaleSetting -Location "East US" -Name $scalingNam ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : CloseError: (:) [Add-AzureRmAutoscaleSetting], PSInvalidOperationException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Insights.Autoscale.AddAzureRmAutoscaleSettingCommand

Я попытался назначить пользователю много разных ролей (я думаю, что у ролей будет это разрешение), но ни одна из них, похоже, не имеет разрешения, позволяющего мне выполнить это.

Я хотел бы знать, какая роль будет содержать это разрешение? Если нет, можно ли создать новую роль, которая позволит выполнять команду.

Спасибо




Ответы (3)


Спасибо @ 4c74356b41 за толчок в правильном направлении.

Похоже, что в ролях не было сборки с разрешением Microsoft.insights/autoscalesettings/write, поэтому следуйте this tutorial Я создал новую роль.

Вот созданный мной json файл:

{
    "Name": "Microsoft Insights Contributor",
    "IsCustom": true,
    "Description": "Allows the creation, edition, and deletion of AutoScaling rules from Microsoft.Insights",
    "Actions": [
        "Microsoft.Insights/*",
        "Microsoft.ClassicCompute/*"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
    ]
}

Затем выполните следующее, чтобы добавить его в свою подписку Azure:

New-AzureRmRoleDefinition -InputFile '.\Microsoft Insights Contributor.json'

Надеюсь, это поможет кому-то другому

Примечание. Поскольку я работаю с облачными службами Azure (классическая), мне также потребовались разрешения для некоторых Microsoft.ClassicCompute ресурсов

person Damien    schedule 05.10.2018
comment
в этом случае вы, вероятно, должны отметить мой ответ как правильный, поскольку он технически отвечает на ваш вопрос;) - person 4c74356b41; 05.10.2018

Любая роль, которая позволяет Microsoft.insights/autoscalesettings/write выйти за пределы интересующей вас области, должна работать.

а также разрешения (запись) на ресурсы, к которым вы пытаетесь привязать автомасштабирование

person 4c74356b41    schedule 05.10.2018
comment
Судя по всему, ни одна роль не имеет этого разрешения - встроенные роли. Верный? - person Damien; 05.10.2018
comment
ctrl + f не возвращает никаких результатов, поэтому, вероятно, нет. вы можете создать собственную роль. - person 4c74356b41; 05.10.2018
comment
Как можно сделать вывод, что Add-AzureRmAutoscaleSetting требуется разрешение Microsoft.insights/autoscalesettings/write. Это задокументировано или у вас есть племенные знания? Мне кажется, это следует упомянуть здесь - person Damien; 05.10.2018
comment
ну, это могло быть где-то задокументировано, но я не смог его найти. Понимаете, все сводится к простому зову отдыха в лазурном свете. это означает, что если вы можете найти какой-либо источник, который скажет вам, какой вызов отдыха выполняется на любом языке \ инструменте, вы можете перенести его на любой другой язык \ инструмент. я нашел этот пример . и шаблон руки сразу выдает вызов RP. "type": "Microsoft.insights/autoscalesettings", - person 4c74356b41; 05.10.2018
comment
Оказывается, мне нужен был Microsoft.ClassicCompute/* тоже. Я все еще не совсем уверен, какое именно разрешение, но после многих проб и ошибок оно работает. - person Damien; 05.10.2018
comment
это, вероятно, связано с тем, что вы пытаетесь обновить классическую виртуальную машину (или облачную службу), для обычной виртуальной машины вам понадобится microsoft.compute. - person 4c74356b41; 05.10.2018

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

"Microsoft.Insights/AutoscaleSettings/Read",
"Microsoft.Insights/AutoscaleSettings/Write",
"Microsoft.ClassicCompute/domainNames/slots/roles/write",
"Microsoft.ClassicCompute/domainNames/slots/roles/read"
person Abby Gregory    schedule 11.11.2020