Получение информации о паролях MFA и самообслуживания с помощью PowerShell

Опубликовано: 2 Марта, 2023
Получение информации о паролях MFA и самообслуживания с помощью PowerShell

При планировании развертывания многофакторной проверки подлинности в вашей организации вы можете обнаружить, что не так просто узнать, включен ли пользователь, сколько пользователей в нашей текущей организации настроено на использование этой функции и т. д. В этой статье мы рассмотрим командлеты PowerShell, необходимые для получения информации, а в последнем разделе мы собираемся показать сценарий, который использует все темы, затронутые в этой статье. Прежде чем перейти к техническим деталям, важно понять два метода, доступных для включения MFA для любого пользователя.

Первый метод называется изменением состояния пользователя. Мы можем назначить это на уровне пользователя с помощью портала MFA, доступ к которому можно получить через портал Azure, администратора Office 365 и т. д. Второй метод, который не так распространен, — это использование условного доступа (для этого требуется Azure AD Premium), когда мы можем указать конечным пользователям перейти на страницу aka.ms/MFASetup и установить свои настройки MFA перед развертыванием решения.. Существуют некоторые различия при использовании назначения пользователей MFA и условного доступа. В этой статье мы предоставим всю информацию MFA для любого пользователя.

Прежде чем начать наше путешествие, нам нужно убедиться, что у нас установлен модуль Microsoft Online на компьютере, к которому мы собираемся подключаться через PowerShell. Убедитесь, что вы запускаете приведенный ниже командлет от имени администратора.

Install-Module MSOnline

Поиск пользователей, которым разрешено назначение пользователей MFA или условный доступ

Мы не найдем конкретного атрибута, указывающего, какой тип MFA был включен у конечного пользователя. Однако знание того, какой параметр позволяет каждый метод на уровне объекта, помогает нам получать информацию.

Если мы хотим получить список всех пользователей, которым разрешено использовать условный доступ MFA, простой способ — использовать свойство . Если это не $null, то мы знаем, что этот пользователь выполнил шаги aka.ms/MFASetup для настройки учетной записи. Следующий командлет предоставит список всех пользователей.

Get-MSOLUser -All | Where {$_.StrongAuthenticationMethods -ne $null }

Если мы хотим знать всех пользователей, которые были включены с помощью портала MFA (процесс изменения состояния пользователя), нам нужно изучить свойства и подсвойство . Если есть что-то кроме $null, то мы знаем, что данный пользователь включил MFA через портал MFA. Следующий командлет выведет список всех пользователей, которые были включены с помощью портала MFA:

Get-MsolUser -all | where-Object { $_.StrongAuthenticationRequirements.State -ne $null }

Как узнать, включен ли пароль самообслуживания

Вы можете узнать, какие пользователи включили функцию самообслуживания паролей, и это можно сделать, проверив атрибут StrongAuthenticationUserDetails. Если там есть какие-либо данные, это явный признак того, что пользователь настроил функцию самообслуживания по паролю.

$vUser = Get-MsolUser -UserPrincipalName <UserName> -ErrorAction SilentlyContinue Write-Host $vUser.StrongAuthenticationUserDetails

Код скрипта

Мы рассмотрели часть кода, необходимого для получения определенной информации, но, объединив все рассмотренные командлеты, мы можем создать простой код, который можно добавить в наш набор инструментов, чтобы помочь ответить на некоторые вопросы при развертывании MFA.

Скрипт прост. Мы можем указать два параметра: -AllMFAConditional, в котором будут перечислены все пользователи, включенные через процесс условного доступа MFA, или -ALLMFAPortal, в котором будут перечислены все пользователи, включенные через портал MFA (изменение состояния пользователя).

Другим вариантом является предоставление имени пользователя (@domain.ca мы добавляем автоматически как часть скрипта — не забудьте изменить домен перед первым запуском), и он предоставит всю информацию для этого пользователя. В приведенном ниже примере мы видим, что первый пользователь не настроил, а у второго пользователя функция включена через условный доступ.

Вот код для получения сведений MFA об одном пользователе или списка всех пользователей, включенных либо с помощью портала MFA, либо с помощью процесса условного доступа MFA.

Param( [parameter(mandatory=$false)]$User, [switch]$AllMFAConditional, [switch]$AllMFAPortal ) #Автозаполнение $User = $User + "@itprocentral.com" $vPath = (Get-Location).Path + "" If ($AllMFAConditional){ $vUser = Get-MSOLUser -All | Где {$_.StrongAuthenticationMethods -ne $null } Write-Host Write-Host "Количество пользователей с включенным MFA (условно): " $vUser.count Write-Host Write-Host "Список всех пользователей, настроенных с MFA (условно).." Write-Host $vUser | % { Write-Host $_.DisplayName "-" $_.UserPrincipalName} Write-Host break } If ($AllMFAPortal){ $vUser = Get-MsolUser -all | where-Object { $_.StrongAuthenticationRequirements.State -ne $null } Write-Host Write-Host "Количество пользователей с включенным MFA (порталом): " $vUser.count Write-Host Write-Host "Список всех пользователей, настроенных с MFA (Портал).." write-host $vUser | % { Write-Host $_.DisplayName "-" $_.UserPrincipalName} Write-host break } $vUser = Get-MsolUser -UserPrincipalName $User -ErrorAction SilentlyContinue If ($vUser) { Write-Host Write-Host User Details for $vUser.UserPrincipalName Write-Host Write-Host "Функция пароля самообслуживания (SSP)..: " -NoNewline; If ($vUser.StrongAuthenticationUserDetails) { Write-Host -ForegroundColor Green «Включено»} Else{ Write-Host -ForegroundColor Yellow «Не настроено»} Write-Host «Функция MFA (портал).................: "-NoNewline; If ((($vuser | Select-Object -ExpandProperty StrongAuthenticationRequirements).State) -ne $null) { Write-Host -ForegroundColor Yellow "Включено! Он переопределяет Conditional"}Else{ Write-Host -ForegroundColor Green "Not Configured"} Write-Host "Функция MFA (условно)............: " -NoNewline; If ($vUser.StrongAuthenticationMethods){ Write-Host -ForegroundColor Зеленый «Включено» Write-Host Write-host «Методы аутентификации:» для ($i=0;$i -lt $vuser.StrongAuthenticationMethods.Count;++$i ){ Write-host $vUser.StrongAuthenticationMethods[$i].MethodType "(" $vUser.StrongAuthenticationMethods[$i].IsDefault ")" } Write-Host Write-Host "Телефон, введенный конечным пользователем:" Write- Хост "Номер телефона.........: " $vuser.StrongAuthenticationUserDetails.PhoneNumber Write-Host "Альтернативный номер...:" $vuser.StrongAuthenticationUserDetails.AlternativePhoneNumber }Else{ Write-Host -ForegroundColor Yellow "Не настроено " } Write-Host Write-Host "Требования к лицензии...................: " -NoNewline; $vLicense = $False for ($i=0;$i -lt $vuser.Licenses.Count;++$i){ if (($vuser.licenses[$i].AccountSkuid) -like '*P1*' ) { $vLicense = $true } } If ($vLicense){Write-Host -ForegroundColor Зеленый "Включено"}Else{ Write-Host -ForegroundColor Желтый "Не лицензировано"} }Else{ write-host write-host -ForegroundColor Red "[Ошибка]: Не удалось найти пользователя " $user ". Проверьте имя пользователя и повторите попытку" Перерыв }

Вот оно!