Azure ADの所有者

皆さんこんにちは。国井です。
突然ですが、Azure ADの管理者と言ったら何を思い浮かべますか?
グルーバル管理者やSharePoint管理者などのロールが
真っ先に思い浮かぶのではないかと思います。
その他にも管理者って存在するのをご存知ですか?

それは所有者と呼ばれる、エンタープライズアプリケーションやアプリの登録などに作られたアプリに対する管理者です。エンタープライズアプリケーションやアプリの登録でアプリを作成すると、作ったアプリの中に[所有者]という項目がありますが、これがそのアプリだけに割り当てられた管理者です。

image

所有者のロールを見落とすな!

この設定ってロールの管理を行うときに見落とされやすいポイントだと思うんですね。
うちの会社では[所有者]使わないってところなら問題ないと思うのですが、
利用している場合、どのアプリの所有者を誰に割り当てているかはキチンと管理しておく必要があります。
そうしないと、[エンタープライズアプリケーション]の場合だったら、アクセス許可を誰かに勝手に割り当てられてしまうでしょうし、[アプリの登録]の場合だったら、APIのアクセス許可を誰かが勝手に割り当てたり、シークレットを勝手に発行してAPIアクセスが誰でもできるようにしてしまう可能性があるのです。

こうした問題が起きないようにするためにも棚卸管理ができる体制を整えておきましょう
例えば、Azure AD PowerShellを利用する場合であれば、次のようなコマンドレットで確認してはいかがでしょうか?
以下は[アプリの登録]に登録された所有者一覧を表示するスクリプトです。

$app =Get-AzureADApplication
foreach ($a in $app){
echo $a.displayname
Get-AzureADApplicationOwner -ObjectId $a.ObjectId
}

すごい雑なスクリプトでごめんなさい!
image

実行結果はこんな感じです。
PGMというアプリにはKUNII Suguruユーザーが[所有者]として割り当てられていることがわかります。同じように[エンタープライズアプリケーション]に登録された所有者一覧を表示するスクリプトであればこんな感じ。

$app =Get-AzureADServicePrincipal
foreach ($a in $app){
echo $a.displayname
Get-AzureADServicePrincipalOwner -ObjectId $a.ObjectId
}

なお、アプリの登録にアプリを作成すると、エンタープライズアプリケーションにアプリが同時作成されますが、[所有者]の設定についてはアプリの登録とエンタープライズアプリケーションでは連動しておらず、別々に[所有者]の設定を行う必要があります。

Azure ADグループの所有者

ちなみに[所有者]という概念はAzure ADのグループにもあります。
Microsoft Teamsでチームを作成すると、チームのメンバーを設定しますが、この時に所有者とメンバーのどちらにするか?という設定があると思います。

image

ここで所有者を選択すると、チームのメンバーを設定する権限が割り当てられるようになりますが、これは裏の動きとしてはこうなります。

Teamsのチームの実態はMicrosoft 365グループというAzure ADのグループですが、チームにメンバーを追加するとグループにメンバーが追加されます。そしてグループに所有者としてメンバーを追加すると、そのユーザーはMicrosoft 365グループの所有者になるのです。

image

こちらも同じようにそれぞれのグループで誰が所有者になっているかを一覧で見るのであれば、PowerShellを使いましょう。

$group =Get-AzureADGroup
foreach ($a in $group){
echo $a.displayname
Get-AzureADGroupOwner -ObjectId $a.ObjectId
}

雑すぎるスクリプトでごめんなさいですが、
IDの棚卸をするときは所有者の棚卸もお忘れなく。

【参考情報】
https://github.com/jangeisbauer/report-AZAppOwnerPermissions