ข้อมูลเบื้องต้นเกี่ยวกับ Microsoft Graph PowerShell SDK
แนวทางแบบครบวงจรสำหรับการจัดการ Microsoft 365
Microsoft Graph API มีมาระยะหนึ่งแล้ว และ Microsoft กำลังย้ายฟังก์ชันการจัดการเพิ่มเติม (เช่น การจัดการใบอนุญาตสำหรับบัญชี Azure AD) ไปยังแพลตฟอร์ม เมื่อ Microsoft เปลี่ยนฟังก์ชันเป็นกราฟ องค์กรอาจต้องอัปเดตสคริปต์ PowerShell
การเริ่มต้นใช้งาน Graph API อาจเป็นงานที่น่ากังวล โดยเฉพาะอย่างยิ่งหากคุณไม่มีประสบการณ์กับบริการที่ใช้ REST ด้วยแบบฝึกหัดและเวลาที่ใช้ในการอ่านเอกสารประกอบของกราฟ คุณจะสามารถดูได้ว่าเครื่องมือต่างๆ เช่น การประเมินการย้ายผู้เช่า Microsoft 365 นำมารวมกันและเริ่มเข้าใจคุณค่าของการใช้กราฟได้อย่างไร
หากคุณต้องการวิธีที่คุ้นเคยมากขึ้นในการใช้ประโยชน์จากกราฟ Microsoft Graph PowerShell SDK จะทำให้กระบวนการง่ายขึ้นและจัดแพคเกจลงในโมดูล PowerShell ที่เรียบง่าย (ค่อนข้าง) การเชื่อมต่อกับ Microsoft Graph โดยใช้ PowerShell SDK มีขึ้นและลง แต่จะทำให้กระบวนการเรียนรู้และการนำ Graph API ไปใช้ง่ายขึ้นสำหรับผู้ดูแลระบบผู้เช่า
ในส่วนแรกของซีรีส์เกี่ยวกับการใช้ Microsoft Graph PowerShell SDK ฉันอธิบายว่า SDK คืออะไรและสิ่งที่ต้องพิจารณาเมื่อเริ่มต้นใช้งาน
Microsoft Graph API คืออะไร
วิธีหนึ่งในการดู Microsoft Graph API (หรือ Graph API) คือชุดของโหนดในโครงสร้างต้นไม้แบบลอจิคัล คำขอจะถูกส่งไปยังปลายทางที่แสดงถึงข้อมูลที่คุณต้องการเข้าถึง
ตัวอย่างเช่น ผู้ใช้ ปลายทาง (https://graph.microsoft.com/v1.0) ส่งคืนผู้ใช้ทั้งหมดในผู้เช่า แต่ หากต้องการรับข้อมูลเกี่ยวกับผู้ใช้เฉพาะ เช่น user1@contoso.com เราจะสอบถามจุดสิ้นสุด https://graph.microsoft.com/v1.0/user1@contoso.com
ตรรกะนี้ดำเนินต่อไปตามโครงสร้างดังแสดงในรูปที่ 1 ตัวอย่างเช่น จุดสิ้นสุด https://graph.microsoft.com/v1.0/user1@contoso.com/Messages จะส่งกลับข้อความอีเมลสำหรับ user1@contoso.com ในขณะที่ปลายทาง https://graph.microsoft.com/v1.0/user1@contoso.com/<ID ข้อความ> ส่งกลับรายละเอียด ของข้อความแต่ละข้อความ
Microsoft Graph Explorer เป็นวิธีที่มีประโยชน์ในการสำรวจตำแหน่งข้อมูลต่างๆ และข้อมูลที่ส่งกลับ นอกจากนี้ยังมาพร้อมกับชุดข้อมูลตัวอย่างเพื่อสอบถามเพื่อให้คุณคุ้นเคยกับเครื่องมือก่อนที่จะเชื่อมต่อกับผู้เช่าที่ใช้งานจริงของคุณ ในรูปที่ 2 เราเห็นผลลัพธ์จาก Graph Explorer สำหรับปลายทาง ผู้จัดการ ของผู้ใช้ AdeleV
ผลลัพธ์ของการสืบค้นกราฟจะถูกส่งกลับในรูปแบบ JSON ซึ่งมีความยืดหยุ่นเพียงพอที่จะพิจารณาค่าประเภทต่างๆ และออบเจ็กต์ที่ซ้อนกัน
อีกสิ่งที่ควรพิจารณาเมื่อใช้ Graph API ก็คือสิทธิ์ที่จำเป็นสำหรับตำแหน่งข้อมูลแต่ละจุดและการดำเนินการที่คุณเรียกใช้ หากต้องการอ่านเพิ่มเติมเกี่ยวกับการอนุญาตใน Microsoft Graph API โปรดดูบทความเกี่ยวกับวิธีค้นหาสิทธิ์ Microsoft Graph ที่คุณต้องการ
PowerShell SDK ช่วยได้อย่างไร
การทำงานกับ Graph API เป็นแนวคิดใหม่สำหรับผู้ดูแลระบบผู้เช่าจำนวนมาก และมีช่วงการเรียนรู้ที่ต้องเชี่ยวชาญ PowerShell SDK เป็นวิธีสำหรับผู้ดูแลระบบที่คุ้นเคยกับ PowerShell มากขึ้นในการใช้กราฟโดยไม่ต้องกังวลกับข้อมูลเฉพาะ เช่น โทเค็นการตรวจสอบสิทธิ์และคำขอการจัดรูปแบบ
SDK ดำเนินการนี้โดยจัดเตรียม PowerShell cmdlets ที่ออกการเรียกกราฟในนามของคุณ ตัวอย่างเช่น ในรูปที่ 3 เราเห็น Get-MgGroup cmdlet จาก PowerShell SDK ออกคำขอ GET ไปยังจุดสิ้นสุด https://graph.microsoft.com/v1.0/groups . แม้ว่าจะเป็นไปได้ที่จะส่งคำขอนี้โดยตรงโดยใช้ Inrigger-WebRequest แต่การมีชุด cmdlet และพารามิเตอร์ที่คุ้นเคยมากกว่าจะช่วยให้ทำงานกับกราฟได้ง่ายขึ้นอย่างมาก
เมื่อสร้างออบเจ็กต์ใหม่หรืออัปเดตออบเจ็กต์ที่มีอยู่ผ่านกราฟ จำเป็นต้องใช้เพย์โหลด JSON เพื่อกำหนดพารามิเตอร์ของออบเจ็กต์ใหม่หรือที่อัปเดต เพย์โหลดนี้เป็นไปตามสคีมาที่กำหนดไว้ล่วงหน้าสำหรับออบเจ็กต์แต่ละประเภทซึ่งอาจเป็นเรื่องยากที่จะแก้ไขให้ถูกต้อง SDK cmdlet จะจัดรูปแบบเพย์โหลดโดยอัตโนมัติตามพารามิเตอร์ cmdlet ตัวอย่างเช่น ในรูปที่ 4 cmdlet New-MgUser จะส่งผ่านข้อมูล JSON ที่ Graph API ต้องการเพื่อสร้างผู้ใช้ใหม่
การใช้พารามิเตอร์ -Debug สำหรับ Microsoft Graph PowerShell SDK Cmdlets เป็นวิธีที่ดีในการมองเห็นว่า SDK กำลังทำอะไรในเบื้องหลัง และดูคำขอที่ถูกส่งไปยัง Graph API
การจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์สำหรับ Active Directory
ค้นพบวิธีการป้องกันและกู้คืนจากการโจมตี AD ผ่านโซลูชันการจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์เหล่านี้
การติดตั้ง PowerShell SDK
Microsoft Graph PowerShell SDK มีอยู่ใน PowerShell Gallery หากต้องการติดตั้ง SDK จะต้องลงทะเบียนพื้นที่เก็บข้อมูล PSGallery หากไม่มี การติดตั้งจะล้มเหลวดังแสดงในรูปที่ 5 หากต้องการลงทะเบียนพื้นที่เก็บข้อมูลหากไม่มี ให้รัน cmdlet Register-PSRepository -Default, และการติดตั้งควรจะใช้งานได้
เมื่อติดตั้ง SDK แล้ว จะมีโมดูลใหม่ 39 โมดูลให้ใช้งาน (นับถูกต้องในขณะที่เขียน)
การอัปเดต SDK นั้นค่อนข้างลำบากเมื่อเรียกใช้ cmdlet Update-Module Microsoft.Graph ในฐานะผู้ดูแลระบบและรีสตาร์ท PowerShell SDK ได้รับการอัปเดตทุกเดือน และสิ่งสำคัญคือต้องใช้เวอร์ชันล่าสุด
การใช้ระบบอัตโนมัติของ Azure
ระบบอัตโนมัติเป็นปัจจัยสำคัญสำหรับ PowerShell งานอัตโนมัติมักมีความสำคัญต่อการดำเนินงานในแต่ละวันของผู้เช่า Microsoft 365 เนื่องจากช่วยให้ผู้ดูแลระบบมุ่งเน้นไปที่การเพิ่มมูลค่าในที่อื่นได้ แม้ว่า SDK จะทำงานได้ดีอย่างสมบูรณ์แบบตามงานที่กำหนดเวลาไว้จากเซิร์ฟเวอร์ Windows แต่ Azure Automation จะเพิ่มระดับความปลอดภัยและความพร้อมใช้งานเพิ่มเติมให้กับงานอัตโนมัติ
บทความเกี่ยวกับการใช้ Microsoft Graph SDK สำหรับ PowerShell กับ Azure Automation นี้ อธิบายข้อกำหนดในการรับ Graph SDK ที่ทำงานใน Azure Automation
สิทธิ์ที่ได้รับมอบหมายและแอปพลิเคชัน
Microsoft Graph รองรับสิทธิ์สองประเภท ได้รับมอบหมาย และ แอปพลิเคชัน ในระดับสูง สิทธิ์ที่ได้รับมอบสิทธิ์จะทำงานเหมือนกับว่ามีผู้ใช้อยู่ และโดยทั่วไปกำหนดให้ผู้ใช้ตรวจสอบสิทธิ์และรับโทเค็นการเข้าถึงแบบโต้ตอบ สิทธิ์ที่ได้รับมอบหมายมักจะใช้สำหรับแอปพลิเคชันไคลเอนต์ที่เชื่อมต่อกับกราฟในนามของผู้ใช้และเป็นวิธีการเริ่มต้นสำหรับ PowerShell SDK และ Graph Explorer แอปที่ใช้สิทธิ์ที่ได้รับมอบหมายนั้นจำกัดอยู่เพียงสิทธิ์ที่มีให้กับผู้ใช้ที่ลงชื่อเข้าใช้ ดังนั้นผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบที่ใช้ SDK จะสามารถดำเนินงานที่บัญชีของตนมีสิทธิ์ดำเนินการเท่านั้น
สิทธิ์ แอปพลิเคชัน ทำงานเป็นการลงทะเบียนแอปและรองรับการตรวจสอบสิทธิ์แบบไม่โต้ตอบ โดยทั่วไปการอนุญาตแอปพลิเคชันจะใช้สำหรับงานอัตโนมัติหรือแอปที่ไม่สามารถใช้การรับรองความถูกต้องแบบโต้ตอบได้ การกำหนดค่าสิทธิ์ของแอปพลิเคชันสำหรับ Graph SDK จำเป็นต้องใช้แอปพลิเคชันที่ลงทะเบียนใน Azure AD เนื่องจากสิทธิ์ของแอปพลิเคชันไม่ได้ทำงานในฐานะผู้ใช้ปัจจุบัน จึงไม่อยู่ภายใต้ข้อจำกัดสิทธิ์ที่สิทธิ์ที่ได้รับมอบไว้ โปรดใช้ความระมัดระวังเมื่อใช้สิทธิ์ของแอปพลิเคชัน โดยเฉพาะอย่างยิ่งเมื่อต้องจัดเก็บข้อมูลลับไคลเอ็นต์หรือใบรับรอง
ข้อควรพิจารณาอีกประการหนึ่งเมื่อเลือกระหว่างสิทธิ์ที่ได้รับมอบหมายและสิทธิ์ของแอปพลิเคชันคือฟังก์ชันการทำงาน มีงานใน Microsoft 365 ที่ผู้ใช้ต้องทำ ตัวอย่างเช่น บทความเกี่ยวกับการสร้างกลุ่ม Microsoft 365 ใหม่ด้วย Microsoft PowerShell Graph SDK นี้จะแสดงวิธีตั้งค่ากลุ่ม Microsoft 365 และกำหนดป้ายกำกับความลับ ซึ่งวิธีนี้ใช้ได้ดีโดยใช้สิทธิ์ที่ได้รับมอบหมาย การพยายามทำเช่นเดียวกันกับการอนุญาตของแอปพลิเคชันล้มเหลว เนื่องจากไม่รองรับโทเค็นเฉพาะแอป (รูปที่ 6)
มีความแตกต่างหลายประการเช่นนี้ซึ่งส่งผลต่อประเภทของสิทธิ์ที่จำเป็น การวางแผนโค้ดของคุณเป็นสิ่งสำคัญในการตรวจสอบเอกสารประกอบเพื่อระบุจุดที่คุณอาจพบปัญหา
การเชื่อมต่อกับกราฟโดยใช้ SDK
มีหลายวิธีในการเชื่อมต่อกับ Graph API โดยใช้ SDK ขึ้นอยู่กับว่าคุณต้องการใช้ cmdlets อย่างไร สถานการณ์ที่พบบ่อยที่สุดสำหรับการเชื่อมต่อคือ:
- เชื่อมต่อแบบโต้ตอบด้วยสิทธิ์ที่ได้รับมอบหมาย
- เชื่อมต่อแบบไม่โต้ตอบกับสิทธิ์ของแอปพลิเคชันและใบรับรอง
- เชื่อมต่อแบบไม่โต้ตอบกับสิทธิ์ของแอปพลิเคชันและความลับของลูกค้า
- เชื่อมต่อโดยใช้ Azure Automation และข้อมูลประจำตัวที่มีการจัดการ
การเชื่อมต่อกับสิทธิ์ที่ได้รับมอบอำนาจน่าจะเป็นวิธีแรกที่ผู้คนจะพยายามและง่ายที่สุดที่จะทำ เรียกใช้ cmdlet Connect-MgGraph และระบุขอบเขตที่คุณต้องการพร้อมท์สำหรับการเข้าสู่ระบบและความยินยอมที่จะมอบให้กับแอป Microsoft Graph PowerShell ดังแสดงในรูปที่ 7
การใช้สิทธิ์แอปพลิเคชันกราฟกับสคริปต์จำเป็นต้องมีแอป Azure AD ที่ลงทะเบียนโดยได้รับความยินยอมให้ใช้สิทธิ์ที่จำเป็น ฉันจะไม่สร้างการลงทะเบียนแอปมากเกินไปที่นี่ เนื่องจากได้มีการพูดคุยกันหลายครั้ง (เช่นในบทความนี้เกี่ยวกับการเติมข้อมูลผู้ติดต่อ Outlook ล่วงหน้าด้วย Graph API) แต่เมื่อมีการลงทะเบียนแอปแล้ว Connect-MgGraph cmdlet ยอมรับทั้งพารามิเตอร์ ใบรับรองไคลเอ็นต์ หรือ โทเค็นการเข้าถึง
การใช้ ใบรับรองไคลเอ็นต์ ดังที่แสดงในบทความนี้เกี่ยวกับการใช้การรับรองความถูกต้องตามใบรับรองกับ Microsoft Graph PowerShell SDK เป็นวิธีที่ยอดเยี่ยมในการทำงานอัตโนมัติด้วย PowerShell SDK อย่างปลอดภัย (ตราบใดที่คุณแน่ใจว่าได้จัดเก็บใบรับรองไว้ ในตำแหน่งที่ปลอดภัย เช่น Azure Key Vault)
หากต้องการใช้ รหัสลับไคลเอ็นต์ คุณต้องได้รับโทเค็นการเข้าถึงก่อน มีหลายวิธีในการรับโทเค็นการเข้าถึงสำหรับ Graph API แต่วิธีง่ายๆ คือการใช้ Microsoft Authentication Library PowerShell Module (MSAL.PS) ดังที่กล่าวไว้ในบทความนี้เกี่ยวกับการใช้ Azure Automation เพื่อประมวลผลข้อมูล Exchange Online ด้วย PowerShell
รูปที่ 8 แสดงทั้งสองวิธีที่ใช้งานจริง
การใช้ Microsoft Graph SDK สำหรับ PowerShell กับ Azure Automation เป็นวิธีที่ดีในการทำให้สคริปต์ที่ทำงานระยะยาวหรือซับซ้อนเป็นอัตโนมัติ Microsoft Graph SDK ยังสามารถใช้ Managed Identities ผ่าน Azure Automation โดยกำหนดสิทธิ์ให้กับบริการหลักของข้อมูลประจำตัวที่มีการจัดการ และทำให้พร้อมใช้งานโดยตรงในบัญชี Automation
สรุป
ในบทความนี้ ฉันอธิบายว่า Microsoft Graph PowerShell SDK ช่วยให้การจัดการ Microsoft 365 ผ่าน Microsoft Graph API ง่ายขึ้นได้อย่างไร ฉันยังแสดงวิธีเชื่อมต่อกับกราฟโดยใช้ SDK ในสถานการณ์ต่างๆ การเชื่อมต่อและทำความเข้าใจข้อกำหนดเมื่อทำงานกับ Graph ถือเป็นความท้าทายใหญ่ประการแรกที่ผู้ดูแลระบบหลายคนต้องเผชิญเมื่อพยายามอัปเดตโค้ดของตน
ในส่วนที่สองของชุดนี้ เราจะเจาะลึกยิ่งขึ้นเกี่ยวกับการใช้ Microsoft Graph ผ่าน SDK และดูตัวอย่างว่าส่วนใดบ้างที่จะช่วยคุณประหยัดเวลาและความพยายามผ่านระบบอัตโนมัติและการประมวลผลจำนวนมาก







