บล็อกการเข้าถึงบัญชี Microsoft 365 ของผู้ใช้
มีเทคนิคมากมายเพื่อหยุดการเชื่อมต่อผู้คน
อัปเดตเมื่อ 20 กุมภาพันธ์ 2024
บทความล่าสุดเกี่ยวกับการใช้ PowerShell เพื่อควบคุมนโยบายการเข้าถึงแบบมีเงื่อนไขของ Entra ID ทำให้ฉันเริ่มคิดถึงเทคนิคที่ใช้ในการบล็อกการเข้าถึง Office 365 ของผู้ใช้ สี่ปีที่แล้ว ฉันพิจารณาปัญหาในบทความ Petri.com ที่ได้รับแรงบันดาลใจจากกฎหมายฝรั่งเศส อนุญาตให้ผู้คนตัดการเชื่อมต่อในช่วงสุดสัปดาห์ ในสถานที่อื่นนอกเหนือจากฝรั่งเศส ความจำเป็นในการรักษาพื้นที่ระหว่างเวลาส่วนตัวและเวลาทำงานมีความชัดเจนมากขึ้น เนื่องจากการแพร่ระบาดของไวรัสโควิด-19 ส่งผลให้ผู้คนจำนวนมากต้องทำงานจากที่บ้าน บางคนทำงานมากขึ้น บางคนทำงานน้อยลง และเส้นแบ่งระหว่างเวลาส่วนตัวและเวลาทำงานก็เบลอ ขณะนี้ความก้าวหน้าของเวลาและการพัฒนาทางเทคโนโลยีรวมกันทำให้สมเหตุสมผลในการทบทวนปัญหาอีกครั้ง
อัปเดต: Microsoft ได้ใช้การประเมินการเข้าถึงอย่างต่อเนื่อง (CAE) สำหรับเหตุการณ์สำคัญ เช่น การเปลี่ยนรหัสผ่าน หรือการบล็อกบัญชีในผู้เช่าทั้งหมด ผลกระทบสุทธิของ CAE คือการกีดกันการเข้าถึงบัญชีของผู้ใช้จะทำงานเร็วขึ้นมาก (เกือบจะในทันที)
การหยุดการเชื่อมต่ออีเมลชั่วคราวหรือถาวร
ปัญหาของการปิดใช้งานบริการสำหรับผู้ใช้ไม่ใช่แค่การหยุดคนทำงานในช่วงสุดสัปดาห์หรือช่วงพักร้อนเท่านั้น นอกจากนี้ยังใช้บังคับเมื่อมีคนลาออกจากบริษัทด้วย ในช่วงหลายปีที่ผ่านมา มีการพัฒนาเทคนิคต่างๆ มากมาย เดิมทีสำหรับการเชื่อมต่ออีเมล เพราะนั่นคือจุดเริ่มต้นของปัญหา
เนื่องจาก Exchange Online สนับสนุนชุดโปรโตคอลการเชื่อมต่อที่หลากหลายสำหรับกล่องจดหมาย คุณสามารถปิดใช้งานแต่ละโปรโตคอลได้โดยการเรียกใช้ Set-CASMailbox cmdlet ในตัวอย่างนี้ เราปิดใช้งานการเชื่อมต่ออุปกรณ์เคลื่อนที่สำหรับกล่องจดหมายสำหรับทั้ง Exchange ActiveSync (EAS) และเทคโนโลยีการซิงค์ของ Microsoft ที่ใช้โดย Outlook mobile:
Set-CASMailbox -Identity Ken.Bowers@Office365itpros.com -ActiveSyncEnabled:$False
Set-CASMailbox -Identity Ken.Bowers@Office365itpros.com -OutlookMobileEnabled:$False
เหตุใดจึงปิดการใช้งานทั้งสองโปรโตคอล? Outlook Mobile ใช้เทคโนโลยีการซิงค์ของ Microsoft เพื่อเปิดใช้งานฟีเจอร์ขั้นสูงมากมาย เช่น การมอบสิทธิ์ในการเข้าถึงกล่องจดหมาย แต่ไคลเอ็นต์อื่นๆ เช่น แอปอีเมลที่รวมอยู่ในระบบปฏิบัติการ iOS และ Android จะใช้ EAS สำหรับการเชื่อมต่ออีเมลพื้นฐานกับ Exchange Online หากคุณไม่ปิดใช้งานทั้งสอง คุณจะสร้างสถานการณ์ที่ผู้ใช้ยังคงสามารถเชื่อมต่อกับกล่องจดหมายของตนด้วยแอปอื่นได้ ที่จริงแล้ว เพื่อความสมบูรณ์ คุณควรปิดการใช้งานโปรโตคอล IMAP4 และ POP3 เพื่อปิดโอกาสที่อุปกรณ์มือถือสามารถเชื่อมต่อกับกล่องจดหมายได้
จุดอ่อนของการมุ่งเน้นไปที่การปิดใช้งานโปรโตคอลคือข้อมูลรั่วไหลบางอย่างอาจยังคงเกิดขึ้นได้ นำตัวอย่างของ Outlook mobile คุณสามารถปิดการใช้งานเทคโนโลยีการซิงค์ของ Microsoft เพื่อหยุดไคลเอนต์ส่งข้อความและดาวน์โหลดข้อความไปยังอุปกรณ์ แต่ทั้ง iOS และ Android ใช้บริการเพื่อแจ้งเตือนผู้ใช้ถึงข้อความใหม่ การแจ้งเตือนมีตัวอย่างข้อความใหม่เพื่อให้ผู้ใช้สามารถตัดสินใจว่าจำเป็นต้องอ่านข้อความฉบับเต็มหรือไม่ การแจ้งเตือนเหล่านี้ยังคงมาถึงหลังจากที่คุณปิดใช้งานโปรโตคอลการซิงค์
ในความเป็นจริง หากคุณจริงจังกับการควบคุมอุปกรณ์เคลื่อนที่ คุณจะต้องปรับใช้โซลูชันการจัดการอุปกรณ์เคลื่อนที่ (MDM) เช่น Intune ซึ่งช่วยให้คุณสามารถล้างข้อมูลองค์กรจากอุปกรณ์จากระยะไกลได้เมื่อจำเป็น
หยุดการเข้าถึง Office 365
อีเมลไม่ใช่แอปเดียวที่ขโมยเวลาในช่วงสุดสัปดาห์ Teams, Planner, Yammer, SharePoint Online และ OneDrive for Business ล้วนใช้เวลาหลายชั่วโมงหากได้รับอนุญาต วิธีการบล็อกการเข้าถึงแบบคลาสสิกคือการบล็อกบัญชีของใครบางคน ซึ่งสามารถทำได้ผ่านศูนย์การจัดการ Microsoft 365 โดยเลือกบัญชีและเลือกบล็อกการลงชื่อเข้าใช้ (รูปที่ 1)
การบล็อกบัญชีจะตั้งค่าคุณสมบัติ AccountEnabled เป็น False เมื่อบัญชีถูกปิดใช้งาน ผู้ใช้จะไม่สามารถลงชื่อเข้าใช้บัญชีของตนได้:
บังคับให้ออกจากระบบจากแอพ
การบล็อกบัญชีจากการลงชื่อเข้าใช้ยังกำหนดคุณสมบัติ RefreshTokensValidFromDateTime สำหรับบัญชีเป็นวันที่และเวลาที่มีการดำเนินการเกิดขึ้น ผลที่ได้คือทำให้โทเค็นการรีเฟรชที่ออกให้กับแอปพลิเคชันสำหรับผู้ใช้และโทเค็นที่ออกให้กับคุกกี้เซสชันในเบราว์เซอร์เป็นโมฆะ และบังคับให้ผู้ใช้ตรวจสอบสิทธิ์อีกครั้งเพื่อใช้แอปต่อไป ศูนย์การจัดการ Microsoft 365 มีตัวเลือกในการลงชื่อผู้ใช้ออกจากเซสชันทั้งหมด ดังนั้นคุณจึงสามารถดำเนินการนี้ได้โดยไม่ต้องบล็อกบัญชี
คุณยังสามารถบังคับให้ออกจากระบบสำหรับบัญชีด้วย PowerShell ได้โดยการเรียกใช้ cmdlet Revoid-MgUserSignInSession:
$RevokeStatus = Revoke-MgUserSignInSession -UserId $User.Idการรีเซ็ตการลงชื่อเข้าใช้บัญชีจะตั้งค่า RefreshTokensValidFromDateTime เป็นวันที่และเวลาปัจจุบัน และ AccountEnabled เป็น True ผู้ใช้สามารถลงชื่อเข้าใช้ได้แล้ว เมื่อเกิดเหตุการณ์นี้ เบราว์เซอร์และแอปจะได้รับโทเค็นที่ถูกต้องใหม่ อาจใช้เวลาถึง 15 นาทีก่อนที่ผู้ใช้จะลงชื่อเข้าใช้แอปทั้งหมดได้
การบล็อกบัญชีด้วย PowerShell
Update-MgUser cmdlet บล็อกการเข้าถึงบัญชีผู้ใช้:
Update-MgUser -UserId 'Ken.Bowers@office365itpros.com' -AccountEnabled:$False
วิธีการที่แนะนำคือเรียกใช้ Update-MgUser เพื่อบล็อกบัญชี ตามด้วย Revoid-MgUserSignInSession เพื่อให้แน่ใจว่าบัญชีถูกบล็อกโดยบังคับให้ออกจากระบบสำหรับแอปทั้งหมด
การดำเนินการบล็อกวันหยุดสุดสัปดาห์
กลับมาที่ปัญหาเดิมคือวิธีตัดการเชื่อมต่อผู้คนจาก Microsoft 365 ด้วยเหตุผลใดก็ตาม สมมติว่าเราต้องการให้สิ่งนี้เกิดขึ้นกับผู้ใช้บางหมวดหมู่เท่านั้น เช่น ผู้ใช้ที่ทำงานในประเทศใดประเทศหนึ่ง หากบุคคลเหล่านั้นเป็นสมาชิกของกลุ่ม เราสามารถใช้กลุ่มนั้นเพื่อขับเคลื่อนกระบวนการตัดการเชื่อมต่อได้ ในตัวอย่างนี้ รายชื่อการแจกจ่ายจะกำหนดบัญชีที่จะตัดการเชื่อมต่อ:
[Array]$Accounts = Get-DistributionGroupMember -Identity "BlockWeekend" | Select WindowsLiveID, ExternalDirectoryObjectId
ForEach ($Account in $Accounts) {
Write-Host "Turning Off Office 365 Access for" $Account.WindowsLiveID
Update-MgUser -UserId $Account.ExternalDirectoryObjectId -AccountEnabled:$False
$RevokeStatus = Revoke-MgUserSignInSession -UserId $Account.ExternalDirectoryObjectId }
รายชื่อการแจกจ่ายแบบไดนามิกอาจเป็นทางเลือกที่ดีกว่า เนื่องจากสมาชิกจะถูกขับเคลื่อนด้วยคุณสมบัติ เช่น ประเทศหรือเมือง ในการดึงชุดผู้ใช้ของรายชื่อการแจกจ่ายแบบไดนามิก เราใช้ตัวกรองผู้รับสำหรับรายชื่อเพื่อค้นหาสมาชิก:
$AccountFilter = (Get-DynamicDistributionGroup -Identity "French Country Users").RecipientFilter
[Array]$Accounts = Get-Recipient -RecipientPreviewFilter $AccountFilter | Select-Object WindowsLiveID, ExternalDirectoryObjectId
แน่นอน คุณสามารถใช้ Get-MgGroupMember cmdlet เพื่อดึงรายละเอียดของสมาชิกกลุ่มได้หากต้องการ ตัวอย่างเช่น:
[array]$GroupId = (Get-MgGroup Filter "DisplayName eq 'BlockWeekend'").Id
[array]$GroupMembers = Get-MgGroupMember -GroupId $GroupId | Select-Object additionalProperties
$GroupMembers.displayNameไวยากรณ์นี้ใช้ได้กับรายชื่อการแจกจ่าย กลุ่มความปลอดภัย กลุ่ม Microsoft 365 และกลุ่ม Microsoft 365 แบบไดนามิก ใช้ไม่ได้กับรายการแจกจ่ายแบบไดนามิกเนื่องจากไม่มีวัตถุเหล่านี้ใน Entra ID
งานในการยกเลิกการเชื่อมต่อผู้ใช้นั้นตรงไปตรงมา ทุกคืนวันศุกร์ เราจะเรียกใช้สคริปต์ PowerShell เพื่อปิดการเข้าถึง และเรียกใช้สคริปต์อื่นเพื่อย้อนกลับกระบวนการในเช้าวันจันทร์ ข้อเสียใหญ่คือวิธีที่ Teams ประมวลผลบัญชีที่ถูกบล็อกเพื่อลบออกจากบัญชีรายชื่อทีม (โดยไม่กระทบต่อการเป็นสมาชิกกลุ่ม) หากคุณสามารถจัดการกับปัญหานี้ได้ในขณะที่ Microsoft พิจารณาวิธีปรับปรุงสถานการณ์ การบล็อกบัญชีในช่วงเวลาสั้นๆ อาจได้ผลสำหรับองค์กรของคุณ
การใช้นโยบายการเข้าถึงแบบมีเงื่อนไข
นโยบายการเข้าถึงแบบมีเงื่อนไขจะทำงานหลังจากที่ผู้ใช้ตรวจสอบสิทธิ์สำเร็จแล้ว เพื่อตัดสินใจว่าจะสามารถเชื่อมต่อกับทรัพยากรที่ร้องขอได้หรือไม่ การเป็นสมาชิกของกลุ่มเป็นหนึ่งในเงื่อนไขที่รองรับ ซึ่งหมายความว่าเป็นเรื่องง่ายที่จะสร้างนโยบายเพื่อบล็อกการเข้าถึงแอปสำหรับกลุ่ม เนื่องจากเราต้องการบล็อกการเข้าถึงในช่วงสุดสัปดาห์ เราจึงสามารถเพิ่มเงื่อนไขอีกประการหนึ่งเพื่อบอกว่าการเข้าถึงนั้นใช้ได้หากผู้ใช้อยู่ในที่ตั้งของบริษัท แต่ไม่ใช่หากพวกเขาอยู่ที่บ้านหรือที่อื่น
รูปที่ 3 แสดงโครงร่างของนโยบายดังกล่าว ใครก็ตามที่ระบุในรายการการแจกจ่ายสุดสัปดาห์ที่ถูกบล็อก (คุณสามารถใช้กลุ่มความปลอดภัยหรือกลุ่ม Microsoft 365 ได้) จะถูกบล็อกหากพวกเขาพยายามเข้าถึงแอป Office 365:
เมื่อผู้ใช้พยายามเข้าถึงแอปถูกบล็อกโดยนโยบายการเข้าถึงแบบมีเงื่อนไข พวกเขาจะได้รับแจ้งว่าการลงชื่อเข้าใช้สำเร็จ (มีการตรวจสอบสิทธิ์) แต่พวกเขาไม่ได้รับอนุญาตให้เข้าถึงทรัพยากร:
หากเชื่อมต่อกับแอปอยู่แล้วและแอปพยายามต่ออายุโทเค็นการเข้าถึง นโยบายการเข้าถึงแบบมีเงื่อนไขจะบล็อกการออกโทเค็น รูปที่ 5 แสดงสิ่งที่ผู้ใช้เห็นเมื่อสิ่งนี้เกิดขึ้นใน Teams (แอปสุภาพมาก!):
การควบคุมนโยบายการเข้าถึงแบบมีเงื่อนไขด้วย PowerShell
นโยบายการเข้าถึงแบบมีเงื่อนไขช่วยให้องค์กรสามารถใช้การควบคุมอย่างละเอียดเกี่ยวกับการเข้าถึงที่ผู้ใช้มีต่อแอป ในสถานการณ์ของเรา เราต้องการอนุญาตให้เข้าถึงได้ฟรีระหว่างสัปดาห์ เราอาจปิดการใช้งานนโยบายการเข้าถึงแบบมีเงื่อนไขในช่วงสัปดาห์ทำงานและเปิดใช้งานเฉพาะช่วงสุดสัปดาห์เท่านั้น ทำได้ง่ายๆ ด้วยการแก้ไขนโยบายในศูนย์การจัดการ Entra หรือด้วย PowerShell ตัวอย่างเช่น ต่อไปนี้เป็นวิธีเปิดใช้งานนโยบาย:
$Policy = Get-MgIdentityConditionalAccessPolicy -Filter "displayName eq 'Block Weekend Access'"
Update-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $Policy.Id -State 'Enabled'
หากต้องการปิดใช้งานนโยบายหลังสุดสัปดาห์ ให้รัน:
Update-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $Policy.Id -State 'Disabled'การเปลี่ยนแปลงเงื่อนไขนโยบายการเข้าถึงแบบมีเงื่อนไข
แต่เนื่องจากเราต้องการแสดงให้เห็นถึงความเป็นไปได้ที่มีอยู่ในการทำงานกับนโยบายการเข้าถึงแบบมีเงื่อนไขผ่าน PowerShell สมมติว่านโยบายดังกล่าวมีการใช้งานอยู่เสมอเนื่องจากมีการใช้ในระหว่างสัปดาห์เพื่อจำกัดการเข้าถึงสำหรับผู้ใช้บางราย (ระบุโดยกลุ่ม) ไปยังสถานที่บางแห่ง ในช่วงสุดสัปดาห์เราต้องอัปเดตนโยบายกับกลุ่มอื่น
ผู้ใช้ที่ถูกบล็อกโดยนโยบายการเข้าถึงแบบมีเงื่อนไขถูกกำหนดให้เป็นเงื่อนไขนโยบาย หากต้องการดูว่าผู้ใช้รายใดได้รับผลกระทบจากนโยบาย เราสามารถตรวจสอบเงื่อนไขได้ ต่อไปนี้เราจะเห็นว่ามีกลุ่มเดียวรวมอยู่ในนโยบาย:
((Get-MgIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $PolicyId).Conditions).Users | Format-List
IncludeUsers : {}
ExcludeUsers : {}
IncludeGroups : {468a9356-cf88-4189-bf85-40b096e3c37f}
ExcludeGroups : {}
IncludeRoles : {}
ExcludeRoles : {}
เรารู้ว่านี่คือกลุ่มแทนที่จะเป็นผู้ใช้รายบุคคล เนื่องจากอยู่ในเงื่อนไข IncludeGroups กลุ่มนี้ถูกอ้างอิงโดยตัวระบุเฉพาะ (GUID) หากต้องการทราบว่ากลุ่มใดอยู่ในรายการ ให้เรียกใช้ cmdlet Get-MgGroup:
Get-MgGroup -GroupId 468a9356-cf88-4189-bf85-40b096e3c37f
DisplayName Id MailNickname Description GroupTypes
----------- -- ------------ ----------- ----------
Users Blocked for Weekend Access 468a9356-cf88-4189-bf85-40b096e3c37f BlockWeekend {}
หากต้องการสลับกลุ่มหนึ่งไปอีกกลุ่มหนึ่งในนโยบาย เราจำเป็นต้องสร้างตารางแฮชที่ระบุตัวระบุกลุ่มของกลุ่มที่จะรวมไว้ในนโยบาย จากนั้นเรียก cmdlet Update-MgConditionalAccessPolicy เพื่อทำการเปลี่ยนแปลง
นี่คือตัวอย่างโค้ดสำหรับอัปเดตนโยบายการเข้าถึงแบบมีเงื่อนไขของเรา คุณจะเห็นว่า GUID สำหรับกลุ่มอื่นถูกเขียนลงในชุดเงื่อนไข:
# Update the policy with a new group
$UpdateSettings = @{
Conditions = @{
users = @{
includeGroups = @(
"5c011293-7cc7-41c4-a0fc-3e3bb98db834"
)
}
}
}
Update-MgIdentityConditionalAccessPolicy -BodyParameter $UpdateSettings -ConditionalAccessPolicyId $Policy.Idภายในไม่กี่นาที นโยบายการเข้าถึงแบบมีเงื่อนไขที่อัปเดตก็มีผล และมีการบล็อกแล้ว
หากต้องการย้อนกลับกระบวนการหลังจากสิ้นสุดวันหยุดสุดสัปดาห์ ให้อัปเดตนโยบายด้วย GUID สำหรับกลุ่มเดิม ดูบทความนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการนโยบายการเข้าถึงแบบมีเงื่อนไขด้วย PowerShell
ตัวเลือกและตัวเลือก
นโยบายการเข้าถึงแบบมีเงื่อนไขจำเป็นต้องมีใบอนุญาต Entra ID P1 หากคุณได้รับใบอนุญาตเหล่านี้แล้ว และได้ลงทุนในการเข้าถึงแบบมีเงื่อนไข การเพิ่มนโยบายใหม่เพื่อควบคุมการเข้าถึงช่วงสุดสัปดาห์ก็ไม่ใช่เรื่องยาก ความสามารถในการควบคุมนโยบายด้วย PowerShell ทำให้การเปิดหรือปิดการเข้าถึงการสลับอัตโนมัติโดยอัตโนมัติง่ายขึ้น
ในทางกลับกัน หากคุณไม่มีใบอนุญาต Entra ID P1 คุณยังคงสามารถบล็อกบัญชีผู้ใช้ด้วย PowerShell สองสามบรรทัดได้ และหากคุณไม่ต้องการบล็อกการเข้าถึงและเตือนคนอื่นว่าพวกเขาควรทำงานน้อยลงในช่วงสุดสัปดาห์ บางทีเทคนิคการใช้กฎการขนส่งเพื่อประทับตราข้อจำกัดความรับผิดชอบ "สิทธิ์ในการยกเลิกการเชื่อมต่อ" บนจดหมายภายในอาจเป็นวิธีที่ดี
ทางเลือกเป็นสิ่งที่ดี…




