Azure ADテナント削除時にエンタープライズアプリケーションの削除をPowerShellで実行

2022.05.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

検証に使っていて、不要になったAzure ADテナントを削除していました。
テナント削除時には自動で削除可能な状態かのチェック処理が動作し、その後削除を実行するという流れになるのですが、エンタープライズアプリケーションの項目がなかなかクリアになりませんでした。

そこで、公式ドキュメントのPowerShellを使って手順を試してみました。

事象

不要なテナントを削除メニューから削除しようとします。

テナント削除のためのチェック処理が行われるのですが、「エンタープライズアプリケーション」の状態がグリーンになりませんでした。

確認してみると、エンタープライズアプリケーションでフィルタリングされている状態では何も表示されなかったので、どうしたものかと調べてみると公式ドキュメントの削除手順でコマンドによる削除方法が案内されていたので試してみることに。
後述の削除コマンドで気づいたのですが、サービスプリンシパルが大量に登録されていて「エンタープライズアプリケーション」でフィルタリングされている状態なので登録されていることに気づかなかったようです。

コマンドで削除

以下の削除手順にはエンタープライズアプリケーションを削除するためのステップが掲載されていますので本日はこちらを試してみました。

  1. Open PowerShell as an administrator.
  2. Run Connect-AzAccount -tenant .
  3. Sign in to Azure AD in the Global Administrator role.
  4. Run Get-AzADServicePrincipal | ForEach-Object { Remove-AzADServicePrincipal -ObjectId $_.Id }.

削除対象のテナントID(b0fbccfa-12ab-34cd-926d-181b620e95ee)を事前に取得済みです。

$ pwsh
PowerShell 7.2.1
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

   A new PowerShell stable release is available: v7.2.2 
   Upgrade now, or check out the release page at:       
     https://aka.ms/PowerShell-Release?tag=v7.2.2       

PS /Users/iwasa.takahito> Connect-AzAccount -tenant b0fbccfa-12ab-34cd-926d-181b620e95ee

Account               SubscriptionName TenantId                             Environment
-------               ---------------- --------                             -----------
hoge@example.com                  b0fbccfa-12ab-34cd-926d-181b620e95ee AzureCloud

PS /Users/iwasa.takahito> Get-AzADServicePrincipal

ServicePrincipalNames : {707be275-6b9d-4ee7-88f9-c0c2bd646e0f}
ApplicationId         : 707be275-6b9d-4ee7-88f9-c0c2bd646e0f
ObjectType            : ServicePrincipal
DisplayName           : Dynamic Alerts
Id                    : 0489e5cf-12ab-34cd-b500-69cc6c0d40c9
Type                  : 

:

PS /Users/iwasa.takahito> Get-AzADServicePrincipal | ForEach-Object { Remove-AzADServicePrincipal -ObjectId $_.Id }

Confirm
Are you sure you want to remove service principal with object id '0489e5cf-12ab-34cd-b500-69cc6c0d40c9'.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y

Confirm
Are you sure you want to remove service principal with object id '04a8e422-12ab-34cd-94d2-5c628744bb52'.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y

:

削除完了後に、再度チェックを実施してみます。

全ての項目がクリアになりました。
そして、後続の削除操作も行えるようになりましたね。

さいごに

本日はAzure ADでテナントを削除する際に、エンタープライズアプリケーションをコマンドで削除してみました。
誰かが同じような事象で困った際に気づくきっかけにでもなれば良いなと思います。