Поддержка политики Azure для диапазонов портов

Проблема - поэтому я хочу заблокировать людей, создающих группы безопасности сети, которые открывают доступ в Интернет к некоторым портам (22, 3389 и т. Д.). Я могу создать политику для блокировки определенного порта, например,

{
"allOf": [{
        "field": "Microsoft.Network/networkSecurityGroups/securityRules/access",
        "equals": "Allow"
    },
    {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules/direction",
        "equals": "Inbound"
    },
    {
        "anyOf": [{
                "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                "equals": "22"
            },
            {
                "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                "equals": "3389"
            }
        ]
    }
]

Это заблокирует создание групп безопасности сети, если в правилах безопасности используется конкретный порт. Но его можно обойти, если кто-то создаст правила NSG, разрешающие диапазоны портов (например, 3300-3400).

Интересно, как политика работает с диапазонами портов и что лучше всего в этом случае.

Я попробовал массив destinationPortRanges [*], но он не работает.

{
"not": {
    "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]",
    "Equals": "22"
}

}

правило по-прежнему разрешает создание групп безопасности сети, если для параметра destinationPortRanges указано значение «20-25».


person Sean Keane    schedule 17.03.2020    source источник


Ответы (1)


Посмотрите на встроенную политику "RDP доступ из Интернета должен быть заблокирован". Существует также SSH-доступ из Интернет должен быть заблокирован.

Если честно, читать его довольно болезненно, но похоже, что он охватывает именно то, что вам нужно.

{
                "anyOf": [
                  {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                    "equals": "*"
                  },
                  {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                    "equals": "3389"
                  },
                  {
                    "value": "[if(and(not(empty(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange'))), contains(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange'),'-')), and(lessOrEquals(int(first(split(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange'), '-'))),3389),greaterOrEquals(int(last(split(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange'), '-'))),3389)), 'false')]",
                    "equals": "true"
                  },
                  {
                      "count": {
                        "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]",
                        "where": {
                          "value": "[if(and(not(empty(first(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]')))), contains(first(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]')),'-')), and(lessOrEquals(int(first(split(first(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]')), '-'))),3389),greaterOrEquals(int(last(split(first(field('Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]')), '-'))),3389)) , 'false')]",
                          "equals": "true"
                        }
                      },
                      "greater": 0
                  },
                  {
                    "not": {
                      "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]",
                      "notEquals": "*"
                    }
                  },
                  {
                    "not": {
                      "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRanges[*]",
                      "notEquals": "3389"
                    }
                  }
                ]
              },
person Alex AIT    schedule 17.03.2020