Azure AD アカウントの SSPR 状態を報告する

Azure AD アカウントの SSPR 状態を報告する

Microsoft Graph PowerShell SDK コマンドレットを使用して、SSPR 用にまだセットアップされていないアカウントを報告する

つぶやき ネイサン・マクナルティ について Get-MgReportAuthenticationMethodUserRegistrationDetail コマンドレットは私の注意を引き付けました。コマンドレットは、Azure AD アカウントの登録済み認証方法に関するレポートを生成します。Nathan はコマンドレットを使用して、設定されていないアカウントを識別しました セルフサービスパスワードリセット (SSPR)結果をフィルタリングして、メンバーアカウントのみを検索し、 IsSSPRCapable プロパティは False に設定されています。

Get-MgReportAuthenticationMethodUserRegistrationDetail フィルター処理された結果を出力しますが、データが実際に使用可能になる前に 2 つの問題が存在します。まず、コマンドレットは、各アカウントの人間に優しい表示名の代わりに、ユーザー識別子 (GUID) を出力します。第 2 に、フィルターはメンバー アカウントを分離できますが、クエリをさらに絞り込んで、共有メールボックス、リソース メールボックス、およびその他の目的のために作成されたアカウントを削除することはできません。

ソリューションの探索

1つの潜在的な解決策を以下に示します。スクリプトは、 Get-MgUser コマンドレットを使用して、少なくとも 1 つのライセンスが割り当てられているすべてのアカウントを検索します (返されるアカウントのセットには、共有メールボックスに使用されるアカウントを含めることができます)。アカウント識別子と表示名に関する情報はハッシュテーブルにロードされ、識別子を非常に迅速に検索できるようにします。次に、 Get-MgReportAuthenticationMethodUserRegistrationDetail 各アカウントをハッシュテーブルと照合します。一致が発生した場合は、セルフサービスのパスワード結果に対して現在有効になっていないライセンスアカウントがあることがわかっているため、その事実を報告できます。コードは次のとおりです。

Connect-MgGraph -Scope Directory.Read.All, UserAuthenticationMethod.Read.All
Select-MgProfile Beta

Write-Host "Finding licensed Azure AD accounts"
[array]$Users = Get-MgUser -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records -All
# Populate a hash table with the details
$UserTable = @{}
$Users.ForEach( { $UserTable.Add([String]$_.Id, $_.DisplayName) } )
Write-Host "Finding user accounts not capable of Self-Service Password Reset (SSPR)"
[array]$SSPRUsers = Get-MgReportAuthenticationMethodUserRegistrationDetail | Where-Object {$_.userType -eq 'member' -and $_.IsSSPRCapable -eq $False}           
Write-Host "Cross-checking against licensed users..."
[array]$NonSSPR = $Null
ForEach ($S in $SSPRUsers) {
  $DisplayName = $UserTable.Item($S.Id) 
  If ($DisplayName) {
     $NonSSPR += $DisplayName }
}
$PNonSSPR = ($NonSSPR.count/$Users.Count).toString("P")
Write-Host ("{0} out of {1} licensed accounts ({2}) are not enabled for Self-Service Password Reset" -f $NonSSPR.count, $Users.count, $PNonSSPR )
Write-Host ($NonSSPR -join ", ")

アカウント表示名のリストのみが出力されます。テナントでスクリプトを実行すると、次の出力が生成されました。

Finding licensed Azure AD accounts
Finding user accounts not capable of Self-Service Password Reset (SSPR)
Cross-checking against licensed users...
23 out of 32 licensed accounts (71.88%) are not enabled for Self-Service Password Reset
Andy Ruth (Director), Ben James, Ben Owens (DCPG), Bruno Satlier, Chris Bishop, , Jackson Hoare, James Abrahams, Jeff Guillet, John C. Adams, Ken Bowers, Lotte Vetler, Marc Vigneau, Michael King, Paul Howett, Peter Bridges, Rene Artois, Sean Landy, Terry Hegarty, Tony Redmond (Office 365 for IT Pros), Vasil Michev (Technical Guru)…

出力の改善

ルックアップテーブルにより多くの情報を含めることで、出力を改善できます。ハッシュ テーブルは高速ですが、キーと値に制限されますが、値は任意の PowerShell オブジェクトを使用できます。ハッシュテーブルは、各ユーザーに関する詳細情報を保持できます。例えば:

$UserTable = @{}
ForEach ($U in $Users) {
    $ReportLine  = [PSCustomObject] @{          
     Id                  = $U.Id
     DisplayName         = $U.DisplayName
     Department          = $U.Department
     Office              = $U.OfficeLocation  
     Country             = $U.Country
     }
    $UserTable.Add([String]$U.Id, $ReportLine) 
}

私はユーザーアカウントに5つのプロパティを選択しました。必要に応じて追加するのは簡単です。このようにハッシュ テーブルが設定されると、アカウントに対して一致が発生したときに PowerShell オブジェクトから値内の情報を取得し、それを使用してより優れたレポートを作成できます。

ForEach ($S in $SSPRUsers) {
  $Data = $UserTable.Item($S.Id) 
  If ($Data) { # We found a match
     $ReportLine  = [PSCustomObject] @{  
       Id = $Data.Id
       DisplayName = $Data.DisplayName
       Department  = $Data.Department
       Office      = $Data.Office
       Country     = $Data.Country }
     $NonSSPRUsers.Add($ReportLine) }
}

図 1 は、レポート・ファイルの出力を示しています。

SSPR に対して有効になっていない Azure AD アカウント
図 1: SSPR を使用しないユーザー アカウントの一覧

定期預金口座

これはまさに、テナントが定期的に実行したいユーザー アカウントに対するチェックの一種です。ある Azure オートメーションによって実行されるスケジュールされた運用手順書 はこの種の操作を処理するための良い方法であり、ここで説明するコードは運用手順書に簡単に移動できます。その間、ここにあります GitHub の完全なスクリプトへのリンク あなたが好きなようにそれを改善し、強化するために。


Microsoft 365 テナント管理者が利用できるデータを利用する方法については、 IT プロフェッショナル向け Office 365 電子ブック。私たちは、物事がどのように機能するかを理解するのが大好きです。

未分類

Posted by admin