[PowerShell] MFA engedélyezése az Office 365 felhasználók számára
Ha nem rendelkezik Azure AD Premium licenccel, akkor csak két lehetősége van az MFA engedélyezésére az Office 365-felhasználók számára: kapcsolja be az összes felhasználó számára az alapértelmezett biztonsági beállításokkal vagy manuálisan minden felhasználó számára a Felügyeleti központ > Aktív felhasználók > Több helyen. -faktoros hitelesítés.
Az MFA manuális engedélyezése minden felhasználó számára förtelmes feladat lehet, és ezt minden alkalommal meg kell tennie, amikor új felhasználót hoz létre. A PowerShell segítségével egyszerűen kiválaszthatunk egy felhasználói csoportot, és engedélyezhetjük számukra az MFA-t.
Ha még kombinálja is a szkripttel, hogy olyan felhasználókat találjon, akiknél nincs engedélyezve az MFA, akkor az egész folyamatot automatizálhatja.
Engedélyezze a többtényezős hitelesítést az Office 365 felhasználók számára a PowerShell segítségével
Mielőtt elkezdené az MFA engedélyezését az Office 365-ben a PowerShell segítségével, csatlakoznunk kell a Microsoft Online szolgáltatáshoz:
Connect-MsolService
Az MFA PowerShell szolgáltatással való engedélyezéséhez először létre kell hoznunk egy StrongAuthenticationRequirement objektumot a szükséges paraméterekkel. Ezután minden olyan felhasználónál beállíthatjuk ezt az objektumot, akiknek engedélyezni szeretnénk az MFA-t.
# 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 $sarEzt egy függvénybe csomagoltam, így könnyen átvezethetjük egy másik parancsmag mögé (a felhasználók kiválasztásához vagy egy CSV-fájl alapján). A funkció megpróbálja engedélyezni az MFA-t minden felhasználó számára, és egy objektumot ad ki a felhasználókkal és az MFA állapotával.
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://lazyadmin.nl
.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"
}
}
}A teljes szkriptet itt is megtalálhatja a GitHubon.
A felhasználók kizárása
Ha ki kell zárnia a felhasználókat vagy fiókokat a szkriptből, akkor hozzáadhatja a következő részt:
# Create a list of excluded accounts
$exclusions = @("archive@lazyadmin.nl",
"info@lazyadmin.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 UserPrincipalNameBecsomagolás
Az MFA bekapcsolása nagyon fontos a környezet védelme szempontjából. A biztonsági alapértelmezések nagyszerű megoldást jelentenek a kisebb bérlők számára, de például rendszerfiókok esetén nem működnek. A PowerShell és egy ütemezett feladat használatával továbbra is automatizálhatja az MFA-t az Office 365-ben, így megőrizheti fiókjainak biztonságát.
Ha bármilyen kérdése van, csak írjon megjegyzést alább.
