🌟
GitHub ActionsからIP制限のかかったAzureリソースへ接続する
初めに
GitHub ActionsのワークフローからIP制限のかかったAzureリソースにアクセスして操作したい場合があると思います。
その際は、Azureリソースの操作前にGitHub ActionsのIPを穴あけする必要があります。
ただし、GitHub ActionsのIPは固定ではないため、ワークフロー実行毎に実行時IPを取得して穴あけした方がよさそうなので、その対応方法をまとめました。
前提
- IP制限をしたAzure Key Vaultを用意
- サービス プリンシパルを作成して GitHub シークレットとして追加しておく
概要
- 今回は
https://checkip.amazonaws.com/
を使ってGitHub Actionsワークフロー実行時のIPを取得 - Azure Key Vaultに取得したIPを穴あけをする
- GitHub ActionsからAzure Key Vaultに接続
- 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"
参考
Discussion