วิธีใช้ Managed Identities กับ Microsoft Graph PowerShell
ข้อมูลประจำตัวที่มีการจัดการมอบวิธีที่ปลอดภัยซึ่งแอปพลิเคชันสามารถเข้าถึงทรัพยากรใน Azure โดยไม่จำเป็นต้องให้ผู้ดูแลระบบจัดการรหัสผ่านหรือความลับเพิ่มเติม ซึ่งหมายความว่าการรับรองความถูกต้องสามารถเกิดขึ้นได้อย่างราบรื่นโดยไม่จำเป็นต้องมีการแทรกแซงจากมนุษย์ในที่สุด
โชคดีสำหรับผู้ที่เขียนโค้ดใน PowerShell เพื่อการดูแลระบบของผู้เช่าหรือการรายงานผู้เช่า Microsoft Graph PowerShell v2 รองรับการใช้ Managed Identities ด้วย Azure Automation
ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถสร้างและกำหนดสิทธิ์ให้กับ Managed Identity ใน Azure ได้อย่างไร แล้วใช้ Managed Identity นั้นในสคริปต์ Microsoft Graph PowerShell ของคุณ
ข้อมูลระบุตัวตนที่ได้รับการจัดการคืออะไร
Managed Identities คือทรัพยากรใน Azure ที่สามารถร้องขอและรับโทเค็นการเข้าถึง Azure AD โดยอัตโนมัติเพื่อตรวจสอบสิทธิ์ทรัพยากร สำหรับสถานการณ์แบบเป็นโปรแกรม/อัตโนมัติ ผู้ดูแลระบบผู้เช่าไม่จำเป็นต้องจัดการรหัสผ่าน คีย์ หรือความลับ เนื่องจากการรับรองความถูกต้องได้รับการจัดการโดย Azure และภายใน Azure เท่านั้น ทำให้ง่ายและปลอดภัยยิ่งขึ้น
ในทางปฏิบัติ Managed Identities คือบริการหลัก (หรือแอปพลิเคชัน) ใน Azure AD ซึ่งคุณสามารถมอบหมายสิทธิ์หรือบทบาทเฉพาะเพื่อทำงานที่พวกเขาสร้างขึ้นให้ดำเนินการได้สำเร็จ
คุณสามารถดู Managed Identities ใน Azure Active Directory ได้โดยเลือก:
แอปพลิเคชัน > แอปพลิเคชันทั้งหมด จากนั้นเปลี่ยนตัวกรองประเภทแอปพลิเคชันเป็น ข้อมูลประจำตัวที่มีการจัดการ
ข้อมูลระบุตัวตนที่ได้รับมอบหมายจากระบบเทียบกับข้อมูลระบุตัวตนที่ได้รับมอบหมายจากผู้ใช้
Managed Identities ใน Azure มีสองประเภทที่ช่วยให้คุณได้รับโทเค็น Azure AD สำหรับการเข้าถึงทรัพยากร ข้อมูลประจำตัวเหล่านี้คือข้อมูลระบุตัวตนที่ได้รับการจัดการที่ระบบกำหนดและที่ผู้ใช้กำหนด
แม้ว่าทั้งสองจะมีจุดประสงค์เดียวกัน แต่ก็ทำงานต่างกันเล็กน้อย ข้อมูลระบุตัวตนที่มีการจัดการที่ระบบกำหนดจะเชื่อมโยงกับทรัพยากรเฉพาะ และให้สิทธิ์ในการเข้าถึงข้อมูลนั้นสำหรับทรัพยากรนั้นโดยเฉพาะเท่านั้น ในขณะที่ข้อมูลประจำตัวที่มีการจัดการที่ผู้ใช้กำหนดนั้นมีความเป็นอิสระและสามารถมอบหมายให้กับทรัพยากรเดียวหรือหลายรายการได้
การเลือกระหว่างการใช้ Managed Identity แต่ละประเภทนั้นขึ้นอยู่กับทั้งสถานการณ์ที่ปรับใช้และวิธีที่คุณจัดการโครงสร้างพื้นฐานของคุณ
ข้อมูลระบุตัวตนที่มีการจัดการที่กำหนดโดยระบบโดยทั่วไปอาจหมายถึงการดูแลระบบที่มากขึ้น หากคุณต้องการใช้สิทธิ์ Graph API กับข้อมูลระบุตัวตนหลายรายการ ซึ่งสามารถลดความซับซ้อนลงได้ด้วยข้อมูลประจำตัวที่ได้รับการจัดการที่ผู้ใช้กำหนดเพียงข้อมูลเดียว หากข้อกำหนดการอนุญาตเหมือนกัน นอกจากนี้ หากคุณกำหนดบทบาทแทนสิทธิ์ Graph API ก็จะสามารถเพิ่ม Managed Identity ที่ระบบกำหนดแต่ละรายการให้กับกลุ่มความปลอดภัยด้วยบทบาทที่ได้รับมอบหมายได้ ซึ่งช่วยลดการดูแลระบบได้
วงจรชีวิตของ Managed Identity ที่ระบบกำหนดจะเชื่อมโยงกับทรัพยากรด้วย ดังนั้นจึงถูกสร้างขึ้นเมื่อมีการสร้างทรัพยากรและลบเมื่อทรัพยากรถูกลบ แม้ว่าในบางกรณีสิ่งนี้อาจช่วยรักษาความปลอดภัยและรักษาสภาพแวดล้อมของคุณให้เป็นระเบียบเรียบร้อย แต่ก็อาจกลายเป็นปัญหาในขณะที่สร้างทรัพยากรจำนวนมาก โดยเฉพาะอย่างยิ่งหากสิทธิ์จำเป็นต้องได้รับการจัดการหรืออนุมัติโดยแผนกอื่น
แผนภาพด้านล่างแสดงขั้นตอนการกำหนดสิทธิ์ในขณะที่ใช้ข้อมูลระบุตัวตนที่มีการจัดการที่มอบหมายโดยระบบหรือที่ผู้ใช้กำหนด โดยทั่วไป หากคุณมีงานเดียวที่มีสิทธิ์เฉพาะซึ่งจำเป็นต้องดำเนินการ Manage Identity ที่ระบบกำหนดจะเป็นตัวเลือกที่ดีกว่า สถานการณ์อื่นๆ จำเป็นต้องมีการพิจารณาเพิ่มเติม
วิธีสร้าง Managed Identity ที่ผู้ใช้กำหนด
เนื่องจากข้อมูลประจำตัวที่ได้รับการจัดการที่ผู้ใช้กำหนดนั้นไม่ขึ้นอยู่กับทรัพยากรที่พวกเขาให้บริการ จึงต้องสร้างข้อมูลเหล่านี้ด้วยตนเองก่อนโดยใช้พอร์ทัล Azure หรือ PowerShell จากนั้นจะต้องกำหนดสิทธิ์ที่จำเป็น ทำตามขั้นตอนด้านล่างที่คุณสร้างและกำหนดค่าข้อมูลระบุตัวตนที่มีการจัดการที่ผู้ใช้กำหนด
การใช้พอร์ทัล Azure
1. เข้าสู่ระบบ https://portal.azure.com/
2. ค้นหา Managed Identities และเปิดบริการ
3. คลิก สร้าง เพื่อเริ่มวิซาร์ดการสร้าง Managed Identity
4. กรอกข้อมูลในส่วนข้อมูลบนหน้าจอให้ครบถ้วน จากนั้นคลิก ตรวจสอบและสร้าง > สร้าง
การใช้ PowerShell
แม้ว่าฉันชอบทำทุกอย่างด้วย Microsoft Graph แต่ Managed Identities คือทรัพยากร Azure และไม่สามารถสร้างได้โดยตรงใน Azure AD ซึ่งเป็นสิ่งที่ Microsoft Graph ช่วยให้คุณจัดการได้ หากต้องการสร้าง Managed Identity ด้วย PowerShell คุณต้องใช้โมดูล Azure (Az) PowerShell ดังนี้:
1. ติดตั้งโมดูล Az PowerShell
Install-Module Az -Scope CurrentUser -AllowPrerelease -Force2. เชื่อมต่อกับ Azure โดยใช้ Connect-AzAccount
Connect-AzAccount3. ก่อนที่คุณจะสร้างข้อมูลประจำตัวที่มีการจัดการ คุณต้องสร้างกลุ่มทรัพยากรที่จะเก็บข้อมูลดังกล่าวก่อน
New-AzResourceGroup -Name RG-UKSAA-MgPowerShell -Location "UK South"4. ตอนนี้สร้าง Managed Identity ใหม่และกำหนดชื่อของกลุ่มทรัพยากรใหม่ของคุณ
New-AzUserAssignedIdentity -ResourceGroupName RG-UKSAA-MgPowerShell -Name MI-AA-MgPowerShell1 -location UKSouthกำหนดสิทธิ์ Graph API ให้กับ Managed Identities
เพื่อให้สิทธิ์ที่จำเป็น (และน้อยที่สุด) สำหรับข้อมูลประจำตัวที่ได้รับการจัดการของเราเพื่อดำเนินงานที่กำหนดไว้ในสคริปต์สุดท้ายของเรา เราจำเป็นต้องกำหนดสิทธิ์ Graph API ผ่าน PowerShell
ขออภัย สิทธิ์ Graph API ยังไม่รองรับการกำหนดให้กับ Managed Identities ผ่านทางพอร์ทัล Microsoft Entra ดังนั้นฉันจะแสดงวิธีดำเนินการดังกล่าวด้วย Microsoft Graph PowerShell
สคริปต์ต่อไปนี้จะเชื่อมต่อกับ Microsoft Graph และกำหนดสิทธิ์ที่กำหนดไว้ให้กับ Managed Identity ของคุณ ตรวจสอบให้แน่ใจว่าคุณได้แก้ไขตัวแปรตามที่แนะนำในสคริปต์ด้านล่าง
# Connect to Microsoft Graph with least required permission scope
Connect-MgGraph -Scopes Application.Read.All, AppRoleAssignment.ReadWrite.All
### Define these variables here first ##
$ManagedIdentityName = "OCN-AA-MgPowerShell"
$permissions = "Mail.send", "AuditLog.Read.All", "Application.Read.All"
# Get service principal and roles
$getPerms = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").approles | Where {$_.Value -in $permissions}
$ManagedIdentity = (Get-MgServicePrincipal -Filter "DisplayName eq '$ManagedIdentityName'")
$GraphID = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").id
# Assign roles
foreach ($perm in $getPerms){
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id `
-PrincipalId $ManagedIdentity.Id -ResourceId $GraphID -AppRoleId $perm.id
}เมื่อกำหนดสิทธิ์ของคุณแล้ว แท็บ สิทธิ์ สำหรับ Managed Identity ของคุณในพอร์ทัล Microsoft Entra จะมีลักษณะดังนี้:
ใช้ข้อมูลระบุตัวตนที่ได้รับการจัดการที่ระบบกำหนดกับบัญชี Azure Automation
ข้อมูลระบุตัวตนที่ได้รับการจัดการที่ระบบกำหนดสามารถสร้างขึ้นได้โดยตรงจากบัญชี Azure Automation หรือทรัพยากรที่ใช้ ทำตามขั้นตอนด้านล่างเพื่อสร้าง Managed Identity
1. เริ่มต้นด้วยการเปิดบัญชีอัตโนมัติของคุณ จากนั้นเลือก ข้อมูลประจำตัว จากพื้นที่การตั้งค่าบัญชี
2. ตั้งค่าระบบที่กำหนด Managed Identity เป็น เปิด จากนั้นคลิก บันทึก
3. ตอนนี้ คุณจะเห็น Managed Identity แสดงรายการอยู่ในรายการแอปพลิเคชันดังที่เห็นที่ด้านบนของบทช่วยสอนนี้
ใช้ข้อมูลประจำตัวที่มีการจัดการที่ผู้ใช้กำหนดกับบัญชี Azure Automation
ข้อมูลระบุตัวตนที่มีการจัดการที่ผู้ใช้กำหนดจะต้องถูกกำหนดด้วยตนเองให้กับทรัพยากรที่จะตรวจสอบความถูกต้อง ทำตามขั้นตอนด้านล่างเพื่อกำหนด Managed Identity ให้กับบัญชี Automation ของคุณ
1. เริ่มต้นด้วยการเปิดบัญชีอัตโนมัติของคุณและเลือก ข้อมูลประจำตัว จากพื้นที่การตั้งค่าบัญชี
2. เลือกแท็บ กำหนดผู้ใช้ แล้วคลิก เพิ่ม
3. เลือกการสมัครและข้อมูลประจำตัวที่มีการจัดการของคุณจากรายการแล้วคลิก เพิ่ม
วิธีใช้ Connect-MgGraph -Identity กับ Microsoft Graph PowerShell
ขณะนี้ คุณมีบัญชีอัตโนมัติที่ได้รับมอบหมาย Managed Identity โดยไม่รวมสิทธิ์ที่ถูกต้อง คุณต้องรวมพารามิเตอร์ -Identity ไว้ในคำสั่งการรับรองความถูกต้องของ Microsoft Graph เพื่อใช้งาน
ใช้ Connect-MgGraph กับ Managed Identity ที่ระบบกำหนด
เพียงกำหนดพารามิเตอร์ -Identity เพียงอย่างเดียวในขณะที่เชื่อมต่อกับ Managed Identity ที่ระบบกำหนด ไม่จำเป็นต้องใช้คำสั่งการตรวจสอบสิทธิ์เพิ่มเติม
Connect-MgGraph -Identityใช้ Connect-MgGraph กับ Managed Identity ที่ผู้ใช้กำหนด
หากต้องการใช้ Managed Identity ที่ผู้ใช้กำหนด จำเป็นต้องกำหนดทั้งพารามิเตอร์ -Identity และ -ClientId คุณต้องรวม ID ออบเจ็กต์ของ Managed Identity ที่ผู้ใช้กำหนด (บริการหลัก) เพื่อให้คำสั่งการรับรองความถูกต้องทราบว่า Managed Identity ใดที่จะใช้
Connect-MgGraph -Identity -ClientId %Object ID of Managed Identity%









