はじめに
GitHub Actions で Azure にリソース(アプリやインフラ)をデプロイするとき、どうやって Azure にログインしていますか?
YAMLファイルに az login コマンドを直書きでもいけますし、azure-login アクションを使うこともできますよね。
とはいえ、GitHub Actions の Secret に、クライアントシークレットをベタ書きするのもちょっと気が引けるのも事実。
じゃあ、Entra ID 等の OIDC 連携をして、安全にログインする構成にしよう!ドキュメントを見ると・・設定手順複雑だ・・挫折しそう。
そんなあなたに、「Configure Azure Settings」 という GitHub アプリをご紹介します。
Configure Azure Settings
調べたきっかけは以下のポストです。
今回ご紹介する Configure Azure Settings は、GitHub リポジトリを Microsoft Azure に簡単に接続し、ホスト・ビルド・デプロイできるようにするために作られた GitHub アプリです。
個人・組織アカウント向けに無料で利用可能で、GitHub によるパブリッシャー認証済みです。
Azure アカウント・サブスクリプション・Entra ID テナントを持っていれば、すぐに使い始められるので、早速使ってみました。
使ってみた
ということで、設定〜デプロイまでの手順を記載します。
インストール
マーケットプレイスからインストール
まずは以下のリンクから GitHub App をリポジトリにインストールします。
Install it for free ボタンを押下。
Complete order and begin installation を押下します。order とありますが、無料で使えるのでご安心を。
インストールしたい先のリポジトリを選択。全てのリポジトリにインストールもできますが、一旦検証のために一つだけリポジトリを選択しました。
Azure Portal へのログイン画面に遷移するので、ご自身のユーザーアカウントでログインします。
サブスクリプション、リソースグループ、リソースの場所、マネージドID名を入力します。
この操作によって、指定されたリソースグループ配下に、ユーザー割り当てマネージド ID が作成され、当該サブスクリプションに対する所有者権限が割り当てられます。
構成ボタンを押下後、以下の内容が通知されたら成功です。
構成ボタンの横の GitHub リポジトリに移動する ボタンを押下すると、GitHub Apps に Configure Azure Settings が追加されていることがわかります。
作成されたマネージドIDも確認してみましょう。
当該サブスクリプションに対する所有者権限が割り当たっていることがわかります。
GitHub の Repository Secrets には、以下の値が自動的に追加されています。これは非常に便利。
AZURE_CLIENT_IDAZURE_MANAGEDIDENTITY_NAMEAZURE_MANAGEDIDENTITY_PRINCIPAL_IDAZURE_TENANT_ID
あとは、GitHub Actions のワークフローにおいて、上記で追加されたユーザー割り当てマネージド ID (サービスプリンシパル)を使ってログインするだけでOKです。
- name: Azure CLI login via OIDC
run: |
az login \
--service-principal \
--username ${{ secrets.AZURE_CLIENT_ID }} \
--tenant ${{ secrets.AZURE_TENANT_ID }} \
--federated-token $(curl -sLS "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=api://AzureADTokenExchange" -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" -H "Accept: application/json; api-version=2.0" | jq -r '.value')
Azure へのログインに成功しました!
あとは、任意の形で GitHub Actions のワークフローを作っていけばOKです。
おわりに
Configure Azure Settings を使って、Azure に安全・簡単にデプロイしましょう!












