DevOps Azure Piplinesの構築手順 -Microsoft Entra ID操作編-

Azure App Service 等を使用したの Web アプリの公開にて、DevOps Piplines を使用してデプロイを行うと、DevOps のリポジトリに登録されているソースコードを自動的にビルド・デプロイを行うことができます。

本記事では、デプロイを行うための Azure Piplines の構築手順について、数回に分けて紹介していきたいと思います。

初回の今回は、DevOpsでの操作前に必要となる Microsoft Entra ID(以下、Entra ID)での操作手順を紹介します。

前提

本記事で紹介する Entra ID 操作では、Pipelines機能使用時の認証に必要なサブスクリプションへの権限付与を行います。 

※本記事の操作は、デプロイ先のリソース(App Service等)が属しているサブスクリプションへの管理者権限が付与されているユーザーで実施する前提の手順となっています。

認証用Entra IDアプリ作成

  1. Microsoft Azure にログインを行う

  2. ダッシュボードから Microsoft Entra ID を開く

  3. 左ペイン内の「アプリの登録」を押下する

  4. 画面左上部の「+新規登録」を押下する

  5. 「名前」に任意のアプリ名を入力し、その他はデフォルト設定のまま「登録」ボタンを押下する

  6. 作成完了後、概要ページに移動するので「アプリケーション (クライアント) ID」、「ディレクトリ (テナント) ID」をメモ帳等に書き留める

  7. 左ペイン内の「API のアクセス許可」を押下する

  8. 「構成されたアクセス許可」に表示されている全ての項目の三点リーダーを押下し、「すべてのアクセス許可を削除」を押下する
    ※アプリに対して必要な権限だけが設定されている状態にするため、ここでは一旦規定の権限を削除し、後ほど必要な権限を設定します。

     

  9. 「構成されたアクセス許可」に何も表示されていないことを確認し、作成完了



  10. 以下を参考に、今回使用する認証方法を策定し、後続手順を実施する
    1. 証明書
      • 有効期限の設定が自由なため更新を頻繁に行う必要がないなどの利点から、基本的にはこちらを推奨
      • ただ、証明書の発行に Key Vault を使う必要がありコストが発生するため、顧客によっては予め許可を取っておくなど考慮が必要
      • 証明書を認証方法とする場合は「証明書発行・アップロード」へ移り、後続手順を実施
    2. クライアントシークレット
      • 有効期限が最大2年のため更新を頻繁に行う必要があるため、非推奨
      • 基本、料金は発生せず証明書よりも発行は容易なので、検証用や運用保守の発生しない開発のみの案件など、更新作業が発生しないようであればこちらでも可
      • クライアントシークレットを認証方法とする場合は「クライアントシークレット発行」へ移り、後続手順を実施

