เชื่อมต่อกับ Microsoft Graph PowerShell โดยใช้ใบรับรองกับ Azure Automation
การรับรองความถูกต้องตามใบรับรองสำหรับ Microsoft Graph PowerShell ช่วยให้คุณสามารถรับรองความถูกต้องของ Microsoft Graph และเรียกใช้สคริปต์ PowerShell ในบริบทของแอปพลิเคชันโดยไม่ต้องจัดเก็บหรือเรียกข้อมูลลับไคลเอ็นต์
สิ่งนี้อาจเป็นประโยชน์ในสถานการณ์ที่คุณต้องการเรียกใช้สคริปต์จากอุปกรณ์ที่มีสิทธิ์ แต่ไม่ต้องการเก็บความลับของไคลเอ็นต์ไว้ภายในโค้ด สถานการณ์อาจรวมถึงการเรียกใช้สคริปต์จากอุปกรณ์ที่มีสิทธิ์ หรือใช้ Azure Automation
ในบทช่วยสอนนี้ ฉันจะแสดงวิธีใช้การรับรองความถูกต้องตามใบรับรองกับ Microsoft Graph PowerShell
สถานการณ์
ในสถานการณ์นี้ ฉันใช้ Azure Automation Runbook ในผู้เช่าหลักของฉัน (ผู้เช่า 2) ฉันจำเป็นต้องรับรองความถูกต้องของ Microsoft Graph ในผู้เช่ารายอื่น (ผู้เช่า 1) โดยใช้ PowerShell เพื่อจัดการทรัพยากร
สำหรับกรณีการใช้งานนี้ ฉันจะใช้การรับรองความถูกต้องตามใบรับรองกับ Microsoft Graph PowerShell
สร้างใบรับรองที่ลงนามด้วยตนเองใหม่
ก่อนอื่นคุณต้องสร้างใบรับรองที่ลงนามด้วยตนเองใหม่บนเวิร์กสเตชันในเครื่องของคุณ เมื่อคุณทำเช่นนี้ รหัสส่วนตัวจะถูกจัดเก็บไว้ในอุปกรณ์ของคุณด้วย สิ่งนี้สามารถลบออกได้เมื่อคุณทำเสร็จแล้ว
คำสั่งด้านล่างจะสร้างใบรับรองใหม่ชื่อ AzureAutomation ซึ่งจะหมดอายุใน 12 เดือน
$certname = "AzureAutomation"
$cert = New-SelfSignedCertificate -Subject "CN=$certname" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeySpec Signature `
-KeyLength 2048 `
-KeyAlgorithm RSA -HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddMonths(12)หากต้องการส่งออกใบรับรองโดยไม่มีคีย์ส่วนตัว (เพื่ออัปโหลดไปยังแอปพลิเคชันของคุณใน Microsoft Entra) ให้ใช้คำสั่งด้านล่างและเปลี่ยนเส้นทางตามต้องการ
Export-Certificate -Cert $cert -FilePath "C:\cert\$certname.cer"หากต้องการส่งออกใบรับรองด้วยคีย์ส่วนตัว (เพื่ออัปโหลดไปยังบัญชีอัตโนมัติของคุณ) ให้ใช้คำสั่งด้านล่างและเปลี่ยนเส้นทางตามต้องการ ตรวจสอบให้แน่ใจว่าคุณเปลี่ยนรหัสผ่านที่ฉันระบุไว้ด้านล่าง!
$mypwd = ConvertTo-SecureString -String "Password123" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "C:\cert\$certname.pfx" -Password $mypwdเมื่อไฟล์ถูกส่งออก คุณสามารถลบใบรับรองออกจากอุปกรณ์ที่สร้างขึ้นได้
$cer = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName
Remove-Item -Path Cert:\CurrentUser\My\$($cer.Thumbprint) -DeleteKeyสร้างการลงทะเบียนแอปใหม่
คุณจะต้องสร้างการลงทะเบียนแอปใหม่ใน Microsoft Entra สิ่งนี้จะอำนวยความสะดวกในการเข้าถึงทรัพยากร Microsoft Graph ในผู้เช่าปลายทาง (หรือผู้เช่า 1)
ทำตามขั้นตอนด้านล่างเพื่อสร้างการลงทะเบียนแอปใหม่และกำหนดสิทธิ์ที่จำเป็น
1. ใน Microsoft Entra เลือก แอปพลิเคชัน > การลงทะเบียนแอป > การลงทะเบียนใหม่
2. ป้อนชื่อและคลิก ลงทะเบียน
กำหนดสิทธิ์กราฟ API
ตอนนี้คุณสามารถกำหนดสิทธิ์ที่จำเป็นให้กับแอปพลิเคชันได้แล้ว ฉันจะกำหนดสิทธิ์ groups.readwrite.all
1. ใต้ จัดการ เลือก สิทธิ์ API
2. คลิก เพิ่มการอนุญาต
3. เลือก Microsoft Graph > สิทธิ์ของแอปพลิเคชัน
4. ค้นหาการอนุญาตที่จำเป็นของคุณแล้วคลิก เพิ่ม
อัปโหลดใบรับรองสาธารณะ
ขณะนี้ คุณจะต้องอัปโหลดใบรับรองสาธารณะที่คุณส่งออกในรูปแบบ .cer ไปยังแอปพลิเคชัน
1. ใต้ จัดการ ให้เลือก ใบรับรองและความลับ
2. คลิก ใบรับรอง > อัปโหลดใบรับรอง จากนั้นอัปโหลดใบรับรองของคุณ ของฉันชื่อ AzureAutomation.cer
อัปโหลดคีย์ส่วนตัวไปยังบัญชี Azure Automation ของคุณ
ในขั้นตอนนี้ แอปพลิเคชันในผู้เช่าได้เตรียมไว้แล้ว และตอนนี้คุณจำเป็นต้องอัปโหลดใบรับรองด้วยคีย์ส่วนตัวไปยังบัญชี Azure Automation ในผู้เช่า 2
1. เข้าสู่ระบบพอร์ทัล azure.com
2. ค้นหาบัญชีอัตโนมัติของคุณแล้วเปิด
3. ใต้ ทรัพยากรที่ใช้ร่วมกัน ให้เลือก ใบรับรอง
4. คลิก เพิ่มใบรับรอง จากนั้นกำหนดชื่อใบรับรองและอัปโหลดไฟล์ .pfx ที่คุณส่งออกก่อนหน้านี้ คุณจะได้รับแจ้งให้ใส่รหัสผ่านที่คุณระบุไว้เมื่อคุณสร้างใบรับรอง
เชื่อมต่อกับ Microsoft Graph ด้วยการรับรองความถูกต้องตามใบรับรอง
ขณะนี้ทรัพยากรทั้งสองได้รับการจัดเตรียมไว้แล้ว ตอนนี้คุณสามารถใช้คำสั่งการเชื่อมต่อที่จำเป็นในการรับรองความถูกต้องของ Microsoft Graph PowerShell ใน Runbooks ของคุณได้
ก่อนที่คุณจะไปไกลกว่านี้! คุณต้องนำเข้าโมดูล Microsoft Graph PowerShell ไปยังบัญชีการทำงานอัตโนมัติของคุณ ดูขั้นตอนที่ฉันเขียนไว้ที่นี่
คัดลอกโค้ดด้านล่างและเพิ่ม ClientID และ TenantID จากแอปพลิเคชันในผู้เช่า Get-MgContext ถูกใช้เพื่อให้คุณสามารถยืนยันด้วยสายตาว่าการรับรองความถูกต้องสำเร็จ
$cert = Get-AutomationCertificate -Name 'AzureAutomation'
$ClientID = ""
$TenantID = ""
Connect-MgGraph -ClientID $ClientID `
-TenantId $TenantID `
-CertificateThumbprint $cert.Thumbprint
Get-MgContextตอนนี้วางโค้ดของคุณลงใน Runbook ของคุณแล้วคลิกบานหน้าต่างทดสอบ
คลิก Start จากนั้นเมื่อ Runbook เสร็จสิ้น คุณจะเห็นผลลัพธ์บนหน้าจอยืนยันว่าการเชื่อมต่อของคุณสำเร็จ
เมื่อใบรับรองหมดอายุ เพียงสร้างใบรับรองใหม่และทำตามขั้นตอนเดียวกันเพื่อแทนที่

