azure-active-directory - 使用 JSON 定义更新 NSG。只有权限是 NSG 资源的贡献者
问题描述
我有一个名为的文件nsg-properties.json
,如下所示:
{
"securityRules": [
<twenty NSG rules are here>
]
}
我有一个只有一个角色分配的服务主体,它位于我的 NSG 资源 IDContributor
的范围内。/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$VNET_RESOURCE_GROUP/providers/Microsoft.Network/networkSecurityGroups/$NSG_NAME
如何以编程方式使用 中的属性定义更新 NSG nsg-properties.json
?我尝试过的事情:
- 使用 ARM 模板。没用,因为我的服务主体不在
Microsoft.Resources/subscriptions/resourcegroups/write
我的资源组范围内。 - 使用
az resource create --id $NSG_ID --properties @nsg-properties.json
. 没用,因为我的服务主体不在Microsoft.Resources/subscriptions/resourcegroups/read
我的资源组范围内。
有az network nsg update
API,但我不知道如何使用 JSON 定义作为输入。
你有什么建议吗?
解决方案
它不能像这样工作。您需要对您的服务原则授予Network Contributor
ORMicrosoft.Network/networkSecurityGroups/write
权限才能更新 NSG。 查看更改 NSG 所需的权限:
编辑:
在您提到的第二种情况下:
使用 az resource create --id $NSG_ID --properties @nsg-properties.json。没用,因为我的服务主体在我的资源组范围内没有 Microsoft.Resources/subscriptions/resourcegroups/read。
Microsoft.Resources/subscriptions/resourcegroups/read
如果不赋予您的 SP 角色,这是不可能的。设计就是这样。