วิธีค้นหาสิทธิ์สำหรับ Microsoft Graph PowerShell
ฟังก์ชัน Microsoft Graph PowerShell แตกต่างไปเล็กน้อยจากสิ่งที่คุณอาจคุ้นเคยกับโมดูล PowerShell รุ่นเก่า ก่อนอื่นคุณต้องกำหนดสิทธิ์ที่คุณต้องการเพื่อดำเนินงานที่คุณต้องการ จากนั้นจะต้องกำหนดสิทธิ์เหล่านี้เมื่อคุณเชื่อมต่อโดยใช้พารามิเตอร์ -scope หรือภายในแอปพลิเคชันที่คุณอาจเชื่อมต่ออยู่
แนวทางปฏิบัติที่ดีที่สุดคือการใช้หลักการของสิทธิพิเศษน้อยที่สุด ซึ่งหมายความว่าคุณไม่อนุญาตให้ตัวเองมีความสามารถในการทำงานที่ไม่จำเป็นต้องดำเนินการ ตัวอย่างเช่น หากคุณต้องการเพียงอ่านข้อมูลเกี่ยวกับกลุ่มใน Azure AD คุณไม่จำเป็นต้องกำหนดสิทธิ์ในการเขียนให้กับตัวเอง เนื่องจากสิทธิ์ในการอ่านจะตรงตามความต้องการของคุณ
โดยการกำหนดสิทธิ์ที่คุณไม่ต้องการ คุณจะมีสิทธิ์มากเกินไป นี่คือสิ่งที่คุณมักอ่านในข่าว ตัวอย่างเช่น เมื่อผู้โจมตีโจมตีระบบของผู้ใช้ทั่วไปเพียงแต่ตระหนักว่าพวกเขาสามารถสร้างความเสียหายได้มากกว่าที่ตั้งใจไว้ เนื่องจากมีสิทธิ์เข้าถึงบทบาทและข้อมูลที่มีสิทธิพิเศษ
ด้วยการลดสิทธิ์ที่คุณกำหนดด้วย Microsoft Graph ไม่เพียงแต่คุณจะช่วยบรรเทาผลกระทบในกรณีที่ระบบถูกบุกรุก แต่ยังลดความเสี่ยงของการดำเนินการโดยไม่ตั้งใจอีกด้วย ซึ่งอาจทำให้ระบบหยุดทำงานหรือสูญเสียข้อมูลได้
ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถใช้เครื่องมือต่างๆ เพื่อกำหนดสิทธิ์ที่จำเป็นและน้อยที่สุดเพื่อทำงานที่คุณต้องการได้อย่างไร
ใช้ Find-MgGraphCommand cmdlet เพื่อค้นหาสิทธิ์
PowerShell สามารถใช้เพื่อเปิดเผยสิทธิ์ที่จำเป็นในการรันคำสั่งที่เราต้องการใช้ในสคริปต์ของเรา ทั้ง Find-MgGraphCommand และ Find-MgGraphPermissions จะให้ผลลัพธ์ที่คล้ายกัน
The Find-MgGraphCommand cmdlet จะช่วยให้คุณสามารถกำหนดเป้าหมาย cmdlet เฉพาะภายใน PowerShell จากนั้นคุณสามารถขยายคุณสมบัติการอนุญาตของ cmdlet เพื่อประเมินสิทธิ์ที่เกี่ยวข้องได้ ในขณะที่ Find-MgGraphPermission cmdlet ช่วยให้คุณค้นหาสิทธิ์ที่ตรงกับชื่อสิทธิ์ จากนั้นให้คำอธิบายสำหรับการอนุญาต
โดยส่วนตัวแล้ว ฉันพบว่า Find-MgGraphCommand cmdlet มีประโยชน์มากกว่ามาก ดังนั้นฉันจะเน้นไปที่เรื่องนั้นที่นี่ เหตุผลที่ฉันมักใช้ Find-MgGraphCommandFind-MgGraphCommand แทนที่จะใช้ cmdlet เฉพาะสำหรับการค้นหาสิทธิ์ ฉันมักจะรู้ว่าต้องเรียกใช้คำสั่งใดเพื่อดำเนินการบางอย่างโดยรู้ว่าฉันต้องการสิทธิ์ใดบ้าง
ตัวอย่างเช่น หากต้องการดูสิทธิ์ทั้งหมดที่เกี่ยวข้องกับ Get-MgBetaGroup cmdlet คุณสามารถเรียกใช้สิ่งต่อไปนี้:
Find-MgGraphCommand -command Get-MgBetaGroup -apiversion beta | `
select -first 1 -expandproperty permissionsจากเอาต์พุต คุณสามารถดูชื่อการอนุญาต ซึ่งสามารถรวมไว้ในสคริปต์การตรวจสอบสิทธิ์หรือแอปพลิเคชันของคุณได้ และคุณยังสามารถดูคำอธิบายแบบเต็มซึ่งกำหนดการอนุญาตได้ พารามิเตอร์ -apiversion ยังถูกรวมไว้เพื่อกำหนดเป้าหมาย เบต้า เวอร์ชันของ Microsoft Graph API ตามที่เราประกาศ cmdlet เบต้าในคำสั่งของเรา
ยังสามารถระบุพารามิเตอร์อื่นๆ ได้โดยใช้ Find-MgGraphCommand เช่น พารามิเตอร์ -Uri ซึ่งช่วยให้คุณสามารถค้นหาคำสั่งตามเส้นทาง URI ซึ่งเปิดเผยสิทธิ์ที่เกี่ยวข้องด้วย ตัวอย่างเช่น หากต้องการดู cmdlet ที่เกี่ยวข้องทั้งหมดสำหรับเส้นทาง URI ของผู้ใช้ คุณสามารถเรียกใช้คำสั่งต่อไปนี้:
Find-MgGraphCommand -Uri "/users/{id}"
เอาต์พุตของคุณจะคล้ายกับต่อไปนี้และส่งคืนผลลัพธ์สำหรับทั้งเวอร์ชัน 1.0 และเวอร์ชันเบต้าของ Graph API
Wildcards ยังสามารถใช้เพื่อขยายผลการค้นหาของคุณเพื่อค้นหาสตริงหรือข้อความค้นหาที่เฉพาะเจาะจง ตัวอย่างเช่น หากคุณต้องการค้นหาคำสั่งทั้งหมดที่มีสตริง "ผู้ใช้" อยู่ในชื่อ คุณสามารถเรียกใช้คำสั่งต่อไปนี้:
Find-MgGraphCommand -Uri .*users*.
ผลลัพธ์ของคุณจะมีลักษณะดังนี้:
คุณจะเห็นได้ว่าสิ่งนี้มีประโยชน์เพียงใด จากที่กล่าวมาข้างต้น คุณอาจสังเกตเห็นว่ามีคำสั่งให้เลือกมากมายกว่าจาก API เบต้า เมื่อเปรียบเทียบกับเวอร์ชัน 1.0
ใช้ Microsoft Graph Explorer เพื่อค้นหาสิทธิ์
เครื่องมือ Microsoft Graph explorer ยังมีประโยชน์ในการค้นหาสิทธิ์ที่จำเป็นอีกด้วย ลองมาดูตัวอย่างด้านล่างนี้ ฉันกำลังดำเนินการ GET< span style="font-weight: 400;"> คำขอด้วย URL ต่อไปนี้ https://graph.microsoft.com/v1.0/me/ ไดรฟ์/ล่าสุด. นี่จะส่งคืนไฟล์ล่าสุดทั้งหมดของฉันที่บันทึกไว้ในโฟลเดอร์ OneDrive ของฉันเอง เมื่อฉันเลือกวิธีการและป้อน URL แล้ว แท็บแก้ไขสิทธิ์จะให้สิทธิ์ที่จำเป็นแก่คุณในการดำเนินงาน
เราจะเห็นได้ว่าเนื่องจากฉันกำลังดำเนินการเพียง GET คำขอ แท็บแก้ไขสิทธิ์กำลังแนะนำสิทธิ์การอ่านที่จำเป็นให้ฉัน
ตอนนี้ สมมติว่าฉันต้องการสร้างโฟลเดอร์ใหม่ภายในรากของ OneDrive ของฉัน คุณสามารถทำได้โดยใช้คำขอ POST กับเนื้อหาคำขอต่อไปนี้:
{
"name": "My new folder name,
"folder": {}
}ตอนนี้เราจะเห็นว่าแท็บแก้ไขสิทธิ์กำลังแสดงสิทธิ์ที่จำเป็นในการสร้างโฟลเดอร์และไฟล์ ซึ่งได้แก่ Files.ReadWrite และ Files.ReadWrite.All .
กระบวนการเดียวกันนี้จะเป็นจริงหากคุณต้องการเรียกใช้การสืบค้นขั้นสูง ตัวอย่างเช่น ด้านล่าง ฉันจะอัปเดตแอตทริบิวต์ส่วนขยายของอุปกรณ์ Intune ที่มีการจัดการ:
หากเราเลือกแท็บแก้ไขการอนุญาต น่าแปลกที่เราได้รับแจ้งว่าเราต้องการ ไดเร็กทอรี สิทธิ์ AccessAsUser.All หมายความว่าเราจะมีสิทธิ์เช่นเดียวกับผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน
ตอนนี้ ย้อนกลับไปถึงสิ่งที่ทราบเกี่ยวกับประเภทการอนุญาต โดยที่การอนุญาตบางอย่างสามารถใช้ได้โดยใช้วิธีการสมัคร อาจไม่สามารถใช้ได้โดยใช้วิธีที่ได้รับมอบหมาย และในทางกลับกัน วีซ่า นี่เป็นเรื่องจริงในตัวอย่างที่แล้ว และจะนำไปสู่ส่วนถัดไปของเราอย่างดี
ใช้ Microsoft Docs เพื่อค้นหาสิทธิ์
เอกสารอย่างเป็นทางการของ Microsoft ที่ https://learn.microsoft.com เป็นที่ที่คุณไปเพื่อรับรายละเอียดปลีกย่อยเกี่ยวกับ cmdlets การอนุญาต และไวยากรณ์สำหรับแต่ละคำสั่ง แม้ว่าข้อมูลนี้ยังคงสามารถเปิดเผยได้โดยใช้วิธีอื่นในโพสต์
หากเราใช้ตัวอย่างก่อนหน้านี้ โดยที่เราอัปเดตแอตทริบิวต์ส่วนขยายของอุปกรณ์โดยใช้ Microsoft Graph explorer (พร้อมสิทธิ์ที่ได้รับมอบหมาย) แท็บแก้ไขสิทธิ์จะแสดงเฉพาะเราต่อ สิทธิ์ Directory.AccessAsUser.All ในสถานการณ์นี้ เราไม่สามารถมองเห็นสิทธิ์ที่จำเป็นหากเราต้องการใช้สิทธิ์ของแอปพลิเคชัน เนื่องจากข้อจำกัดของสิทธิ์ที่ได้รับมอบหมาย
อย่างไรก็ตาม เราสามารถใช้เอกสารอ้างอิงของ Microsoft สำหรับ Graph API เพื่อค้นหาข้อมูลที่เราต้องการ ลิงก์ต่อไปนี้จะนำคุณไปยังหน้าอ้างอิงอัปเดตอุปกรณ์: https://learn.microsoft.com/en-gb/graph/api/device-update?view=graph-rest-beta&tabs=powershell
ในหน้านี้ ใต้หัวข้อการอนุญาต คุณจะเห็นตารางการอนุญาตต่อไปนี้:
ตารางแสดงให้เราเห็นว่าประเภทการอนุญาตของแอปพลิเคชันให้สิทธิ์ที่จำเป็นเฉพาะเพื่อดำเนินการอัปเดตอุปกรณ์ โดยที่การอนุญาตไม่ได้ให้สิทธิ์ ดังนั้นในบางกรณี วิธีการที่เราใช้จะถูกกำหนดโดยข้อจำกัดของสิทธิ์ที่มีอยู่







