ค้นหาเว็บไซต์

กำหนดค่าการรับรองความถูกต้องตามใบรับรอง Exchange Online สำหรับสคริปต์ที่ไม่ต้องดูแล


จะกำหนดเวลาสคริปต์ Exchange Online PowerShell เพื่อวัตถุประสงค์อัตโนมัติได้อย่างไร ตัวอย่างเช่น คุณมีสคริปต์ Exchange Online PowerShell ที่จำเป็นต้องรันทุกวันกับผู้เช่า Exchange Online โดยที่ไม่ต้องดูแลโดยไม่มีการโต้ตอบใดๆ ในบทความนี้ คุณจะได้เรียนรู้วิธีกำหนดค่า Exchange Online Certificate Based Authentication (CBA) และทำให้สคริปต์ Exchange Online PowerShell เป็นแบบอัตโนมัติ

การรับรองความถูกต้องตามใบรับรอง

การเรียกใช้สคริปต์ใน Microsoft 365 มักเกี่ยวข้องกับสคริปต์แบบอัตโนมัติใน Exchange Online PowerShell ในอดีต การลงชื่อเข้าใช้โดยไม่ได้ตั้งใจจำเป็นต้องให้คุณจัดเก็บชื่อผู้ใช้และรหัสผ่านไว้ในไฟล์ในเครื่องหรือในห้องนิรภัยที่เป็นความลับที่เข้าถึงได้ในขณะใช้งาน แต่อย่างที่เราทราบกันดีว่าการจัดเก็บข้อมูลรับรองผู้ใช้ไว้ในเครื่องไม่ใช่แนวปฏิบัติด้านความปลอดภัยที่ดี

นั่นคือจุดที่การรับรองความถูกต้องตามใบรับรอง (CBA) เข้ามาช่วยเหลือ รองรับสคริปต์อัตโนมัติและสถานการณ์อัตโนมัติโดยใช้แอป Azure AD และใบรับรองที่ลงนามด้วยตนเอง - วิธีนี้จะกำจัดชื่อผู้ใช้ รหัสผ่าน และ MFA เมื่อตรวจสอบสิทธิ์

การรับรองความถูกต้องตามใบรับรองทำงานอย่างไร

โมดูล Exchange Online PowerShell ใช้ไลบรารีการตรวจสอบความถูกต้องของ Active Directory เพื่อดึงโทเค็นเฉพาะแอปโดยใช้รหัสแอปพลิเคชัน รหัสผู้เช่า (องค์กร) และรหัสประจำตัวของใบรับรอง ออบเจ็กต์แอปพลิเคชันที่จัดเตรียมไว้ภายใน Azure AD มีบทบาทไดเร็กทอรีที่กำหนด ซึ่งส่งคืนในโทเค็นการเข้าถึง การควบคุมการเข้าถึงตามบทบาทของเซสชัน (RBAC) ได้รับการกำหนดค่าโดยใช้ข้อมูลบทบาทของไดเรกทอรีที่มีอยู่ในโทเค็น

วิธีการตั้งค่าการรับรองความถูกต้องตามใบรับรองใน Exchange Online

ทำตามขั้นตอนด้านล่างและตั้งค่าการรับรองความถูกต้องตามใบรับรอง Exchange Online สำหรับสคริปต์ที่ไม่ต้องดูแล

1. สร้างใบรับรองที่ลงนามด้วยตนเอง

หากต้องการสร้างใบรับรองที่ลงนามด้วยตนเอง ให้เข้าสู่ระบบ Windows Server หรือเดสก์ท็อปด้วย Windows PowerShell วิธีที่ดีที่สุดคือสร้างใบรับรองบนเครื่องที่คุณต้องการเรียกใช้สคริปต์ PowerShell แบบอัตโนมัติ

คุณต้องมีใบรับรองที่ลงนามด้วยตนเองในภายหลังในขั้นตอนเมื่อคุณอัปโหลดไปยังแอปพลิเคชันใน Azure และหากคุณต้องการใช้ใบรับรองบนระบบอื่น

หมายเหตุ: ตามค่าเริ่มต้น ใบรับรองที่ลงนามด้วยตนเองจะมีอายุการใช้งานหนึ่งปี

ในกรณีนี้ เราได้เพิ่มเวลา 5 ปีให้กับใบรับรองที่ลงนามด้วยตนเอง ดังนั้นเราจึงไม่จำเป็นต้องต่ออายุทุกปี

PS C:\> $mycert = New-SelfSignedCertificate -DnsName "exoip.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(5) -KeySpec KeyExchange -FriendlyName "EXO unattended cert"

ยืนยันใบรับรองและคัดลอก ThumbPrint และวางลงใน Notepad คุณจะต้องใช้ในภายหลังเมื่อเชื่อมต่อกับ Exchange Online

PS C:\> $mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter

Subject      Thumbprint                               NotBefore             NotAfter
-------      ----------                               ---------             --------
CN=exoip.com 4F1C50EFC978A355227459E2D54FA9BEE8B93B78 12/28/2022 6:26:21 PM 12/28/2027 6:36:22 PM

