สร้างนโยบายการเก็บรักษาแบบปรับเปลี่ยนได้ของคุณเองด้วย Azure Automation
หลีกเลี่ยงสิทธิ์การใช้งานระดับสูงด้วยนโยบายการเก็บรักษาแบบปรับเปลี่ยนได้แบบ DIY
ในบทความล่าสุดของฉันซึ่งครอบคลุมขอบเขตที่ปรับเปลี่ยนได้สำหรับนโยบายการเก็บรักษาของ Microsoft 365 ฉันได้กล่าวถึงวิธีใช้แอตทริบิวต์แบบกำหนดเองของ Azure AD เพื่อระบุชุดบัญชีสำหรับการประมวลผลการเก็บรักษา นอกเหนือจากการใช้เวลานานเกินไปในการประเมินและรายงานชุดบัญชีที่พบในแบบสอบถามขอบเขตแล้ว ขอบเขตที่ปรับเปลี่ยนได้ยังทำงานได้ดีและเป็นวิธีที่ดีในการตรวจสอบให้แน่ใจว่าการประมวลผลการเก็บรักษาของ Microsoft Purview นำไปใช้กับชุดบัญชีที่ระบุโดยอัตโนมัติโดยไม่ต้องอัปเดตโดยผู้ดูแลระบบอย่างต่อเนื่อง
ข้อเสียของขอบเขตที่ปรับเปลี่ยนได้คือข้อกำหนดสำหรับสิทธิ์การใช้งานที่สอดคล้องกับ Office 365 E5 หรือ Microsoft 365 E5 Microsoft ต้องการเพิ่มรายได้สูงสุดที่เกิดจากฐานผู้ใช้ระบบคลาวด์ของตน ซึ่งอาจเป็นผลมาจากการชะลอตัวของการเติบโตของผู้ใช้ Office 365 ผลลัพธ์ก็คือฟีเจอร์ใดๆ ที่มีการประมวลผลอัตโนมัติ โดยเฉพาะอย่างยิ่งในส่วนการปฏิบัติตามข้อกำหนด มักจะต้องใช้ใบอนุญาตระดับสูง
นโยบายการเก็บรักษาแบบคงที่
นโยบายการเก็บรักษาของ Microsoft 365 ที่มีขอบเขตคงที่พร้อมใช้งานสำหรับผู้เช่า Office 365 E3 ขอบเขตคงที่หมายความว่าผู้ดูแลระบบมีหน้าที่รับผิดชอบในการจัดการชุดสถานที่ตั้งที่ประมวลผลโดยนโยบาย ตำแหน่งที่ตั้งอาจเป็นกล่องจดหมาย ไซต์ กลุ่ม ทีม หรือบัญชี OneDrive
บางครั้ง ก็ไม่จำเป็นต้องมีการจัดการ เช่น ในกรณีที่นโยบายการเก็บรักษามีผลกับตำแหน่งที่ตั้งทั้งหมดบางประเภท (เช่น กล่องจดหมายทั้งหมดหรือไซต์ทั้งหมด) ในสถานการณ์อื่นๆ การตรวจสอบให้แน่ใจว่าชุดของตำแหน่งคงที่ที่ระบุในนโยบายนั้นถูกต้องอาจต้องใช้ความพยายามอย่างมาก
PowerShell และ Azure Automation มอบการอัปเดตสำหรับนโยบายการเก็บรักษาแบบปรับเปลี่ยนได้
ความคิดเกิดขึ้นกับฉันว่าควรเป็นไปได้ที่จะสร้างรูปแบบของการประมวลผลการเก็บรักษาแบบปรับเปลี่ยนได้ด้วยตนเองด้วยการผสมผสานระหว่างสคริปต์ PowerShell และ Azure Automation การรวมกันนี้จะจำลองสิ่งที่ขอบเขตแบบปรับได้ทำได้โดยไม่ต้องใช้สิทธิ์การใช้งานระดับสูง ในสถานการณ์สมมตินี้ สคริปต์ PowerShell:
- ระบุชุดของตำแหน่งสำหรับนโยบายการเก็บรักษาที่จะประมวลผล ขอบเขตที่ปรับเปลี่ยนได้จะสอบถาม Azure AD เพื่อค้นหาข้อมูลนี้ สคริปต์ของเราก็สามารถทำได้เช่นเดียวกัน
- ตรวจสอบตำแหน่งที่ระบุไว้ในนโยบายการเก็บรักษาเพื่อคำนวณตำแหน่งที่ควรลบออกและตำแหน่งที่จะเพิ่ม
- อัพเดตนโยบายการเก็บรักษาด้วยตำแหน่งใหม่
Azure Automation รันสคริปต์ตามกำหนดเวลาเพื่อตรวจจับและใช้การเปลี่ยนแปลงกับนโยบายการเก็บรักษา การสนับสนุนเพิ่มเติมล่าสุดสำหรับข้อมูลประจำตัวที่มีการจัดการโดย V3.0 ของโมดูลการจัดการ Exchange Online ทำให้กระบวนการนี้ง่ายขึ้น แม้ว่า cmdlets ที่ทำงานกับจุดสิ้นสุดการปฏิบัติตามกฎระเบียบยังคงต้องใช้ข้อมูลประจำตัวในการเชื่อมต่อ (Microsoft กำลังทำงานเพื่อแก้ไขปัญหานี้และการแก้ไขอาจ สามารถใช้ได้เมื่อคุณอ่านบทความนี้)
ตัวอย่างการใช้งาน
เพื่อพิสูจน์ว่าหลักการใช้งานได้ ฉันจึงเขียน Azure Automation runbook (เวอร์ชันของสคริปต์สำหรับทำงานในสภาพแวดล้อม Azure Automation) ขอบเขตที่ปรับเปลี่ยนได้สามารถประมวลผลผู้ใช้และกลุ่มหรือไซต์ SharePoint Online สำหรับการสาธิตนี้ สคริปต์จะประมวลผลบัญชีผู้ใช้โดยการอัปเดตกล่องจดหมาย Exchange Online และบัญชี OneDrive for Business ที่เป็นของบัญชีผู้ใช้ที่พบในแบบสอบถาม
ในการเริ่มต้น ฉันได้สร้างนโยบายการเก็บรักษาแบบคงที่ใหม่โดยมีขอบเขตแบบคงที่และกำหนดตำแหน่งหนึ่งสำหรับกล่องจดหมายและบัญชี OneDrive (รูปที่ 1) แม้ว่าขั้นตอนนี้อาจดูเหมือนเป็นขั้นตอนที่แปลก แต่สิ่งสำคัญคือต้องทำเช่นนี้และไม่กำหนดเป้าหมายนโยบายไปที่ตำแหน่งที่มีอยู่ทั้งหมด นโยบายที่แสดงทั้งหมดสำหรับตำแหน่งจะค้นหาและประมวลผลตำแหน่งทั้งหมด ตัวอย่างเช่น ถ้าคุณเลือกที่จะประมวลผลกล่องจดหมายทั้งหมด นโยบายจะประมวลผลกล่องจดหมายของผู้ใช้ ที่ใช้ร่วมกัน และที่ไม่ได้ใช้งานทั้งหมด
Microsoft Purview ปฏิบัติต่อนโยบายการเก็บรักษาแตกต่างกันเมื่อประมวลผลตำแหน่งที่มีอยู่ทั้งหมดสำหรับปริมาณงาน (เช่น กล่องจดหมายทั้งหมด) Set-RetentionCompliancePolicy cmdlet ที่ใช้โดยสคริปต์สามารถอัปเดตตำแหน่งได้เฉพาะเมื่อมีการตั้งค่านโยบายเพื่อประมวลผลสถานที่ที่เลือกเท่านั้น กล่าวอีกนัยหนึ่ง Set-RetentionCompliancePolicy cmdlet ไม่สามารถสลับนโยบายระหว่างการประมวลผลแบบ All-in และแบบเลือกได้
การเขียนสคริปต์
ด้วยนโยบายเป้าหมายที่ต้องดำเนินการ เราสามารถดำเนินการค้นหากล่องจดหมายและบัญชี OneDrive ที่จะประมวลผลได้ สคริปต์ทำสิ่งต่อไปนี้:
- เชื่อมต่อกับ Microsoft Graph PowerShell SDK ด้วยข้อมูลประจำตัวที่ได้รับการจัดการเพื่อเรียกใช้ Get-MgOrganization cmdlet เพื่อค้นหาโดเมนเริ่มต้นสำหรับผู้เช่า เราจำเป็นต้องใช้สิ่งนี้เพื่อคำนวณ URL สำหรับบัญชี OneDrive for Business เป้าหมาย
- เชื่อมต่อกับ Exchange Online ด้วยข้อมูลประจำตัวที่ได้รับการจัดการ
- เชื่อมต่อกับปลายทางการปฏิบัติตามข้อกำหนดโดยใช้ข้อมูลรับรองบัญชีที่จัดเก็บไว้ใน Azure Key Vault ความจำเป็นในการใช้ข้อมูลประจำตัวที่เก็บไว้จะไม่จำเป็นอีกต่อไปเมื่อ Microsoft อัปเกรด cmdlets การปฏิบัติตามข้อกำหนดเพื่อใช้ข้อมูลประจำตัวที่ได้รับการจัดการ (หรือแก้ไขการรับรองความถูกต้องตามใบรับรอง)
- ใช้ข้อมูลประจำตัวบัญชีเดียวกันเพื่อเชื่อมต่อกับจุดสิ้นสุดการจัดการ SharePoint Online
- ค้นหาชุดกล่องจดหมายเป้าหมาย ตัวอย่างนี้ใช้แอตทริบิวต์ที่กำหนดเองเดียวกันเพื่อทำเครื่องหมายกล่องจดหมายเหมือนในบทความก่อนหน้านี้
- ค้นหาชุดบัญชี OneDrive for Business ในผู้เช่าและจัดเก็บชื่อเจ้าของและ URL ไว้ในตารางแฮช
- วนซ้ำชุดกล่องจดหมายเพื่อตรวจสอบชื่อผู้ใช้หลักสำหรับกล่องจดหมายแต่ละกล่องเทียบกับตารางแฮชของ OneDrive หากพบรายการที่ตรงกัน เรารู้ว่าบัญชี OneDrive เป็นของเจ้าของกล่องจดหมาย ดังนั้นเราจึงจัดเก็บไว้ในรายการ
- ดึงข้อมูลชุดของตำแหน่งปัจจุบันในนโยบายโดยใช้ Get-RetentionCompliancePolicy cmdlet
- ตรวจสอบว่ากล่องจดหมายใดไม่อยู่ในชุดตำแหน่งปัจจุบัน และสร้างรายการกล่องจดหมายที่จะเพิ่มลงในนโยบาย ทำเช่นเดียวกันกับบัญชี OneDrive
- ตรวจสอบว่ากล่องจดหมายและบัญชี OneDrive อยู่ในขอบเขตของนโยบายหรือไม่ แต่ไม่ควรเป็นเช่นนั้น หากเราพบ ให้เพิ่มสถานที่เหล่านั้นลงในรายการสถานที่ที่จะลบออกจากนโยบาย
- เรียก Set-RetentionCompliancePolicy cmdlet เพื่อเพิ่มสถานที่ที่ควรจะอยู่ในนโยบายและลบสถานที่ที่ไม่ควรออก
- เรียก Get-RetentionCompliancePolicy cmdlet เพื่อรายงานชุดสถานที่ตั้งที่นโยบายครอบคลุมในขณะนี้
ฉันไม่เคยเห็นโค้ดที่ Microsoft ใช้เพื่อปรับใช้ขอบเขตที่ใช้งานอยู่สำหรับนโยบายการเก็บรักษา แต่ฉันแน่ใจว่ามีการประมวลผลแบบเดียวกันนี้เกิดขึ้นมากมายเพื่อค้นหาชุดของตำแหน่งที่นโยบายควรครอบคลุม ฉันแน่ใจว่าโค้ดของ Microsoft นั้นสวยงามและแม่นยำกว่าโค้ดของฉัน (และไม่ได้เขียนด้วย PowerShell) แต่ประเด็นก็คือโค้ดใช้งานได้และทำงานเหมือนกับขอบเขตแบบปรับได้
โปรดทราบว่านโยบายการปฏิบัติตามข้อกำหนดรองรับกล่องจดหมายได้สูงสุด 1,000 กล่อง ที่สำคัญกว่านั้น ขีดจำกัดต่ำกว่า (100) สำหรับไซต์ SharePoint Online และบัญชี OneDrive for Business การทดสอบและการจัดการข้อผิดพลาดสำหรับสคริปต์ที่ใช้ในการผลิตจำเป็นต้องจัดการกับขีดจำกัดเหล่านี้ หากต้องการหลีกเลี่ยงขีดจำกัด คุณสามารถสร้างนโยบายได้หลายนโยบายด้วยการตั้งค่าการเก็บรักษาเดียวกันโดยกำหนดเป้าหมายไปที่ชุดกล่องจดหมาย ไซต์ และบัญชีที่แตกต่างกัน
การจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์สำหรับ Active Directory
ค้นพบวิธีการป้องกันและกู้คืนจากการโจมตี AD ผ่านโซลูชันการจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์เหล่านี้
การเรียกใช้สคริปต์
คุณสามารถดาวน์โหลดสคริปต์ได้จาก GitHub และทดสอบด้วยตัวเอง สคริปต์ทำงานใน Azure Automation การเปลี่ยนแปลงบางอย่างในส่วนการรับรองความถูกต้องของโค้ดจะทำให้โค้ดทำงานแบบโต้ตอบได้
รูปที่ 2 แสดงผลลัพธ์ของสคริปต์หลังจากทำงานในบานหน้าต่างทดสอบของเซสชัน Azure Automation ผลลัพธ์จะแสดงตัวระบุออบเจ็กต์สำหรับกล่องจดหมายที่จะเพิ่มและลบ ในขณะที่ URL ใช้สำหรับบัญชี OneDrive for Business ค่าเหล่านี้เป็นค่าที่ใช้ในการระบุสถานที่ภายใน หากคุณต้องการ การเปลี่ยนผลลัพธ์เพื่อแสดงชื่อบัญชีจะเป็นเรื่องง่าย อย่างไรก็ตาม เนื่องจากสคริปต์ทำงานเป็นงาน Azure Automation ที่กำหนดเวลาไว้ จึงไม่มีใครดูผลลัพธ์ได้เว้นแต่จะมีข้อผิดพลาดเกิดขึ้น
รูปที่ 3 แสดงคุณสมบัติของนโยบายการเก็บรักษาหลังจากที่สคริปต์ทำงาน จากที่ก่อนหน้านี้มีเพียงตำแหน่งเดียวที่ระบุไว้สำหรับทั้ง Exchange Online และ OneDrive for Business ขณะนี้นโยบายครอบคลุมกล่องจดหมาย 24 กล่องและบัญชี 23 บัญชี ความแตกต่างระหว่างตัวเลขทั้งสองนั้นเกิดจากบัญชีใหม่ที่ยังไม่ได้ลงชื่อเข้าใช้ OneDrive
หลักการเดียวกันที่อธิบายไว้ที่นี่สามารถขยายเพื่อสร้างนโยบายการเก็บรักษาที่ปรับเปลี่ยนได้สำหรับ Microsoft 365 Groups หรือไซต์ SharePoint Online มันเป็นเพียงเรื่องของการเขียนโปรแกรม PowerShell
DIY ไม่ได้เป็นไปได้เสมอไป
การสร้างฟีเจอร์ Microsoft 365 ขึ้นใหม่ด้วยโค้ด DIY นั้นไม่สามารถทำได้เสมอไป ในกรณีนี้ การสร้างการประมวลผลการเก็บรักษาแบบปรับเปลี่ยนรูปแบบที่กำหนดเองนั้นตรงไปตรงมาอย่างสมเหตุสมผล การรวมกันของ PowerShell และ Azure Automation จะจำลองสิ่งที่ Microsoft มอบให้ในขอบเขตที่ปรับเปลี่ยนได้อย่างมีประสิทธิภาพ


