Weboldal keresés

[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 $sar

Ezt 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 UserPrincipalName

Becsomagolá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.

Kapcsolódó cikkek