Azure 中允许哪些 IP 进行 Github 操作?

问题描述 投票:0回答:3

我有一个 Azure 存储帐户。当我允许所有网络访问时,我的 Github 操作可以运行并更新我的 Azure 静态网站。

当我禁止除命名网络(147.243.0.0/16 和我的机器的 IP)之外的所有网络时,我在 Github Actions 中收到 403(请求被拒绝)错误。

我假设我需要将 GitHub 添加到这些 IP,但是当我运行时:

curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/meta

有大量的IP!我需要全部添加吗?

azure ip github-actions
3个回答
10
投票

我假设您希望允许 GitHub Actions 运行程序访问您的存储帐户?那么是的,由于这可能是大量虚拟机,因此您需要将大量 IP 列入白名单。

另一种方法是在管道中使用一些任务:

  1. 查找跑步者的IP,例如使用 https://api.ipify.org
  2. 使用 AZ CLI
  3. 将此 IP 添加到允许列表
  4. 做好存储方面的实际工作
  5. 通过 CLI 再次删除允许条目

示例代码:


name: Deploy to Azure
on:
  push:
    branches:
      - main
  workflow_dispatch:
jobs:
  publish:
    environment: Production
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v2

      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Whitelist GitHub Runner IP
        uses: azure/CLI@v1
        with:
          inlineScript: |
            set -eu
            agentIP=$(curl -s https://api.ipify.org/)
            az storage account network-rule add \
              --resource-group "${{ secrets.RESOURCE_GROUP }}" \
              --account-name "${{ secrets.STORAGE_ACCOUNT_NAME }}" \
              --ip-address $agentIP
            sleep 300

      - name: Upload to blob storage
        uses: azure/CLI@v1
        with:
          inlineScript: |
            set -eu
            az storage blob upload-batch \
              --account-name "${{ secrets.STORAGE_ACCOUNT_NAME }}" \
              --source ./src/ \
              --destination '$web' \
              --overwrite true

      - name: Purge CDN endpoint
        uses: azure/CLI@v1
        with:
          inlineScript: |
            set -eu
            az cdn endpoint purge \
              --content-paths  "/*"  \
              --profile-name "${{ secrets.CDN_PROFILE_NAME }}" \
              --name "${{ secrets.CDN_ENDPOINT }}" \
              --resource-group "${{ secrets.RESOURCE_GROUP }}"

      - name: Remove GitHub Runner IP from Whitelist
        if: always()
        uses: azure/CLI@v1
        with:
          inlineScript: |
            set -eu
            agentIP=$(curl -s https://api.ipify.org/)
            az storage account network-rule remove  \
              --resource-group "${{ secrets.RESOURCE_GROUP }}" \
              --account-name "${{ secrets.STORAGE_ACCOUNT_NAME }}" \
              --ip-address $agentIP

      - name: logout
        if: always()
        run: |
          az logout

4
投票

现在您可以为您的跑步者分配固定IP地址。这是测试版,但现在可行

固定IP范围

只需勾选复选框即可为您的计算机设置固定的 IP 范围,这提供了一个可以在内部系统和 GitHub 的允许列表中允许列出的 IP 范围,以便继续使用操作,同时使您的 GitHub 环境更加安全。

enter image description here


0
投票

在 Azure 应用服务上,也许 Azure 存储帐户也是如此,我在网络 --> 访问限制列表中添加了一项,并且仍然单独保留专用终结点设置。 我了解到,它们可以共存。

使用服务标签而不是 IP 或 IP 块添加规则。

常规设置 名称(可选):AzureDevOps 优先级:300 行动:允许 描述(必填):“服务标签 - AzureDevOps” 信号源设置 服务标签:AzureDevOps HTTP 标头过滤器设置:(使用默认值)

存储库和运行程序位于 GitHub 中并且有效。

设置 Azure 应用服务访问限制

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.