外部ユーザーをテナントに招待するといろいろ便利なんだけど、ゲストユーザーも数十を超えると管理がつらくなってくる。定期的に一覧取得して、不要なアカウントを削除する方法を考えておく。
とりあえず、今回は一覧を取得する。
# ゲストユーザー一覧を取得する
こんな記事があったので、倣ってみた。
Powershell – Useful Azure AD queries using the AzureAD Module
Conect-AzureAD
$_default_log = $env:userprofile + '\Documents\azuread_guest_accounts.csv'
Get-AzureADUser -Filter "userType eq 'Guest'" -All $true | select DisplayName,UserPrincipalName,Mail,RefreshTokensValidFromDateTime,AccountEnabled | export-csv $_default_log -NoTypeInformation
ドキュメントフォルダの直下に、csvファイルでエクスポート。
ゲストユーザーの表示名、UPN(ゲストユーザーお約束、#EXT#@.onmicrosoft.com)、メールアドレス(こっちは一般的なメールアドレス)、有効になった日時、テナントにアクセス可能か、を一覧にしてくれている。
# 属性取得する
Connect-AzureAD
Get-AzureADUser -UserPrincipalName <UPN> | Select-Object *
ゲストユーザーを取得するときは、さっきの#EXT#@を含むほうで実施する。
Connect-msolService
Get-MsolUser -UserPrincipalName <UPN> | Select-Object *
上記でも同じように取得できる。(一部内容が違う)
ゲストユーザーを削除する。
Connect-AzureAD
Remove-AzureADUser -ObjectID <Account>
アカウントには、ゲストユーザーのUPN(さっきの#EXT#@のやつ)で行う。
課題いくつか
課題1.最終ログインを取得したい
LastLogonを取得したい。社内のアカウント以上に、能動的に消さないと残ってしまいがち。
GUIならできるんだけどね・・・。
課題2.外部のAzureADユーザーか、MSアカウントユーザーか取得する
GUIならできるんだけどね・・・。
課題3.自動削除
最終的には、週次バッチとかで、最終ログインが30日以上前のゲストユーザーは自動削除、とかできたら管理ラクになりそう。