ความยินยอมของผู้ดูแลระบบ Microsoft Graph PowerShell
แนวคิดเรื่องความยินยอมของผู้ดูแลระบบอาจทำให้เกิดความสับสนเล็กน้อย และเอกสารอย่างเป็นทางการของ Microsoft ก็อธิบายได้แย่มาก
บทความนี้จะตอบคำถามต่อไปนี้:
- วัตถุประสงค์ของการยินยอมของผู้ดูแลระบบคืออะไร?
- ความยินยอมของผู้ดูแลระบบทำงานอย่างไร
- คุณจะตรวจสอบการตั้งค่าการยินยอมของผู้ดูแลระบบในปัจจุบันอย่างไร
- คุณจะกำหนดค่าความยินยอมของผู้ดูแลระบบได้อย่างไร?
เราจะใช้ Easy365Manager เป็นกรณีการใช้งานในการตอบคำถามเหล่านี้
Easy365Manager เป็นปลั๊กอินสำหรับผู้ใช้ Active Directory และคอมพิวเตอร์ที่ (เวอร์ชัน 1.5 ขึ้นไป) ใช้ Microsoft Graph PowerShell เพื่อเปิดใช้งานการจัดการ Office 365 โดยตรงจาก AD
วัตถุประสงค์ของการยินยอมของผู้ดูแลระบบคืออะไร
วัตถุประสงค์ของความยินยอมของผู้ดูแลระบบคือการควบคุมการดำเนินการที่แอปพลิเคชัน Azure สามารถทำได้อย่างเข้มงวด เช่น Microsoft Graph PowerShell หรือแอปพลิเคชัน Microsoft หรือบุคคลที่สามอื่นๆ
ด้วยการเข้าถึงที่ได้รับมอบสิทธิ์ แอปพลิเคชัน Microsoft Graph PowerShell สามารถเรียกใช้คำสั่ง PowerShell ของคุณในบริบทด้านความปลอดภัยได้ สิ่งนี้มีข้อดีหลักสองประการ:
- คุณสามารถดำเนินการได้เฉพาะสิ่งที่คุณมีสิทธิ์เท่านั้น
- การดำเนินการใดๆ ที่ทำไปจะถูกบันทึกไว้ด้วย ID ของคุณในบันทึกการตรวจสอบแบบรวม
แต่การปล่อยให้แอปพลิเคชันของบริษัทอื่น (หรือ Microsoft) เรียกใช้คำสั่งในบริบทด้านความปลอดภัยของคุณนั้นไม่ใช่เรื่องที่มองข้าม นั่นคือสาเหตุว่าทำไมจึงมีชั้นการควบคุมเพิ่มเติม: ความยินยอม
ความยินยอมทำหน้าที่เหมือนไวท์ลิสต์ที่อนุญาตให้ ข้อมูลประจำตัว (เช่น adm.msk@easy365manager.com) ใช้สิทธิ์ (เช่น User.ReadWrite.All) บน ทรัพยากร (เช่น Microsoft Graph)
ความยินยอมไม่ได้ให้สิทธิ์ใดๆ อนุญาตให้คุณใช้สิทธิ์ที่มีอยู่เท่านั้น
ความยินยอมอาจเป็นความยินยอมของผู้ใช้ที่มอบให้กับผู้ใช้แต่ละราย หรืออาจเป็นความยินยอมของผู้ดูแลระบบที่ผู้ดูแลระบบให้กับผู้ใช้ทั้งหมดก็ได้
ความยินยอมของผู้ดูแลระบบทำงานอย่างไร?
เมื่อใดก็ตามที่คุณใช้แอปพลิเคชัน Azure เช่น Microsoft Graph PowerShell จะต้องมีคนยินยอมให้แอปพลิเคชันที่ดำเนินการในนามของคุณโดยใช้สิทธิ์ของคุณ
ความยินยอมสามารถเกิดขึ้นได้ในฐานะความยินยอมของผู้ใช้ (คุณยินยอมด้วยตนเอง โดยถือว่าคุณมีสิทธิ์ในการดำเนินการดังกล่าว) หรืออาจเป็นความยินยอมของผู้ดูแลระบบ (ผู้ดูแลระบบยินยอมในนามของคุณ)
โดยใช้ Microsoft Graph PowerShell เป็นตัวอย่าง นี่คือวิธีการ:
คุณอาจสังเกตเห็นปัญหาใหญ่อย่างหนึ่งที่นี่:
หากผู้ดูแลระบบได้ให้ความยินยอมจากผู้ใช้แล้ว เธอจะไม่มีตัวเลือกในการให้ความยินยอมจากผู้ดูแลระบบอีกต่อไป
เหตุใดจึงเป็นปัญหา
สมมติว่าผู้ดูแลระบบได้ให้ความยินยอมจากผู้ใช้ในการจัดการผู้ใช้ Office 365 ต่อมาเธอตัดสินใจใช้คำยินยอมของผู้ดูแลระบบเพื่อให้พนักงานทั้งหมดของเธอเรียกใช้สคริปต์ PowerShell เพื่อแก้ไขคุณสมบัติผู้ใช้
เนื่องจากความยินยอมของผู้ใช้ได้ขัดขวางเส้นทางของเธอในการให้ความยินยอมของผู้ดูแลระบบ - และเนื่องจาก พอร์ทัล Azure ไม่มี GUI สำหรับการจัดการความยินยอม - ตอนนี้เธอติดอยู่กับ PowerShell ที่น่ารังเกียจจริงๆ บางอย่างในการแก้ไขปัญหานี้!
อ่านต่อเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้...
คุณจะตรวจสอบการตั้งค่าคำยินยอมของผู้ดูแลระบบได้อย่างไร
การตั้งค่าความยินยอมของแอปพลิเคชันปัจจุบันของคุณจะมองเห็นได้ผ่านทาง Azure Portal และ PowerShell
หากต้องการตรวจสอบการตั้งค่าความยินยอมโดยใช้ Azure Portal ให้ไปที่แอปพลิเคชันระดับองค์กร
จากนั้นเลือก Microsoft Graph PowerShell แล้วคลิกการอนุญาตในส่วนความปลอดภัย
(หากคุณไม่พบ Microsoft Graph PowerShell โปรดอ่านบทความนี้)
ความยินยอมของผู้ดูแลระบบจะแสดงให้คุณเห็นความยินยอมของผู้ดูแลระบบ (ความยินยอมที่ผู้ดูแลระบบมอบให้กับผู้ใช้ทุกคน)
ความยินยอมของผู้ใช้จะแสดงให้คุณเห็นถึงความยินยอมส่วนบุคคลที่มอบให้กับผู้ใช้แต่ละราย
รายการสิทธิ์เป็นรายการแบบอ่านอย่างเดียวโดยไม่มีตัวเลือกให้แก้ไข!
หากต้องการดูการตั้งค่าความยินยอมของแอปพลิเคชันปัจจุบันโดยใช้ PowerShell นั้นค่อนข้างน่าเบื่อ:
คุณต้องระบุ ID หลักของบริการของ Microsoft Graph PowerShell และคุณต้องระบุ ID หลักของบริการของ Microsoft Graph (เนื่องจากในทางทฤษฎีสามารถกำหนดสิทธิ์ให้กับทรัพยากรอื่น ๆ ได้)
คุณยังจำเป็นต้องทราบสิทธิ์ที่จำเป็นในการดึงข้อมูลเพื่อให้คุณสามารถเชื่อมต่อกับขอบเขตที่เหมาะสมได้ (อ่านบทความนี้เพื่อดูข้อมูลเพิ่มเติม)
นี่คือสคริปต์ตัวอย่างเพื่อให้คุณได้รับการตั้งค่าความยินยอมสำหรับแอปพลิเคชัน Microsoft Graph PowerShell (กำหนดไว้ในทรัพยากร Microsoft Graph):
Connect-MgGraph -Scopes "DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All"
$MSGraphPS_AppId = "14d82eec-204b-4c2f-b7e8-296a70dab67e"
$MSGraph_AppId = "00000003-0000-0000-c000-000000000000"
$MicrosoftPowerShellGraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraphPS_AppId}).Id
$Microsoftgraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraph_AppId}).Id
Get-MgOauth2PermissionGrant -All | Where-Object { $_.clientId -eq $MicrosoftPowerShellGraph_Id -and $_.ResourceId -eq $Microsoftgraph_Id} | ft PrincipalId,Scopeผลลัพธ์จากสคริปต์จะมีลักษณะคล้ายกับสิ่งนี้:
PrincipalId Scope
----------- -----
User.ReadWrite.All Group.ReadWrite.All Domain.Read.All Directory.ReadWrite.All offline_access
10f136c2-55f0-41c4-9c96-6bab410c7c54 DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All openid profile offline_access Directory.ReadWrite.All User.Read emailคำยินยอมของผู้ดูแลระบบจะแสดงรายการพร้อมกับ PrincipalId ที่ว่างเปล่า (เนื่องจากมีผลกับทุกคน)
ความยินยอมของผู้ใช้จะแสดงรายการพร้อมกับ PrincipalId ที่ระบุผู้ใช้
คุณจะกำหนดค่าความยินยอมของผู้ดูแลระบบได้อย่างไร?
ดังที่เห็นในผังงานก่อนหน้านี้ การให้ความยินยอมจากผู้ดูแลระบบเป็นเรื่องง่ายมาก เมื่อคุณไม่ได้ให้ความยินยอมจากผู้ใช้แก่ตัวคุณเองก่อนหน้านี้
เพียงเชื่อมต่อกับ Microsoft Graph PowerShell ด้วยขอบเขตที่ต้องการ เช่น:
Connect-MgGraph -Scopes "User.ReadWrite.All,Group.ReadWrite.All"จากนั้นเลือก “ยินยอมในนามขององค์กรของคุณ”:
อย่างไรก็ตาม หากคุณได้รับความยินยอมจากผู้ใช้อยู่แล้ว คุณจะต้องกำหนดค่าความยินยอมของผู้ดูแลระบบด้วย PowerShell
นี่เป็นขั้นตอนที่ยุ่งยากมาก เนื่องจากความยินยอมของผู้ดูแลระบบแบบหลายค่าจะถูกเขียนไปยังแอตทริบิวต์ที่มีค่าเดียว ดังนั้น ความยินยอมของผู้ดูแลระบบที่มีอยู่จะถูกลบออกจากแอปพลิเคชันเมื่อคุณใช้ความยินยอมของผู้ดูแลระบบใหม่
ดังนั้นคุณต้องพิจารณาสิ่งต่อไปนี้:
- ระบุขอบเขตที่ไม่รวมอยู่ในคำขอปัจจุบันของคุณแต่จำเป็นต้องได้รับการบำรุงรักษา
ระบุขอบเขตที่ได้รับการกำหนดค่าด้วยสิทธิ์ที่สูงกว่าที่คุณใช้อยู่
- เช่น หากคุณใช้ “User.Read.All” แต่มี “User.ReadWrite.All” อยู่แล้ว คุณอาจต้องการคงสิ่งนั้นไว้
อินเทอร์เฟซที่ไม่ดีในการจัดการความยินยอมของแอปพลิเคชันระดับองค์กรจะทำให้ผู้ดูแลระบบจำนวนมากตกอยู่ในสถานการณ์ที่ยากลำบาก... ซึ่งไม่สมเหตุสมผลเลย:
ด้วยการรวม Microsoft Graph PowerShell ให้เป็นแอปพลิเคชันระดับองค์กร (และสคริปต์ MSOnline และ AzureAD จะถูกระงับภายในต้นปี 2566) การจัดการสิทธิ์การเขียนสคริปต์ขั้นพื้นฐานควรสามารถเข้าถึงได้โดยผู้ดูแลระบบทุกระดับ (และไม่ใช่แค่โปรแกรมเมอร์ที่มีประสบการณ์เพียงครึ่งเดียว)
สคริปต์ PowerShell เพื่อจัดการความยินยอมของผู้ดูแลระบบ
Easy365Manager เวอร์ชัน 1.5 และใหม่กว่าสร้างขึ้นบน Microsoft Graph PowerShell SDK
เพื่อสนับสนุนการมอบหมายการจัดการ Office 365 เราได้สร้างสคริปต์ PowerShell เพื่อตั้งค่าการยินยอมของผู้ดูแลระบบที่จำเป็นโดยไม่ต้องแก้ไขการกำหนดค่าที่มีอยู่
คุณสามารถแก้ไขสคริปต์และเผยแพร่การเปลี่ยนแปลงใดๆ ได้ตามใจชอบ ตราบใดที่คุณให้เครดิตหน้าแหล่งที่มา
และแน่นอน หากคุณต้องการทำงานอย่างมีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ ลองทดลองใช้ Easy365Manager เป็นเวลา 30 วันดูสิ!
- ดาวน์โหลดและติดตั้งใช้เวลาเพียงไม่กี่นาที
- ไม่จำเป็นต้องเปลี่ยนแปลงโครงสร้างพื้นฐาน
- การบูรณาการกับผู้ใช้ AD และคอมพิวเตอร์ทำให้มั่นใจได้ถึงอินเทอร์เฟซที่ใช้งานง่ายสุด ๆ
โดยทั่วไปลูกค้าของเราจะประหยัดเวลาได้หลายสิบชั่วโมงทุกเดือนโดยการข้าม PowerShell ที่น่าเบื่อไปทำงานง่ายๆ เช่น การมอบหมายปฏิทิน:
ดาวน์โหลดรุ่นทดลองใช้ 30 วันของคุณที่นี่ คุณจะทำงานได้อย่างมีประสิทธิภาพมากขึ้นในตอนท้ายของวัน!



