使用 JSON 定义更新 NSG。只有权限是 NSG 资源的贡献者
Update NSG with JSON definition. Only permission is contributor on the NSG resource
我有一个名为 nsg-properties.json
的文件,它看起来像这样:
{
"securityRules": [
<twenty NSG rules are here>
]
}
我有一个只有一个角色分配的服务主体,它在范围 /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$VNET_RESOURCE_GROUP/providers/Microsoft.Network/networkSecurityGroups/$NSG_NAME
上是 Contributor
,这是我的 NSG 的资源 ID。
如何使用 nsg-properties.json
中的 属性 定义以编程方式更新 NSG?我尝试过的事情:
- 使用 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
或 Microsoft.Network/networkSecurityGroups/write
权限才能更新 NSG。 查看 Permissions required to make changes to NSG:
编辑:
你提到的第二种情况:
Use az resource create --id $NSG_ID --properties @nsg-properties.json.
Didn't work, because my service principal doesn't have
Microsoft.Resources/subscriptions/resourcegroups/read on the scope of
my resource group.
如果不向您的 SP 赋予 Microsoft.Resources/subscriptions/resourcegroups/read
角色,这是不可能的。设计是这样的
我有一个名为 nsg-properties.json
的文件,它看起来像这样:
{
"securityRules": [
<twenty NSG rules are here>
]
}
我有一个只有一个角色分配的服务主体,它在范围 /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$VNET_RESOURCE_GROUP/providers/Microsoft.Network/networkSecurityGroups/$NSG_NAME
上是 Contributor
,这是我的 NSG 的资源 ID。
如何使用 nsg-properties.json
中的 属性 定义以编程方式更新 NSG?我尝试过的事情:
- 使用 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
或 Microsoft.Network/networkSecurityGroups/write
权限才能更新 NSG。 查看 Permissions required to make changes to NSG:
编辑:
你提到的第二种情况:
Use az resource create --id $NSG_ID --properties @nsg-properties.json. Didn't work, because my service principal doesn't have Microsoft.Resources/subscriptions/resourcegroups/read on the scope of my resource group.
如果不向您的 SP 赋予 Microsoft.Resources/subscriptions/resourcegroups/read
角色,这是不可能的。设计是这样的