Как добавить 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"
.