如何使用 GitHub 的 API 在 Azure Web 应用程序中将 GitHub 操作 IP 地址列入白名单
How do I whitelist GitHub actions IP addresses in Azure web app using GitHub's API
我正在尝试为我的 GitHub 操作将 IP 地址列入白名单,因为现在由于我的 Azure Web 应用程序的防火墙阻止来自非白名单 IP 地址的请求,工作流失败。 Github 提供的 API 中似乎有一个 CIDR 格式的 IP 地址列表:https://api.github.com/meta
但是我是 Azure 的新手,不知道如何将来自 Azure UI 中的 API 的大量 IP 地址列入白名单。当我转到我的 Azure 应用程序的“网络”页面,然后转到“访问限制”并单击“配置访问限制”时,有一个非常好的 GUI 可以将各个 IP 地址列入白名单,但它没有似乎有一种方法可以访问 API,我想知道是否有人知道我应该如何尝试访问“操作”:来自 GitHub [= 的 [IP1、IP2 等] 20=] 上面链接的页面,并将该 IP 数组汇集到我的访问限制配置中,理想情况下这将是动态的,因为显然 Github 有时会更新此页面...
感谢任何建议!提前致谢。
为此您需要一个脚本,该脚本需要 运行 作为具有 RBAC 权限的用户才能对应用服务进行更改。您还需要 Powershell 和 Azure CLI。您将需要 CLI 以脚本方式添加规则。
Powershell:
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1
Azure CLI:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
$priority = 200;
$json = Invoke-RestMethod -Uri "https://api.github.com/meta"
foreach($ip in $json.actions){
if($ip -like "*.*"){
az webapp config access-restriction add -g <your_resourcegroup_name> -n <your_app_name> --rule-name --action Allow --ip-address $ip --priority $priority
Write-Output "$($ip) added to rules."
$priority++
}
}
两件事:
Priority = 200 在这个例子中,你可能想改变这个让允许规则出现在你所有现有的拒绝规则之前,所以检查你现有的优先级,我只需要选择一个数字对于这个例子。
将 替换为您的资源组和应用名称。
脚本非常简单。需要明确的是,if($ip -like "*.*")
部分只是清除了不需要的 IPv6 地址。
显然,您必须根据您的设置在此处填写一些空白,但我希望这有助于您朝着正确的方向前进。
我正在尝试为我的 GitHub 操作将 IP 地址列入白名单,因为现在由于我的 Azure Web 应用程序的防火墙阻止来自非白名单 IP 地址的请求,工作流失败。 Github 提供的 API 中似乎有一个 CIDR 格式的 IP 地址列表:https://api.github.com/meta
但是我是 Azure 的新手,不知道如何将来自 Azure UI 中的 API 的大量 IP 地址列入白名单。当我转到我的 Azure 应用程序的“网络”页面,然后转到“访问限制”并单击“配置访问限制”时,有一个非常好的 GUI 可以将各个 IP 地址列入白名单,但它没有似乎有一种方法可以访问 API,我想知道是否有人知道我应该如何尝试访问“操作”:来自 GitHub [= 的 [IP1、IP2 等] 20=] 上面链接的页面,并将该 IP 数组汇集到我的访问限制配置中,理想情况下这将是动态的,因为显然 Github 有时会更新此页面...
感谢任何建议!提前致谢。
为此您需要一个脚本,该脚本需要 运行 作为具有 RBAC 权限的用户才能对应用服务进行更改。您还需要 Powershell 和 Azure CLI。您将需要 CLI 以脚本方式添加规则。
Powershell: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1
Azure CLI:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
$priority = 200;
$json = Invoke-RestMethod -Uri "https://api.github.com/meta"
foreach($ip in $json.actions){
if($ip -like "*.*"){
az webapp config access-restriction add -g <your_resourcegroup_name> -n <your_app_name> --rule-name --action Allow --ip-address $ip --priority $priority
Write-Output "$($ip) added to rules."
$priority++
}
}
两件事:
Priority = 200 在这个例子中,你可能想改变这个让允许规则出现在你所有现有的拒绝规则之前,所以检查你现有的优先级,我只需要选择一个数字对于这个例子。
将
替换为您的资源组和应用名称。
脚本非常简单。需要明确的是,if($ip -like "*.*")
部分只是清除了不需要的 IPv6 地址。
显然,您必须根据您的设置在此处填写一些空白,但我希望这有助于您朝着正确的方向前进。