Azure DevOps 認証用アプリケーション更新手順

本記事では、Azure DevOpsがAzureテナントへのリソースに接続する際の、認証用アプリケーションの更新手順を記載いたします。

  • この記事でわかること
    • 自動更新の手順とリカバリ方法*1
    • 手動更新の手順*2

背景

Azure DevOpsのPipelineを利用してAzure App Serviceへアプリを自動で配置していますが、二年に一度認証用のアプリケーションの更新が必要となっています。

認証用アプリケーションでService principalを使用する場合、「Service principal (automatic)」という自動で更新する仕組みもあるのですが、時間の経過や担当者の変更、操作ミスなどの要因により、手動更新をせざるを得ないことがありました。

最近は「Workload Identity federation (automatic)」の方が推奨されているようですが、本記事ではService principalでの更新手順を記録しておきたいと思います。

認証用アプリケーションの更新手順

認証用のアプリケーションの更新が二年毎に発生するのは、Microsoft Entra ID(Azure AD)に登録する認証用アプリケーションの有効期限が最大で二年であるためです。

ただし、実際に運用する際は余裕をもって更新するかと思いますので、一年に一回更新するという運用になる事も多いのではないかと思います。

なお、Azure DevOps側から作成したアプリケーションの場合と、Microsoft Entra IDから作成したアプリケーション(例えば、Graph APIのアプリケーションなど)の場合では更新手順が異なります。

本記事では、Azure DevOps側から作成したアプリケーションについての更新手順を記載しています。

「Service principal (automatic)」の場合に期限を更新する手順

Azure DevOpsにサインインを行っていただき、該当のProjectを選択してください。

Projectの画面に入りましたら、下部の「Project settings」を押下します。

Project Settingsの画面から「Pipelines」の「Service connections」を選択します。

表示された画面から、更新したいアプリケーションを選択してください。

アプリケーション名を確認し、右上の「Edit」を押下してください。

Editの画面が表示されたら下部の青いボタン「Verify and save」を押下して完了です。

以上で、「Service principal (automatic)」の場合は有効期限が更新されます。

※ 念のため、有効期限が伸びていることをMicrosoft Entra IDで確認すると、よりよいかと思います。

「Service principal (automatic)」で間違えて新規のシークレットを発行してしまった場合のリカバリ方法

間違えて新規のシークレットを発行してしまった場合は、前に紹介した「Service principal (automatic)」の場合に期限を更新する手順は利用できなくなります。

この場合は、「Service principal (manual)」として新規作成する事が可能です。

先ほどと同様に「Project settings」を押下します。

これも先ほどと同様に「Service connections」から新規作成になるため「New service connection」を選択します。

「Azure Resource Manager」を選択します。「Next」を押下してください。

「Service principal (manual)」を選択します。「Next」を押下してください。

必要な情報を入力して 「Verify」から「Verify and save」を押下してください。

以上で完了になります。

automaticで登録して作成されたアプリケーションであっても、Microsoft EntraIDからシークレットの更新をしてしまうと、以降はmanualで新規作成する必要がありますのでご注意ください。

「Service principal (manual)」の場合に期限を更新する手順

手動の場合は、新規作成したシークレットを該当の「Service principal key」へ設定することで期限の更新ができます。

おわりに

推奨の認証方法が「Workload Identity federation (automatic)」へ変更されるということで、このような事態はなくなるかもしれませんが、「Service principal (automatic)」で作成している場合はAzure DevOps側の操作で概ね完結するというイメージを持っていただければ幸いです。

*1:「Azure Resource Manager」の「Service principal (automatic)」を選択して作成している前提です。

*2:「Azure Resource Manager」の「Service principal (manual)」を選択して作成している前提です。

執筆担当者プロフィール
千葉 泰規

千葉 泰規(日本ビジネスシステムズ株式会社)

デジタルイノベーション部所属。 取り扱う技術:C#,PowerShell,DevOps,Azure アプリ開発など主にしています。

担当記事一覧