Как добавить IP-адрес в правило WFA белого списка в Azure с помощью Azure Cli?
Я попытался добавить, как показано ниже, но получил ошибку с синтаксисом, как показано ниже.
      az network application-gateway waf-policy custom-rule update
--resource-group rp-licaltcs-aks-prod --policy-name waf-licaltcs-prod-eastus --name WhitelistIP --set matchConditions[0].matchValues="20.80.71.229/24" "20.80.71.228/24"
Ожидаем <класс 'список'>, получили 20.80.71.229/24 (<класс 'str'>)
Сходным образом.
      az network application-gateway waf-policy custom-rule update --resource-group rp-licaltcs-aks-prod --policy-name waf-licaltcs-prod-eastus --name WhitelistIP --set matchConditions[0].matchValues="20.80.71.229,20.80.71.228"
Ожидаем <класс 'список'>, получили 20.80.71.229,20.80.71.228 (<класс 'str'>)
Этот рабочий.
      az network application-gateway waf-policy custom-rule update \
  --resource-group rp-licaltcs-aks-prod \
  --policy-name waf-licaltcs-prod-eastus \
  --name WhitelistIP \
  --set "matchConditions[0].matchValues=['20.80.71.229', '20.80.71.228']"
Но теперь есть еще одна проблема: существующие значения заменяются, а не добавляются.
Поэтому я подумал сначала получить предыдущие значения и передать их.
Когда я запускаю команду ниже.
      az network application-gateway waf-policy custom-rule show --resource-group rp-licaltcs-aks-prod --policy-name waf-licaltcs-prod-eastus --name WhitelistIP --query matchConditions[0].matchValues --output tsv
обеспечит вывод, как показано ниже
      20.80.71.229
20.80.71.228
Но если я назначу это переменной, она выберет только первое значение.
      existing_ips=$(az network application-gateway waf-policy custom-rule show --resource-group rp-licaltcs-aks-prod --policy-name waf-licaltcs-
prod-eastus --name WhitelistIP --query matchConditions[0].matchValues --output json | ./jq.exe -r '.[]')
Либо с помощью json, либо с tsv, он присваивает только первое значение ip.
общий сценарий:
      #!/bin/bash
# The IP address you want to add
new_ip="20.80.71.230"
# Get the current list of whitelisted IP addresses
existing_ips=$(az network application-gateway waf-policy custom-rule show --resource-group rp-licaltcs-aks-prod --policy-name waf-licaltcs-prod-eastus --name WhitelistIP --query matchConditions[0].matchValues --output tsv)
# Check if the new IP is already in the list
if echo "$existing_ips" | grep -q "$new_ip"; then
  echo "The IP address $new_ip is already in the whitelist."
else
  # If not, add it to the list
  updated_ips=$(echo -e "$existing_ips\n$new_ip" | tr '\n' ',' | sed 's/,$//')
  az network application-gateway waf-policy custom-rule update \
    --resource-group rp-licaltcs-aks-prod \
    --policy-name waf-licaltcs-prod-eastus \
    --name WhitelistIP \
    --set "matchConditions[0].matchValues=[$updated_ips]"
  echo "The IP address $new_ip has been added to the whitelist."
fi
                                    
                                
                            1 ответ
Список PowerShell состоит из элементов, разделенных запятой.
"foo","bar"представляет собой список, состоящий из строк"foo"и"bar". это строка с содержимым"foo, bar".
Таким образом, вы должны использоватьmatchConditions[0].matchValues="20.80.71.229","20.80.71.228".