Azure CLI で Azure AD B2C や Azure AD の app registration で作成したアプリのクライアントシークレットの更新方法のメモです。
ここでは B2C の話になっていますが、Azure AD でも全く一緒です。
Azure CLI で Azure AD B2C (または Azure AD) の操作をするためにはテナントの切り替えとか手間があるので、それを書いておきたかっただけです。
そして出オチですが、実際に運用するなら CLI でクライアントシークレット更新を自動化するよりも Terraform 使って IaC で構成管理をしながら更新処理を自動化するのがおすすめと思っています。
テナント ID の確認
Azure CLI でなにかを操作するときは、操作したい対象の Subscrition / Tenant ID にログインする必要があります。
ということでまずは Azure Portal で Azure AD B2C のテナントの ID を確認していきます。
Azure Portal を開き、上部の "Directory and subscriptions" のアイコンをクリックして、B2C のテナントに切り替えます。今回だと "BEACHSIDE B2C 3nd" に切り替えます。
Azure AD B2C の Tenant ID と Primary Domain を確認します。B2C いえど Azure AD 上にあるので Azure AD のリソースを開き Overview から確認が可能です。
余談ですが、私の B2C のディレクトリは全て、上図のように Menu behavior を "Docked" にして、アイコンは Azure AD と Azure AD B2C + ちょっと位にしています。これくらいしか使わないので。
Azure CLI の操作
テナントの切り替え
ターミナル (私は PowerShell を使ってます) で az login
コマンドでログインすると現在どの subscription/tenant にいるか確認できます。
もしくは az account list -o table
でどのサブスクリプションのテナント ID に入っているか確認できます。下図はぼかしだらけで意味不明な感じはありますが IsDefault: True
になっているのが現在のやつになります。
私の場合 Subsicription はあってるけどテナントが異なるので変更していきます。
Subscription だけを変えたいときはこちらのブログに書いたのでリンクをはっておきます。 Azure CLI で Azure に サインイン / テナント ( サブスクリプション ) 切り替え ( az account ...) - BEACHSIDE BLOG
本題のテナントを変えたいときは、テナントを指定してログインします。 先ほど Azure portal で確認した Primary domain が xxxxx.onmicrosoft.com
の場合はこんなコマンドを打ちます。--allow-no-subscriptions
は必要に応じて付けます。
az login --tenant xxxxx.onmicrosoft.com --allow-no-subscriptions
ログイン 出来たら、tenantId が表示されるので間違っていないかは確認しておきましょう。
クライアントシークレットの更新をする
さて、一応本題です。
App registration で登録している app 毎に、クライアントシークレットの一覧を見たり、更新削除ができます。
まずは Azure portal で B2C のリソースを開く → "App registration" を開いて、見たい app の Application ID を確認します。
ではとりあえずこの app の secret の一覧を見るコマンドです。--id
には上で確認した Application ID を指定します。
az ad app credential list --id xxxxx-xxxx-xxxx-xxx -o table
こんな感じで確認ができます。
次は、新規にクライアントシークレットを追加してみましょう。--id
には先ほどと同じで Application ID を指定します。
az ad app credential reset --id xxxxx-xxxx-xxxx-xxx --display-name "demo-secret2" --append
Azure portal で対象の app の "Certificates & secret" をみると、正しく追加されていることがわかります。
コマンドを使う際は、他のオプションもあるので公式ドキュメントで確認しておくとよいです。
az ad app credential | Microsoft Learn
ちなみにコマンドのオプション --append
が無いと既存のシークレットを削除して (2つあったら2つとも削除される)新たに1つのシークレットを作る動作をします。
そうするとどこかでこのシークレットを使っている際はそのサービスが一時的に利用できなくなるので、ダウンタイム無しでキーをローリングでアップデートできるよう、2つのキーで管理できるようコマンドを間違えないよう注意が必要です (こんなリスキーな操作は手作業をせず自動化しましょうってところですね)。
終わりに
今回は Azure CLI での変更方法を書いてみました。app に関する他の設定ももちろん CLI で操作可能です。
冒頭でも書きましたが本格的な運用では、冒頭でも書きましたがTerraform を使って IaC で管理しながら、Secret の有効期限の管理を自動化するのが安心安全でおすすめです。