[PowerShell] Включить MFA для пользователей Office 365
Если у вас нет лицензии Azure AD Premium, у вас есть только два варианта включить MFA для пользователей Office 365: включить его для всех пользователей с помощью стандартных настроек безопасности или вручную для каждого пользователя в Центре администрирования > Активные пользователи > Многофакторная аутентификация.
Включение MFA для каждого пользователя вручную может быть ужасной задачей, и это то, что вам придется делать каждый раз, когда вы создаете нового пользователя. С помощью PowerShell мы можем легко выбрать группу пользователей и включить для них MFA.
Если вы даже объедините это со сценарием для поиска пользователей без включенной MFA, вы сможете автоматизировать весь процесс.
Включите многофакторную аутентификацию для пользователей Office 365 с помощью PowerShell
Прежде чем мы начнем включать MFA в Office 365 с помощью PowerShell, нам нужно подключиться к службе Microsoft Online:
Connect-MsolService
Чтобы включить MFA с помощью PowerShell, сначала необходимо создать объект StrongAuthenticationRequirement с необходимыми параметрами. Затем мы можем установить этот объект для каждого пользователя, для которого хотим включить MFA.
Create the StrongAuthenticationRequirement Object
$sa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$sa.RelyingParty = "*"
$sa.State = "Enabled"
$sar = @($sa)
Enable MFA for the user
Set-MsolUser -UserPrincipalName $user -StrongAuthenticationRequirements $sarЯ обернул это в функцию, чтобы мы могли легко подключить это к другому командлету (для выбора пользователей или на основе CSV файла). Функция попытается включить MFA для каждого пользователя и выведет объект с пользователями и статусом MFA.
Function Set-MFAforUser {
<#
.Synopsis
Enables MFA for an Office 365 User
.DESCRIPTION
Enable MFA for a user, you can turn it on for a single user or input a list of users
.NOTES
Name: Set-MFAforUser
Author: R. Mens - LazyAdmin.nl
Version: 1.0
DateCreated: jan 2021
Purpose/Change: Initial script development
.LINK
https://a-d.site
.EXAMPLE
Set-MFAforUser -UserPrincipalName johndoe@contoso.com
Enable MFA for the user John Doe
.EXAMPLE
Import-Csv -Delimiter ";" -Path ("path\to\file\users-to-enable.csv") | Foreach-Object { Set-MFAforUser $_.UserPrincipalName }
Enable MFA for all users in a CSV file
#>
[CmdletBinding(DefaultParameterSetName="Default")]
param(
[Parameter(
Mandatory = $true,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
ParameterSetName = "UserPrincipalName",
Position = 0
)]
# Enter a single UserPrincipalName or a comma separted list of UserPrincipalNames
[string[]]$UserPrincipalName
)
Begin {}
Process {
if ($PSBoundParameters.ContainsKey('UserPrincipalName')) {
foreach ($user in $UserPrincipalName) {
try {
# Src: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-userstates
$sa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$sa.RelyingParty = "*"
$sa.State = "Enabled"
$sar = @($sa)
# Change the following UserPrincipalName to the user you wish to change state
Set-MsolUser -UserPrincipalName $user -StrongAuthenticationRequirements $sar -ErrorAction Stop
[PSCustomObject]@{
UserPrincipalName = $user
MFAEnabled = $true
}
}
catch {
[PSCustomObject]@{
UserPrincipalName = $user
MFAEnabled = $false
}
}
}
}else{
Write-Verbose "No UserPrincipalName given"
}
}
}Вы также можете найти полный скрипт здесь, на моем GitHub.
Исключая пользователей
Если вам нужно исключить пользователей или аккаунты из скрипта, вы можете добавить к нему следующий фрагмент:
Create a list of excluded accounts
$exclusions = @("archive@a-d.site",
"info@a-d.onmicrosoft.com")
Replace the following line (160 in the complete script above)
$MsolUsers = Get-MsolUser -EnabledFilter EnabledOnly -MaxResults $MaxResults | Where-Object {$_.IsLicensed -eq $isLicensed} | Sort-Object UserPrincipalName
With this
$MsolUsers = Get-MsolUser -EnabledFilter EnabledOnly -MaxResults $MaxResults |
Where-Object {$_.IsLicensed -eq $true -and $_.UserPrincipalName -notin $exclusions -and !$_.StrongAuthenticationMethods -and !$_.StrongAuthenticationRequirements} |
Sort-Object UserPrincipalNameЗавершение
Включение многофакторной аутентификации (MFA) действительно важно для обеспечения безопасности вашей среды. Стандартные настройки безопасности являются отличным решением для небольших арендаторов, но они не работают, когда у вас есть системные учетные записи, например. Используя PowerShell и запланированную задачу, вы все равно можете автоматизировать MFA в Office 365, сохраняя безопасность ваших учетных записей.
Если у вас есть вопросы, просто оставьте комментарий ниже.