証明書発行・アップロード

  1. Microsoft Azure に管理者権限のあるアカウントでログインした状態で、ダッシュボードから Key Vault を開く

  2. 「+ 作成」ボタンを押下する



  3. 下記設定内容になるよう入力・確認し、「確認および作成」を押下する(設定値が赤字部分が変更箇所、赤字でないものはデフォルト値)
    • プロジェクトの詳細
      • サブスクリプション:<デプロイ先のリソースが属しているサブスクリプション>
      • ソースグループ:<デプロイ先のリソースが属しているリソースグループ>
    • インスタンスの詳細
      • Key Vault名:<任意のKey Vault名>
      • 地域:Japan East (任意の地域でも可)
    • 価格レベル:標準

  4. 「作成」ボタンを押下する

  5. 作成が完了するまで待機し、「リソースへ移動」を押下する

  6. 左ペイン内の「アクセス制御 (IAM)」を押下する

  7. 画面左上部「+追加 > ロールの割り当ての追加」を押下する

  8. 検索窓に「キー コンテナー」と入力し、「キー コンテナー管理者」を選択し、「次へ」ボタンを押下する

  9. 「+メンバーを選択する」を押下する

  10. 現在操作しているユーザー(「認証用 Entra ID アプリ作成」の手順#1でログインしたユーザー)を押下し、「選択」ボタンを押下する
    ※認証に Entra ID アプリではなくユーザーを使用する場合はサブスクリプション情報確認へスキップ、 Entra ID アプリ・ユーザーどちらにするかはサブスクリプション権限付与の手順#5を参考

  11. 「メンバー」の一覧に前手順で選択した Entra ID アプリ・ユーザーが表示されていることを確認し、「レビューと割り当て」を押下する

  12. 「レビューと割り当て」タブに遷移後、再度「レビューと割り当て」ボタンを押下する

  13. 「ロールの割り当てが追加されました」と表示されたことを確認し、左ペイン内の「証明書」を押下する

  14. 画面左上部「+生成/インポート」を押下する

  15. 下記設定内容になるよう入力・確認し、「作成」を押下する(設定値が赤字部分が変更箇所、赤字でないものはデフォルト値)
    • 証明書の作成方法:生成
    • 証明書の名前:<任意の証明書名>
    • 証明機関 (CA) の種類:自己署名証明書
    • 件名:CN=<任意の証明書名>*1
    • DNS 名:0 個の DNS名
    • 有効期間 (月単位):<任意の有効期限>*2
    • コンテンツの種類:
      • ◉ PKCS#12
      • 〇 PEM
    • 有効期間のアクション タイプ:有効期間が指定された割合になったら、自動的に更新する*3
    • 有効期間の割合:80
    • ポリシーの詳細構成構成されていません
    • タグ:タグがありません

  16. 「証明書 '<証明書名>' が正常に作成されました。」と表示されたことを確認し、少し時間(10秒ほど)を空けて「更新」ボタンを押下する
  17. 先ほど発行した証明書が「完了」の一覧に表示されており、且つ「有効にする」にチェックマークがついている状態であることを確認し、証明書名を押下する

  18. 「現在のバージョン」に表示されている項目を押下する

  19. 「CER 形式でダウンロード」を押下する

  20. ファイルがダウンロードされたことを確認後、「PFX/PEM 形式でダウンロード」を押下し、「ダウンロード」を押下する

  21. ファイルがダウンロードされたことを確認し、「認証用 Entra ID アプリ作成」で作成した Entra ID アプリを開く
  22. 左ペイン内の「証明書とシークレット」を押下する

  23. 「証明書」タブを開き、「証明書のアップロード」を押下する

  24. 「ファイルの選択」右にあるフォルダアイコンを押下し、先ほどダウンロードした CER ファイルを選択する

  25. 「説明」に証明書の概要を入力(省略可)し、「追加」ボタンを押下する

  26. 「正常に更新されました」と表示されたことを確認し、アップロード完了(クライアントシークレット発行は不要のため、「サブスクリプション情報確認」に移る)

クライアントシークレット発行

  1. Microsoft Azure に管理者権限のあるアカウントでログインした状態で、「認証用 Entra ID アプリ作成」で作成したアプリを開く
  2. 左ペイン内の「証明書とシークレット」を押下する

  3. 画面中央部「+ 新しいクライアント シークレット」を押下する

  4. 任意の「説明」及び「有効期限」を設定し、「追加」を押下する

  5. 作成完了後に表示されるクライアントシークレット一覧内の「値」の内容をメモ帳等に書き留める(何かしらの画面遷移後、内容を再確認できなくなるため注意)

サブスクリプション情報確認

  1. Microsoft Azure に管理者権限のあるアカウントでログインした状態で、デプロイ先のリソース(App Service 等)を開く

  2. 画面上部の「サブスクリプション」のサブスクリプション名を押下する

  3. 画面上部の「サブスクリプション ID」及び「サブスクリプション名」をメモ帳等に書き留め、確認完了



サブスクリプション権限付与

  1. Microsoft Azure に管理者権限のあるアカウントでログインした状態で、「サブスクリプション情報確認」で確認したサブスクリプションを開く
  2. 左ペイン内の「アクセス制御 (IAM)」を押下する

  3. 画面左上部「+ 追加 > ロールの割り当ての追加」を押下する

  4. 「特権管理者ロール」内の「共同作成者」を選択し、「次へ」を押下する

  5. 「+メンバーを選択する」を押下する

  6. 以下を参考に Entra ID アプリ・ユーザーを押下し、「選択」ボタンを押下する(複数選択可)
    • Entra ID アプリ
      • ユーザー自身に直接的な権限が付与されない等のセキュリティ観点や、テナントを跨いだ接続が行えるなどの利点から、基本的にはこちらを推奨
      • ただ、アプリの登録自体に申請・承認が必要な場合があるため、予め許可を取っておくなど考慮が必要
    • ユーザー
      • ユーザー自身にサブスクリプションの編集権限が付与されてしまうため、非推奨
      • 社内用の検証テナント等、セキュリティをあまり意識しなくて良いのであればこちらでも良いが、基本的には Entra ID アプリに権限付与を行う事をお勧めする
      • また、ゲストアカウントでは後続の「Service Connection作成」が行えないため、CD 先のテナント内に直接作成されたユーザーで行う必要がある
    ※以降の手順、及びキャプチャは全て Entra ID アプリでの認証を前提とする

  7. 「メンバー」の一覧に前手順で選択した Entra ID アプリ・ユーザーが表示されていることを確認し、「レビューと割り当て」を押下する

  8. 「レビューと割り当て」タブに遷移後、再度「レビューと割り当て」ボタンを押下する

  9. 「ロールの割り当てが追加されました」と表示されたことを確認し、権限付与完了

以上の手順で、Azure Piplines を使用するときの Entra ID 操作は完了となります。

おわりに

少々複雑な作業ですが、最初だけ設定すれば、繰り返し操作することはないので、手順を参考にして実施してみてください。

次回の記事では、Entra ID と DevOps を接続する際に使用する Service Connection の作成手順を紹介します。

*1:任意の証明書名が「test」の場合⇒CN=test

*2:月単位で入力(有効期限2年であれば「24」と入力)

*3:テナントのポリシーによっては自動的に更新はNGの場合があるため注意

執筆担当者プロフィール
江上 十五妃

江上 十五妃(日本ビジネスシステムズ株式会社)

MW本部AI & Dataプラットフォーム部1Gに所属。C#を利用したWebアプリの開発、PowerShellを利用したバッチスクリプトの開発等を担当。

担当記事一覧