在Azure资源图中查询资源子类型

时间:2019-07-16 21:20:06

标签: azure azure-eventhub azure-policy

我正在尝试使用Azure策略的资源图查询事件中心防火墙IP规则。我目前已使用以下防火墙IP规则配置了事件中心。

{
        "type": "Microsoft.EventHub/namespaces/ipfilterrules",
        "apiVersion": "2018-01-01-preview",
        "name": "[concat(parameters('namespaces_myeventhub_name'), '/e51110a0-c074-43b3-85b7-b43e2eab4d9b')]",
        "location": "West US 2",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaces_myeventhub_name'))]"
        ],
        "properties": {
            "ipMask": "47.xxx.xxx.xxx",
            "action": "Accept",
            "filterName": "e51110a0-c074-43b3-85b7-b43e2eax4d9b"
        }
    }

查询

"where type =~ 'Microsoft.EventHub/namespaces'"

将显示我的事件中心,而没有有关防火墙IP规则的任何信息。还有一个

查询
where type =~ 'Microsoft.EventHub/namespaces/ipfilterrules'

不返回任何内容。我希望能够使用资源图查询此信息,并最终针对这些属性编写Azure策略。我已经使用以下

搜索了与此信息相关的别名
"where type =~ 'Microsoft.EventHub/namespaces' | limit 1 | project aliases"

,但返回的列表不包含事件中心的防火墙IP规则信息。这似乎是应该在“资源图”中提供的基本信息...我缺少什么?

1 个答案:

答案 0 :(得分:1)

不幸的是,在测试之后,只能通过Azure资源图API查询事件中心命名空间的级别,并且不能直接通过Azure资源图查询ipfilterrules, 请参考以下解决方案作为解决方法:

1:在可疑状态下查询所有事件中心名称空间 例如: https://management.azure.com/subscriptions/ / providers / Microsoft.EventHub / namespaces?api-version = 2018-01-01-preview

2:查询事件中心名称空间下的所有ipfilterrules,并在程序中一一过滤ipfilterrules。 例如 https://management.azure.com/subscriptions/ / resourceGroups / ericm / providers / Microsoft.EventHub / namespaces // ipfilterrules?api-version = 2018-01-01-preview

参考: https://github.com/Azure/azure-rest-api-specs/blob/master/specification/eventhub/resource-manager/Microsoft.EventHub/preview/2018-01-01-preview/examples/NameSpaces/IPFilterRule/EHNameSpaceIPFilterRuleListAll.json

希望这对您有所帮助。