🌟

GitHub ActionsからIP制限のかかったAzureリソースへ接続する

2022/05/23に公開

初めに

GitHub ActionsのワークフローからIP制限のかかったAzureリソースにアクセスして操作したい場合があると思います。
その際は、Azureリソースの操作前にGitHub ActionsのIPを穴あけする必要があります。
ただし、GitHub ActionsのIPは固定ではないため、ワークフロー実行毎に実行時IPを取得して穴あけした方がよさそうなので、その対応方法をまとめました。

前提

概要

  1. 今回はhttps://checkip.amazonaws.com/ を使ってGitHub Actionsワークフロー実行時のIPを取得
  2. Azure Key Vaultに取得したIPを穴あけをする
  3. GitHub ActionsからAzure Key Vaultに接続
  4. Azure Key VaultのIP穴あけを削除する

ワークフロー参考実装

name: AccessAzureKeyVault

on:
  workflow_dispatch:
    inputs:
      resource_group:
      keyvault:

jobs:
  access-azure-key-vault:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      # Azure Key Vaultに実行時のIPアドレスを穴あけする
      - name: Add IP Address For Key Vault
        uses: azure/CLI@v1
        with:
          azcliversion: 2.36.0
          inlineScript: |
            IP=$(curl -s https://checkip.amazonaws.com/)
            az keyvault network-rule add \
              --resource-group "${{ github.event.inputs.resource_group }}" \
              --name "${{ github.event.inputs.keyvault }}" \
              --ip-address "${IP}/32"

      # Key Vaultの操作
      - name: Show Key Vault Secret
        uses: azure/CLI@v1
        with:
          azcliversion: 2.36.0
          inlineScript: |
            az keyvault secret list \
              --vault-name "${{ github.event.inputs.keyvault }}" \

      # Azure Key Vaultに実行時のIPアドレスを穴あけを削除する
      - name: Remove IP Adress For Key Vault
        uses: azure/CLI@v1
        with:
          azcliversion: 2.36.0
          inlineScript: |
            IP=$(curl -s https://checkip.amazonaws.com/)
            az keyvault network-rule remove \
              --resource-group "${{ github.event.inputs.resource_group }}" \
              --name "${{ github.event.inputs.keyvault }}" \
              --ip-address "${IP}/32"

参考

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses
https://docs.microsoft.com/ja-jp/azure/developer/github/connect-from-azure?tabs=azure-portal%2Cwindows#create-a-service-principal-and-add-it-as-a-github-secret
https://qiita.com/fetaro/items/45f94a50316463cf093d
https://zenn.dev/cumet04/articles/private-api-from-actions
https://blog.foresta.me/posts/add-ip-to-security-group-in-github-actions/

Discussion