8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions で Azure に安全・簡単にデプロイしたい

Posted at

はじめに

GitHub Actions で Azure にリソース(アプリやインフラ)をデプロイするとき、どうやって Azure にログインしていますか?

YAMLファイルに az login コマンドを直書きでもいけますし、azure-login アクションを使うこともできますよね。

とはいえ、GitHub Actions の Secret に、クライアントシークレットをベタ書きするのもちょっと気が引けるのも事実。

じゃあ、Entra ID 等の OIDC 連携をして、安全にログインする構成にしよう!ドキュメントを見ると・・設定手順複雑だ・・挫折しそう。

そんなあなたに、「Configure Azure Settings」 という GitHub アプリをご紹介します。

Configure Azure Settings

調べたきっかけは以下のポストです。

image.png

今回ご紹介する Configure Azure Settings は、GitHub リポジトリを Microsoft Azure に簡単に接続し、ホスト・ビルド・デプロイできるようにするために作られた GitHub アプリです。

個人・組織アカウント向けに無料で利用可能で、GitHub によるパブリッシャー認証済みです。

Azure アカウント・サブスクリプション・Entra ID テナントを持っていれば、すぐに使い始められるので、早速使ってみました。

使ってみた

ということで、設定〜デプロイまでの手順を記載します。

インストール

マーケットプレイスからインストール

まずは以下のリンクから GitHub App をリポジトリにインストールします。

Install it for free ボタンを押下。

image.png

Complete order and begin installation を押下します。order とありますが、無料で使えるのでご安心を。

image.png

インストールしたい先のリポジトリを選択。全てのリポジトリにインストールもできますが、一旦検証のために一つだけリポジトリを選択しました。

image.png

Azure Portal へのログイン画面に遷移するので、ご自身のユーザーアカウントでログインします。

image.png

サブスクリプションリソースグループリソースの場所マネージドID名を入力します。

この操作によって、指定されたリソースグループ配下に、ユーザー割り当てマネージド ID が作成され、当該サブスクリプションに対する所有者権限が割り当てられます。

image.png

構成ボタンを押下後、以下の内容が通知されたら成功です。

image.png

構成ボタンの横の GitHub リポジトリに移動する ボタンを押下すると、GitHub Apps に Configure Azure Settings が追加されていることがわかります。

image.png

image.png

作成されたマネージドIDも確認してみましょう。

image.png

当該サブスクリプションに対する所有者権限が割り当たっていることがわかります。

image.png

GitHub の Repository Secrets には、以下の値が自動的に追加されています。これは非常に便利。

  • AZURE_CLIENT_ID
  • AZURE_MANAGEDIDENTITY_NAME
  • AZURE_MANAGEDIDENTITY_PRINCIPAL_ID
  • AZURE_TENANT_ID

image.png

あとは、GitHub Actions のワークフローにおいて、上記で追加されたユーザー割り当てマネージド ID (サービスプリンシパル)を使ってログインするだけでOKです。

deploy.yml
      - 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 へのログインに成功しました!

image.png

あとは、任意の形で GitHub Actions のワークフローを作っていけばOKです。

おわりに

Configure Azure Settings を使って、Azure に安全・簡単にデプロイしましょう!

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?