ส่งออกใบรับรองไปยัง ไฟล์ .cer

คุณจะต้องใช้ ไฟล์ .cer เมื่ออัปโหลดไปยังแอปพลิเคชัน Azure ซึ่งคุณจะสร้างในขั้นตอนถัดไป

PS C:\> $mycert | Export-Certificate -FilePath "C:\temp\EXOUnattendedCert.cer"


    Directory: C:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/28/2022   6:46 PM            796 EXOUnattendedCert.cer

ส่งออกใบรับรองไปยัง ไฟล์ .pfx

คุณจะต้องใช้ ไฟล์ .pfx เมื่อใช้เครื่องอื่นเพื่อเชื่อมต่อกับการตรวจสอบสิทธิ์ตามใบรับรอง คัดลอกหรือส่งไฟล์ .pfx และติดตั้งลงในเครื่องอื่น

PS C:\> $mycert | Export-PfxCertificate -FilePath "C:\temp\EXOUnattendedCert.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)


    Directory: C:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/28/2022   6:47 PM           2725 EXOUnattendedCert.pfx

2. ลงทะเบียนแอปพลิเคชันใน Azure

หากต้องการลงทะเบียนแอปพลิเคชันใน Azure AD ให้ทำตามขั้นตอนเหล่านี้:

  • ลงชื่อเข้าใช้ Microsoft Azure
  • คลิกที่ เมนู > Azure Active Directory
  • เลือก การลงทะเบียนแอป > การลงทะเบียนใหม่

  • กรอกชื่อ EXO PowerShell แบบไม่ต้องใส่ข้อมูล
  • คงประเภทบัญชีที่รองรับเริ่มต้นไว้ บัญชีในไดเร็กทอรีองค์กรนี้เท่านั้น - (ผู้เช่ารายเดียว)
  • คลิก ลงทะเบียน

  • แอปพลิเคชัน EXO PowerShell แบบอัตโนมัติ ภาพรวม ปรากฏขึ้น
  • คัดลอกแอปพลิเคชัน (รหัสไคลเอ็นต์) และวางลงใน Notepad เนื่องจากคุณจะต้องใช้ในภายหลังเมื่อเชื่อมต่อกับ Exchange Online

3. กำหนดค่าสิทธิ์ API ของแอปพลิเคชัน Azure

คุณต้องเพิ่มสิทธิ์ API ให้กับแอปพลิเคชัน EXO PowerShell แบบอัตโนมัติ ที่คุณสร้างขึ้น โดยทำตามขั้นตอนด้านล่าง:

  • คลิกที่ การอนุญาต API > เพิ่มการอนุญาต

  • คลิก API ที่องค์กรของฉันใช้
  • ค้นหา Office 365
  • เลือก Office 365 Exchange Online จากรายการผลลัพธ์

  • เลือกสิทธิ์ของแอปพลิเคชัน
  • ขยาย Exchange และเลือก Exchange.ManageAsApp
  • คลิก เพิ่มการอนุญาต

  • คลิกที่ ให้คำยินยอมของผู้ดูแลระบบ
  • คลิกใช่

  • สถานะจะแสดงเครื่องหมายถูกสีเขียว

4. อัปโหลดใบรับรองไปยังแอปพลิเคชัน

ถึงเวลาอัปโหลดใบรับรองที่ลงนามด้วยตนเองที่คุณสร้างในขั้นตอนก่อนหน้า:

  • คลิกที่ ใบรับรองและความลับ
  • คลิก ใบรับรอง > อัปโหลดใบรับรอง

  • คลิกที่ ไอคอนเรียกดู และเลือก ไฟล์ EXOUnattaened.cer ที่ลงนามด้วยตนเองใน C:\temp
  • เพิ่มคำอธิบาย ใบรับรองแบบอัตโนมัติของ EXO
  • คลิกเพิ่ม

  • ใบรับรองจะปรากฏในรายการ

หมายเหตุ: ยืนยันว่ามีรหัสประจำตัวใบรับรองเดียวกันกับที่คุณส่งออกในขั้นตอนก่อนหน้า

5. กำหนดแอปพลิเคชันให้กับบทบาทผู้ดูแลระบบ Exchange

ขั้นตอนสุดท้ายคือการเพิ่มแอปพลิเคชันเป็นสมาชิกในบทบาท ผู้ดูแลระบบ Exchange:

  • คลิกที่ เมนู > Azure Active Directory
  • เลือกบทบาทและผู้ดูแลระบบ
  • เลือก บทบาททั้งหมด และค้นหา การแลกเปลี่ยน
  • คลิกที่ ผู้ดูแลระบบ Exchange

  • คลิกที่ งาน > เพิ่มงาน

  • ค้นหาชื่อแอปพลิเคชัน Azure EXO PowerShell แบบอัตโนมัติ
  • เลือกแอปพลิเคชันจากผลลัพธ์
  • คลิกเพิ่ม

  • แอปพลิเคชันแบบอัตโนมัติของ EXO PowerShell ถูกเพิ่มลงในรายการการกำหนดบทบาทผู้ดูแลระบบ Exchange

