🤖
GitHub ActionsからAzureストレージアカウントへ書き込めるようにするための手順
GitHub ActionsからAzureストレージアカウントへ書き込めるようにするための手順
1. サービスプリンシパルのBlobストレージ書き込み権限設定
Azure Portal での設定方法
ステップ1: ストレージアカウントでのロール割り当て
# Azure CLIでの設定例
# サービスプリンシパルのオブジェクトIDを取得
az ad sp show --id <SERVICE_PRINCIPAL_APP_ID> --query objectId -o tsv
# ストレージアカウントに対してStorage Blob Data Contributorロールを割り当て
az role assignment create \
--assignee <SERVICE_PRINCIPAL_OBJECT_ID> \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
ステップ2: 必要な権限ロール
以下のいずれかのロールを割り当ててください:
-
Storage Blob Data Contributor (推奨)
- Blobの読み取り、書き込み、削除が可能
- 最小権限の原則に従った適切な権限
-
Storage Blob Data Owner
- より広範囲な権限(通常は不要)
ステップ3: 静的ウェブサイト機能の有効化確認
# 静的ウェブサイト機能を有効化
az storage blob service-properties update \
--account-name <STORAGE_ACCOUNT_NAME> \
--static-website \
--index-document index.html \
--404-document 404.html
Azure Portal GUI での設定
- Azure Portal → ストレージアカウント → 対象のストレージアカウント
- アクセス制御 (IAM) → 追加 → ロールの割り当ての追加
- ロール: "Storage Blob Data Contributor" を選択
- アクセスの割り当て先: "ユーザー、グループ、またはサービス プリンシパル"
- 選択: GitHub Actionsで使用するサービスプリンシパル名を検索して選択
- 保存
2. GitHub ActionsのIPレンジ許可設定
対応方法の選択肢
選択肢1: GitHub ActionsのIPレンジを追加(推奨)
# GitHub ActionsのIPレンジを追加
az storage account network-rule add \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP> \
--ip-address "13.107.42.0/24"
az storage account network-rule add \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP> \
--ip-address "140.82.112.0/20"
az storage account network-rule add \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP> \
--ip-address "185.199.108.0/22"
GitHub ActionsのIPレンジ(主要なもの)
# GitHub Actionsで使用される主要IPレンジ
13.107.42.0/24
140.82.112.0/20
185.199.108.0/22
192.30.252.0/22
20.201.28.151/32
20.207.73.82/32
20.27.177.113/32
20.87.245.0/32
選択肢2: Azure Portal での設定
- Azure Portal → ストレージアカウント → 対象のストレージアカウント
- ネットワーク → ファイアウォールと仮想ネットワーク
- IP アドレス範囲を追加 でGitHub ActionsのIPレンジを追加
選択肢3: Self-hosted Runnerの使用(セキュリティ重視の場合)
# .github/workflows/deploy.yml内で
jobs:
build-and-deploy:
runs-on: [self-hosted, linux] # Azure VM上のself-hosted runner
この場合、Azure VM(vnet-cdpipeline-stg-japaneast-001内)からアクセスするため、既存のネットワーク制限で問題なく動作します。
ワークフロー内でのエラーハンドリング追加
現在のワークフローにエラーハンドリングを追加することをお勧めします:
- name: Deploy to Blob Storage Static Website
run: |
echo "Deploying to Blob Storage static website..."
# ネットワーク接続テスト
echo "Testing network connectivity..."
az storage account show \
--name ${{ env.STORAGE_ACCOUNT_NAME }} \
--resource-group ${{ env.STORAGE_RESOURCE_GROUP }} \
--query "networkRuleSet.defaultAction" -o tsv
# 静的ウェブサイトのアップロード
if az storage blob upload-batch \
--source ./out \
--destination '$web' \
--account-name ${{ env.STORAGE_ACCOUNT_NAME }} \
--auth-mode login \
--overwrite true; then
echo "Static website deployment completed successfully."
else
echo "Static website deployment failed. Check network access and permissions."
exit 1
fi
推奨アプローチ
- まずはGitHub ActionsのIPレンジ追加を試す(選択肢1)
- セキュリティ要件が厳しい場合はSelf-hosted Runnerを検討(選択肢3)
- 権限設定は必ずStorage Blob Data Contributorロールを使用
これらの設定により、GitHub Actionsからストレージアカウントへのデプロイが可能になります。
Discussion