อนาคตใหม่ของชาว PowerShell กับโมดูล Microsoft.Graph ที่มาแทน Azure กับ MSOnline ???
- **หมายเหตุตัวโตๆ ก่อนนะคะว่าสำหรับสาย Cybersecurity ไม่ได้จะเอามาส่อง Sharepoint Site หรือ Exchange Email ใดๆ
“สกิลอนาคต (อันไกลโพ้น) คือฝึกใช้ PowerShell MgGraph ตั้งแต่ตอนนี้!”
*หมายเหตุ MgGraph = ชื่อโมดูล Microsoft Graph ตอนคอนเนกต์ แบบทำไมย่อว่า Mg ไม่ย่อ Ms ให้อ่านง่ายอ่ะ งง😮
(จริงๆ ชื่อโมดูลตอนอินสตอลก็ Microsoft.Graph ปกติแหละ แล้ว Mg ก็น่าจะ = Microsoft graph สำหรับใชัขึ้นต้นคอมมานด์เล็ด อย่าง Get-MgSecurityAlert ฟีลเหมือน Az แทน Azure ใน cmdlet อย่าง Get-AzVm งี้ ประเด็นคือพอเป็นคำสั่ง Connect- ที่ใช้ล็อกอินบัญชี M365/Azure ก็จะใช้คำสร้อยห้อยหลังแปลกๆ ให้เหนื่อยจำนิดนึง เช่น Connect-AzAccount แต่พอไมโครซอฟท์กราฟใช้ Connect-MgGraph แบบไมไม่ใช้ MgAccount ให้เป็นแพทเทิร์นเดียวกัน ยังไม่รวมชื่อโมดูล MSOnline ที่ทำไมไม่เขียนเป็น M365 ให้หายงง ตอนย่อในคอมเล็ดก็เป็น Msolบลาๆ แถมตอนคอนเนกต์ก็เขียนเป็น Connect-MsolService อีก ทำไมไม่ MsolAccount ในฐานะที่ชั้นก็สนใจด้านภาษาที่ไม่ใช่ภาษาโปรแกรมมิ่ง ก็อยากรู้ว่า Account/Graph/Service มีความแตกต่างอย่างมีนัยสำคัญที่เป็นประโยชน์ต่อมวลมนุษยชาติอย่างไรบ้าง)
จำไม่ได้ว่าไปเห็นข้อความนี้จากไหน แต่ก็เข้าเค้า เพราะ MS Graph เป็น API ที่เชื่อมโยงคลาวด์ MS ทั้ง M365 / Azure แบบครอบจักรวาลคิชเช่นโชว์ ใช้ตั้งแต่เรียกดูข้อมูลทั่วไปจนถึงปรับแต่งแก้ไขทุกระบบ
แน่นอนว่ากับระบบความปลอดภัย M365/Azure ภายใต้โมดูล Microsoft.Graph.Security ด้วย
ที่เต็มไปด้วยคำสั่งน่าใช้มากมาย คัฟเวอร์ตั้งแต่ 365 Defender ไปจนถึง Purview Compliance https://learn.microsoft.com/.../microsoft.graph.security/...
ส่วนสำหรับใครจะแย้งว่า มันมีโมดูลจัดการพวกนี้อยู่แล้น Connect-AzAccount หรือ MsolService ไปสิ ถ้าติดตามเพจอยู่เนืองๆ (โพสล่าสุดเรื่องพาวเวอร์เชลล์น่าจะกลางปีที่แล้ว) ก็น่าจะเห็นสัญญาณเตือนจาก MS มารัวๆ ที่เราบ่นว่าซับโมดูลนั้นก็ดีพรีชิเอท คำสั่งนู้นก็ใช้ไม่ได้แล้วแม้แต่บนคลาวด์เชลล์…
ก็เพราะนางประกาศจะให้แทนที่ทั้งหมดนี้ด้วย Connect-MgGraph ไงล่ะสาว
เหมือนบังคับให้เลือกอนาคตใหม่กลายๆ
(ค่ะ สำหรับท่านผู้รู้ผู้ตื่นผู้เคย Install-Module MicrosoftGraphSecurity แล้วฟีลเกรทฟีลสวยกับการ Get-GraphSecurityAlert ที่ดูง่ายไม่ต้องพิมพ์คอนเนคให้เสียเวลา เลาลองแล้วค่ะ ติดที่อี AppID นี่ล่ะ ดูมีขั้นตอนพิสดารในการรีจิสแอพที่ไม่ควรให้เราทำ ที่สำคัญได้กลิ่นการโดนดีพรีกลายๆ ด้วยค่ะ)
อย่างที่เราคุ้นกันก็ที่ใช้ทำ Authen เว็บแอพเราด้วยยูสบน AAD แบบโคตรง่าย (เราคุ้น แต่เธอว์คุ้นไหม) เป็นต้น
**หมายเหตุ2 — Graph มันก็มีหลายแบบ หลายแอพ Graph Explorer บ้าง MS Graph SDK บ้าง กราฟไลเนียร์บ้างพาราโบล่าบ้าง ฟิล์มก็มีบ้าน มีรถ มีมงกุฎ ดังนั้นจะมาเป็นคนสวยเหมือนกัน เอ้ย จะมามีเพอมิสชั่นเหมือนกันไม่ได้!
นั่นแหละค่ะคีย์เวิร์ด เรารู้ว่าจะใช้โมดูลใหม่ก็ต้อง Install/Import/Connect-Module นั้นก่อน (ถ้า Install ครั้งแรกในหน้านั้นก็อาจไม่ต้อง Import ซ้ำ ยกเว้นปิดเปิดหน้าพาวเวอร์เชลล์ใหม่)
แต่ตอน Connect โมดูล ที่เปิดหน้าบราวเซอร์ล็อกอินให้กดอนุญาตสิทธิ์เนี่ย หลายโมดูลโดยเฉพาะ Connect-MgGraph นางยึดหลักข้อที่ 2 ของ Zero-Trust เวอร์ชั่นของ MS คือ Least Privileged อย่างสุดฤทธิ์ ดังนั้นถ้าไม่กำหนด -Scope สิทธิ์ที่ต้องการใช้เจาะจงไป
ยูก็จะไม่ได้สิทธิ์นั้นค่ะ😲
แด่ดิชั้นผู้พลิกแผ่นดินหาวิธีสโคปเพอมิสชั่นออลบ้างดอกจันบ้างทั่วราชอาณาจักรก็หาไม่เจอ ต้องไปเดาสุ่มด้วยการงมหาคำใบ้ชื่อ Permissions ใน Graph Explorer เองก็ตาม
(ถาม bing chat GPT-4 ให้แล้วนะเคอะ นางช่วยได้แค่ใช้คำสั่ง Find-MgGraphPermission กับคำสั่งที่เราอยากใช้เพื่อใบ้ชื่อเพอมิสชั่นสำหรับใส่ใน Connect-MgGraph -Scope เพิ่มทีละอัน แต่ไม่มีวิธีสโคปออลอยู่ดีย์)
จริงๆ สาระโพสนี้ก็แค่สโคปให้ถูกตอนคอนเนกต์เท่านั้นล่ะค่ะ ถ้าเดาถูกแต่แรกก็จบตั้งแต่รูปที่ 5 แล้ว ไม่มั่วไปมาถึง 38 รูป ลามไป AAD Enterprise App Permissions บ้าบอคอแตกแบบนี้🤪
ThaiCySec Admin