เสร็จสิ้นทุกขั้นตอนแล้ว

เชื่อมต่อกับ Exchange Online PowerShell ด้วยการรับรองความถูกต้องตามใบรับรอง

มาดูการเชื่อมต่อกับ EXO PowerShell ด้วย CBA (Certificate Based Authentication)

จำเป็นต้องติดตั้งโมดูล Exchange Online PowerShell บนเครื่อง หากคุณไม่ได้ติดตั้งไว้ จะไม่สามารถเชื่อมต่อได้

กรอกตัวแปรสามตัวด้านล่างเพื่อเชื่อมต่อกับ Exchange Online PowerShell ด้วยการตรวจสอบสิทธิ์ตามใบรับรอง:

  1. $AppId
  2. $CertificateThumbPrint
  3. $องค์กร
$AppId = "cd4fad71-3820-4198-8748-b88035aeec51"
$CertificateThumbprint = "4F1C50EFC978A355227459E2D54FA9BEE8B93B78"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

เมื่อคุณเชื่อมต่อกับ Exchange Online PowerShell แล้ว ให้เรียกใช้ Get-EXOMailbox cmdlet เพื่อดึงข้อมูลกล่องจดหมาย

PS C:\> Get-EXOMailbox -ResultSize 5 | ft Name,UserPrincipalName

Name          UserPrincipalName
----          -----------------
Amanda Morgan Amanda.Morgan@exoip.com
Amelia Nash   Amelia.Nash@exoip.com
Carol Baker   Carol.Baker@exoip.com
Craig Hansen  Craig.Hansen@exoip.com
Curt Berry    Curt.Berry@exoip.com

นี่คือสิ่งที่ดูเหมือน

ตัวอย่างสคริปต์ PowerShell ที่ไม่ต้องใส่ข้อมูล

นี่คือสคริปต์ PowerShell แบบอัตโนมัติที่จะส่งออกรายการกล่องจดหมายใน Exchange Online เป็นไฟล์ CSV ใน C:\temp สคริปต์ถูกเพิ่มเข้าไปในงานที่กำหนดเวลาไว้ซึ่งจะทำงานทุกวัน

หมายเหตุ: เพิ่ม Disconnect-ExchangeOnline -Confirm:$false ที่ส่วนท้ายของสคริปต์ PowerShell หากสคริปต์ทำงานโดยไม่ตัดการเชื่อมต่อเซสชัน คุณสามารถใช้เซสชัน PowerShell ระยะไกลทั้งหมดที่มีอยู่ได้ และคุณจะต้องรอให้เซสชันดังกล่าวหมดอายุ

# Connect Exchange Online PowerShell
$AppId = "cd4fad71-3820-4198-8748-b88035aeec51"
$CertificateThumbprint = "4F1C50EFC978A355227459E2D54FA9BEE8B93B78"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

# Split path
$Path = Split-Path -Parent "C:\temp\*.*"

# Create variable for the date stamp
$LogDate = Get-Date -f yyyyMMddhhmm

# Define CSV and log file location variables
$Csvfile = $Path + "\AllMailboxes_$logDate.csv"

Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress | Sort-Object PrimarySmtpAddress | Export-CSV -Path $Csvfile -NoTypeInformation -Encoding UTF8

# Disconnect Exchange Online PowerShell
Disconnect-ExchangeOnline -Confirm:$false

นี่คือลักษณะที่ปรากฏเมื่อเปิดไฟล์ CSV ด้วย Notepad

แค่นั้นแหละ!

คุณตั้งค่าการรับรองความถูกต้องตามใบรับรอง Exchange Online ใน Exchange Online สำเร็จแล้ว

อ่านเพิ่มเติม: กำหนดค่าการป้องกันรหัสผ่าน Microsoft Entra สำหรับภายในองค์กร »

บทสรุป

คุณได้เรียนรู้วิธีกำหนดค่าการรับรองความถูกต้องตามใบรับรอง Exchange Online สำหรับสคริปต์ที่ไม่ต้องดูแล ทำตามคำแนะนำทีละขั้นตอน และคุณสามารถตรวจสอบความถูกต้องกับ Exchange Online PowerShell ได้โดยไม่ต้องโต้ตอบกับผู้ใช้ อย่าลืมสำรองข้อมูลใบรับรองที่ลงนามด้วยตนเอง เพื่อให้คุณสามารถนำเข้าและใช้งานบนเครื่องอื่นได้

คุณสนุกกับบทความนี้หรือไม่? คุณอาจชอบ ป้องกันการโจมตีเมื่อยล้าของ MFA ในองค์กร อย่าลืมติดตามเราและแบ่งปันบทความนี้

บทความที่เกี่ยวข้อง