如何使用 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

az webapp 配置命令:https://docs.microsoft.com/en-us/cli/azure/webapp/config/access-restriction?view=azure-cli-latest#az_webapp_config_access_restriction_add

$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++
    }
}

两件事:

  1. Priority = 200 在这个例子中,你可能想改变这个让允许规则出现在你所有现有的拒绝规则之前,所以检查你现有的优先级,我只需要选择一个数字对于这个例子。

  2. 替换为您的资源组和应用名称。

脚本非常简单。需要明确的是,if($ip -like "*.*") 部分只是清除了不需要的 IPv6 地址。

显然,您必须根据您的设置在此处填写一些空白,但我希望这有助于您朝着正确的方向前进。