[PowerShell] Office 365 Kullanıcıları için MFA'yı Etkinleştirin
Azure AD Premium lisansınız yoksa Office 365 kullanıcılarınız için MFA'yı etkinleştirmek için yalnızca iki seçeneğiniz vardır; bunu tüm kullanıcılar için güvenlik varsayılanlarıyla veya Yönetim Merkezi > Etkin Kullanıcılar > Çoklu'da her kullanıcı için manuel olarak açın. -faktör Kimlik Doğrulaması.
MFA'yı her kullanıcı için manuel olarak etkinleştirmek korkunç bir görev olabilir ve her yeni kullanıcı oluşturduğunuzda yapmanız gereken bir şeydir. PowerShell ile kolaylıkla bir kullanıcı grubunu seçip onlar için MFA'yı etkinleştirebiliyoruz.
MFA'nın etkin olmadığı kullanıcıları bulmak için bunu komut dosyasıyla birleştirirseniz tüm süreci otomatikleştirebilirsiniz.
PowerShell ile Office 365 Kullanıcıları için Çok Faktörlü Kimlik Doğrulamayı Etkinleştirin
PowerShell ile Office 365'te MFA'yı etkinleştirmeye başlamadan önce Microsoft Çevrimiçi Hizmetine bağlanmamız gerekir:
Connect-MsolService
MFA'yı PowerShell ile etkinleştirmek için öncelikle gerekli parametrelere sahip bir StrongAuthenticationRequirement nesnesi oluşturmamız gerekir. Daha sonra bu nesneyi MFA'yı etkinleştirmek istediğimiz her kullanıcı için ayarlayabiliriz.
# 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 $sarBunu başka bir cmdlet'in arkasına kolayca yönlendirebilmemiz için bunu bir fonksiyona sardım (kullanıcıları seçmek için veya bir CSV dosyasına dayalı olarak). İşlev, her kullanıcı için MFA'yı etkinleştirmeye çalışacak ve kullanıcıları ve MFA durumunu içeren bir nesnenin çıktısını alacaktır.
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"
}
}
}Ayrıca betiğin tamamını GitHub'ımda bulabilirsiniz.
Kullanıcıları hariç tutma
Kullanıcıları veya hesapları komut dosyasından hariç tutmanız gerekiyorsa, komut dosyasına aşağıdaki bölümü ekleyebilirsiniz:
# 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 UserPrincipalNameKapanıyor
Ortamınızın güvenliğini sağlamak söz konusu olduğunda MFA'yı açmak gerçekten önemlidir. Güvenlik varsayılanları daha küçük kiracılar için harika bir çözümdür ancak örneğin sistem hesaplarınız olduğunda işe yaramaz. PowerShell'i ve zamanlanmış bir görevi kullanarak Office 365'te MFA'yı hâlâ otomatikleştirerek hesaplarınızı güvende tutabilirsiniz.
Herhangi bir sorunuz varsa aşağıya bir yorum bırakmanız yeterli.
