เคล็ดลับ PowerShell สิบอันดับแรกสำหรับการจัดการ Microsoft 365: ตอนที่สอง
ในส่วนแรกของชุดนี้ เราจะกล่าวถึงเคล็ดลับทั่วไปบางประการของ PowerShell ในบทความนี้ เราเน้นที่วิธีใช้ PowerShell เพื่อจัดการ Microsoft 365 นอกจากนี้ เรายังพิจารณาวิธีใช้บริการระบบคลาวด์เพื่อจัดการโค้ด PowerShell การทดสอบ การควบคุมความปลอดภัย และอื่นๆ อีกมากมาย วัตถุประสงค์ของบทความนี้คือเพื่อช่วยให้ผู้ที่เขียนสคริปต์ PowerShell เห็นภาพที่ใหญ่ขึ้น นอกเหนือจากการเขียนโค้ด และในการจัดการการใช้โค้ดในอนาคต
รหัสผ่าน ข้อมูลลับ และใบรับรอง
Microsoft กำลังทำการเปลี่ยนแปลงกลไกการรับรองความถูกต้องอย่างต่อเนื่องเพื่อเปลี่ยนจากการรับรองความถูกต้องขั้นพื้นฐานที่ไม่ปลอดภัย (Exchange Online) เป็นการรับรองความถูกต้องสมัยใหม่ (OAuth 2.0) ผู้ดูแลระบบจำเป็นต้องสลับไปใช้การเชื่อมต่อ PowerShell ที่ปลอดภัยยิ่งขึ้นสำหรับสคริปต์ เช่น การใช้ใบรับรองหรือใช้โมดูล PowerShell ที่เป็นความลับสำหรับการจัดเก็บข้อมูลประจำตัวในเครื่อง หรือใช้ข้อมูลประจำตัว Azure Automation ซึ่งจัดเก็บไว้ใน Azure Key Vault ที่จัดการโดยระบบ ตรวจสอบให้แน่ใจว่าใช้การรับรองความถูกต้องตามใบรับรองหรือ Azure Automation Credentials เนื่องจากมีความปลอดภัยมากกว่ารหัสผ่านที่จัดเก็บไว้ในเครื่องหรือรหัสผ่านข้อความธรรมดาที่จัดเก็บไว้ในไฟล์สคริปต์
การใช้บัญชีร้านค้า Azure Automation จำเป็นต้องมีการติดตั้งโมดูล Az.Automation ซึ่งเชื่อมต่อกับ Azure และโค้ดสี่บรรทัด:
install-module az.automation
Connect-AzAccount
$AutomationUserName = 'damian@powershellgeek.com'
$Password = ConvertTo-SecureString (Read-host 'Enter password to encrypt') -asplaintext -Force
$Credentials = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $AutomationUserName, $Password
New-AzureAutomationCredential -AutomationAccountName "AutomationAccount" -Name "AutomationCredentials" -Value $Credentialsสำหรับการรับรองความถูกต้องตามใบรับรอง ส่วนใหญ่ แต่ไม่ใช่ทั้งหมด (SharePoint Online) โมดูล Microsoft 365 PowerShell มีตัวเลือกในการใช้ใบรับรองสำหรับการรับรองความถูกต้อง Exchange Online Management v3, Security and Compliance Center, Microsoft Teams, โมดูล PNP ของ SharePoint และ Microsoft Graph PowerShell SDK. การรับรองความถูกต้องตามใบรับรองนั้นตั้งค่าได้ไม่ยาก แต่จำเป็นต้องมีแอป Azure ที่ลงทะเบียน สิทธิ์ API ที่เหมาะสม และใบรับรองภายในเครื่องที่อ้างอิงโดยสคริปต์และแนบไปกับแอป Azure เมื่อใบรับรองพร้อมแล้ว การเชื่อมต่อกับปริมาณงานที่ถูกต้องก็สามารถเกิดขึ้นได้
เคล็ดลับ: หากสคริปต์ทำงานบนเซิร์ฟเวอร์ภายใน ให้ตรวจสอบความปลอดภัยด้วยการล็อคผู้ที่สามารถเข้าถึงไฟล์ที่มีสิทธิ์เข้าถึงไฟล์ และควรทำโดยไม่คำนึงถึงวิธีการตรวจสอบสิทธิ์
ลิงก์ทรัพยากร โมดูลความลับ
ทรัพยากร การตรวจสอบสิทธิ์ตามใบรับรอง สำหรับ Exchange, Microsoft Graph และ SharePoint PNP
การจัดการข้อมูลรับรอง Azure Automation ทรัพยากร
Azure อัตโนมัติ
เริ่มต้นด้วยสิ่งนี้: หยุดใช้กล่องข้ามภายในองค์กรหรือเวิร์กสเตชันของผู้ดูแลระบบ ย้ายปริมาณงานของคุณไปยังระบบคลาวด์เนื่องจาก Azure Automation ของ Microsoft มอบรากฐานที่แข็งแกร่งที่ปรับขนาดได้และผ่านการตรวจสอบแล้ว และมีความปลอดภัยมากกว่าเวิร์กสเตชัน Azure Automation ซึ่งมีทรัพยากรที่เหมาะสมอาจมีช่วงการเรียนรู้ที่น้อยมากและมีศักยภาพที่จะเป็นโซลูชันที่มีต้นทุนต่ำ ขึ้นอยู่กับการใช้งาน ด้วยการเข้าถึงโมดูล PowerShell เริ่มต้น โมดูลแกลเลอรี หรือโมดูลของคุณเองที่นำเข้าไปยัง Azure เราอาจทำให้งานผู้ดูแลระบบจำนวนมากเป็นแบบอัตโนมัติได้
Azure Runbook: บริการภายใน Azure ที่ช่วยให้ผู้ดูแลระบบสามารถสร้างงานอัตโนมัติโดยใช้ภาษาเช่น PowerShell
เพื่อให้ประสบความสำเร็จกับ Azure Automation อย่าลืมทดสอบสคริปต์การทำงานอัตโนมัติของคุณด้วย PowerShell ปกติก่อนที่จะย้ายงานไปยัง Azure Automation เนื่องจากเครื่องมือ PowerShell เช่น Visual Studio Code ให้การดีบักและคำติชมเพิ่มเติม เมื่อสคริปต์พร้อมสำหรับการทดสอบการทำงานอัตโนมัติ ตรวจสอบให้แน่ใจว่าได้เรียกใช้สคริปต์โดยคลิกที่เริ่มสำหรับ Runbook และตรวจสอบแผงที่โหลดเพื่อดูข้อผิดพลาด คำเตือน และบันทึก (แต่ละบานหน้าต่างอาจมีข้อมูลการแก้ไขปัญหา) เพื่อดูว่าสคริปต์ทำงานอย่างไร จากนั้นเมื่อสคริปต์พร้อมและทำงานแล้ว ให้สร้างและเชื่อมโยงกำหนดการที่เหมาะกับงาน และตรวจสอบบันทึกที่มีอยู่ใน Runbook สำหรับระบบอัตโนมัติ
ด้วยระบบอัตโนมัติ เราจัดการข้อมูลใน Graph, Exchange Online, SharePoint และ Teams เพื่อดำเนินงานต่างๆ เช่น การรายงาน การแจ้งเตือน และการเปลี่ยนแปลงข้อมูลภายในแต่ละปริมาณงานเหล่านี้ นี่คือจุดที่การทดสอบมีประโยชน์เนื่องจากการเข้าถึงปริมาณงานเหล่านี้ แม้จะควบคุมโดย Azure RBAC แต่ก็สามารถก่อให้เกิดความเสียหายได้หากไม่ได้นำไปใช้อย่างถูกต้อง
Azure Automation ยังรองรับการรับรองความถูกต้องตามใบรับรองอีกด้วย
การติดตามผล
- Azure Automation สำหรับการแลกเปลี่ยนแบบออนไลน์
- การใช้ Azure Automation เพื่อตรวจสอบบันทึกการตรวจสอบแบบรวม
- และอีกมากมาย…
GitHub - คลังสคริปต์ของคุณ
การควบคุมการเปลี่ยนแปลงโค้ดเป็นส่วนสำคัญในการรักษาสคริปต์ระดับการผลิต และการใช้เครื่องมือบนเว็บเช่น GitHub จะทำให้ง่ายขึ้นในแง่ของการทำงานร่วมกันและการทดสอบการเปลี่ยนแปลง ด้วย GitHub คุณสามารถสร้างโปรเจ็กต์ที่สอดคล้องกับโปรเจ็กต์ไอทีภายใน กลุ่ม หรือโปรเจ็กต์งานจากที่บ้านได้โดยตรง เราสามารถสร้างแลนดิ้งเพจ หน้าช่วยเหลือ และอื่นๆ เพื่อช่วยในกระบวนการทำงานร่วมกันได้
ทำไมต้องใช้ GitHub?
- การควบคุมการเปลี่ยนแปลง: ตัดสินใจว่าคุณลักษณะและการเปลี่ยนแปลงโค้ดใดที่จะปล่อยผ่านคำขอ Pull/Push
- การแยกสาขา: อนุญาตให้แยกโค้ดเพื่อตรวจสอบความเสถียรหรือการทดสอบเวอร์ชันใหม่
- การควบคุมการเข้าถึง: ใช้ประโยชน์จากการควบคุมการเข้าถึง และให้/บล็อกการเข้าถึงโครงการและรหัส ขึ้นอยู่กับความจำเป็นของโครงการ
- การรายงาน: สร้างรายงานเกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้น ใครมีส่วนร่วม และอื่นๆ สำหรับแต่ละโครงการ
ข้อดีของการใช้ GitHub
- การเข้าถึงส่วนใหญ่นั้นฟรี
- ที่เก็บสามารถเป็นแบบส่วนตัว สาธารณะ และแบ่งปัน (การทำงานร่วมกัน)
- แอปพลิเคชันเดสก์ท็อปและการเข้าถึงเว็บทำให้ผู้ใช้ได้รับประสบการณ์ที่ดี
- มีการบูรณาการสำหรับโปรแกรมแก้ไข Visual Code Studio
ตัวอย่างคลังสคริปต์สาธารณะที่ดี:
https://github.com/12Knocksinna/Office365itpros - ชุดโค้ด PowerShell ที่ยอดเยี่ยมสำหรับการอ้างอิงและใช้งาน
https://github.com/microsoft - พื้นที่เก็บข้อมูลอย่างเป็นทางการของ Microsoft และแหล่งที่มาของตัวอย่างโค้ด PowerShell ของตนเอง
https://github.com/O365scripts - แหล่งข้อมูลบุคคลที่สามสำหรับสคริปต์ PowerShell สำหรับการจัดการ Office 365
ข้อพิจารณา/ข้อเสนอแนะ
สิ่งสำคัญประการหนึ่งของ GitHub คือการกำหนดแผนที่จำเป็นสำหรับองค์กรหรือบุคคล หากมีบุคคลเพียงคนเดียวที่ทำงานในโครงการนี้และไม่จำเป็นต้องมีการร่วมมือเป็นพิเศษ GitHub เวอร์ชันฟรีคือโซลูชันที่เหมาะสม อย่างไรก็ตาม หากองค์กรมีทีมที่ต้องทำงานร่วมกันในโปรเจ็กต์ตั้งแต่หนึ่งโปรเจ็กต์ขึ้นไป ก็ควรเลือกรุ่นทีมหรือรุ่น Enterprise ความแตกต่างที่สำคัญคือ Enterprise มีฟีเจอร์ขั้นสูง เช่น ระบบสำหรับการจัดการข้อมูลประจำตัวข้ามโดเมน (SCIM) เพื่อควบคุมการเข้าถึงองค์กร GitHub, API สำหรับการบันทึก, พื้นที่เก็บข้อมูลมากขึ้น, เวลาในการประมวลผลมากขึ้นสำหรับการดำเนินการ รวมถึงคุณสมบัติการปฏิบัติตามข้อกำหนดขั้นสูง เช่น SOC1 SOC2 และ FedRAMP (ATO)
QA ผู้เช่า Microsoft 365
สำหรับผู้ดูแลระบบที่จัดการผู้เช่า Microsoft 365 การรับผู้เช่าการพัฒนาแบบคู่ขนานถือเป็นแนวปฏิบัติที่ดีและ Microsoft มีลิงก์ลงทะเบียนฟรีตามที่อธิบายไว้ในบทความนี้ สิ่งนี้หมายความว่าอย่างไร? หมายถึงการสร้างผู้เช่าที่ซ้ำกันโดยมีใบอนุญาต ฟีเจอร์ และอื่นๆ เหมือนกัน เพื่อเลียนแบบสิ่งที่ใช้ในการผลิต ปัจจัยบางประการที่ต้องพิจารณาในการสร้างผู้เช่าการทดสอบ ได้แก่:
- การจัดทำงบประมาณและการจัดซื้อจัดจ้าง: งบประมาณใดและความรับผิดชอบของใครในการจัดการ
- การกำหนดคุณลักษณะที่จะเปิดใช้งาน: คุณลักษณะการใช้งานจริงทั้งหมดจำเป็นต้องได้รับการทดสอบใน QA หรือไม่
- แหล่งข้อมูล: อะไรจะเกิดขึ้นในสภาพแวดล้อมนี้ มันจะเป็นสำเนาการผลิตแบบหนึ่งต่อหนึ่ง เวอร์ชันลดขนาดลง หรือข้อมูลที่ไม่เปิดเผยตัวตนสำหรับการทดสอบเท่านั้น
- การจัดการการเปลี่ยนแปลง: คำสั่งซื้อจะคงอยู่อย่างไรเมื่อมีการเปลี่ยนแปลง เมื่อทำการเปลี่ยนแปลงแล้วจะคืนกลับได้อย่างไร?
- โดเมน: โดเมนย่อยใดที่จะใช้สำหรับการทดสอบ
ดังนั้นผู้เช่าประเภทนี้และการกำหนดค่าเกี่ยวข้องกับ PowerShell อย่างไร พูดง่ายๆ ก็คือ ผู้เช่าประเภทนี้อนุญาตให้ผู้ดูแลระบบลองใช้การจัดการ PowerShell กับปริมาณงานในผู้เช่าของตน (Exchange, SharePoint, Teams, Graph และอื่นๆ) รวมถึงสคริปต์อัตโนมัติ (ต้องสมัครสมาชิก Azure) ที่จัดเก็บข้อมูลรับรอง และฟังก์ชันอื่นๆ ในแซนด์บ็อกซ์ สภาพแวดล้อมที่ไม่ส่งผลกระทบต่อผู้ใช้ที่ใช้งานจริง สิ่งนี้อาจมีความสำคัญขึ้นอยู่กับงานที่กำลังดำเนินการ ตัวอย่างเช่น หากสคริปต์ดำเนินงานโดยอัตโนมัติสำหรับการอนุญาตให้ใช้สิทธิ์ การกำหนดกลุ่ม หรือสิทธิ์สำหรับกระบวนการเริ่มต้นใช้งาน/เลิกใช้งาน การเรียกใช้ PowerShell อาจทำให้ให้อภัยได้มากขึ้นและทำให้เกิดอาการปวดหัวน้อยลง ดังนั้น การมีผู้เช่า QA แม้จะมาจาก PowerShell ก็เป็นความคิดที่ดี การใช้ผู้เช่ารายนี้ ผู้ดูแลระบบสามารถฝึกฝนทักษะ PowerShell ปรับแต่งสคริปต์ และนำเสนอโซลูชันที่จะไม่ทำให้การผลิตหยุดทำงานสำหรับองค์กรของตน
การควบคุมการเข้าถึง PowerShell สำหรับผู้เช่า
การรักษาความปลอดภัยและการเข้าถึงที่มีการควบคุมเป็นส่วนสำคัญของการใช้สคริปต์และเครื่องมืออัตโนมัติในสภาพแวดล้อมใดๆ และนี่ก็เป็นจริงสำหรับ Microsoft 365 เช่นกัน Microsoft ให้การป้องกันและการควบคุมความปลอดภัยในตัวด้วยบทบาท Azure AD ซึ่งจะจำกัดสิ่งที่ผู้ใช้สามารถทำได้ตามบทบาทและ กลุ่มบทบาทที่พวกเขาได้รับมอบหมาย พูดง่ายๆ ก็คือ PowerShell ควรได้รับอนุญาตสำหรับผู้ดูแลระบบที่มีสิทธิ์การเข้าถึงที่เหมาะสม และผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบควรถูกบล็อกจาก PowerShell:
การแลกเปลี่ยนออนไลน์: การเข้าถึง PowerShell จะถูกเปิดใช้งานตามค่าเริ่มต้น แม้ว่าจะจำกัดตามบริบทของตัวเองก็ตาม หากต้องการปิดใช้งานการเข้าถึงนี้ ให้ใช้สิ่งนี้เป็นตัวอย่าง:
Set-User -Identity damian@powershellgeek.com -RemotePowerShellEnabled $falseไม่จำเป็นต้องมีการกำหนดค่าสำหรับโมดูล SharePoint Online PowerShell เนื่องจากผู้ที่ไม่ใช่ผู้ดูแลระบบจะถูกบล็อกตามค่าเริ่มต้น ดังที่แสดงด้านล่างใน รูปที่ 1 ด้านล่าง
ทีม: ไม่สามารถบล็อกได้ - ผู้ใช้สามารถเข้าถึงสิ่งที่พวกเขาได้รับสิทธิ์จากผู้ดูแลระบบหรือ Microsoft (ค่าเริ่มต้น)
Microsoft Graph: ภายในนโยบายการเข้าถึงแบบมีเงื่อนไข เราสามารถเลือกแอป Microsoft Graph PowerShell และตั้งค่าการควบคุมการเข้าถึงเป็นบล็อกผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ (รูปที่ 2) นโยบายนี้จะบล็อกการเข้าถึง PowerShell สำหรับผู้ใช้ แต่จะไม่บล็อกการเรียกไปยัง Graph API นโยบายแบบมีเงื่อนไขใดๆ ที่สร้างขึ้นเพื่อจุดประสงค์นี้ควรแยกบัญชีแก้วแตกเพื่อป้องกันการล็อกจากทรัพยากรที่ถูกบล็อก
AzureAD/MS Online: มีกำหนดเลิกใช้งานในเดือนมิถุนายน 2023
ศูนย์ความปลอดภัยและการปฏิบัติตามข้อกำหนด: ถูกจำกัดผ่าน RBAC ผู้ใช้ทั่วไปสามารถเข้าถึง cmdlets PowerShell ข้อความกักกัน แต่ไม่มีอะไรอื่น
เป็นที่น่าสังเกตว่าผู้ใช้ทั่วไปได้จำกัดการเข้าถึง PowerShell เนื่องจากรูปแบบการรักษาความปลอดภัยของ Microsoft ของบทบาทและสิทธิ์การเข้าถึง
ย้ายไปที่คลาวด์
เมื่อใช้ PowerShell เพื่อจัดการทรัพยากรบนคลาวด์ เช่น Microsoft 365 ผู้ดูแลระบบควรใช้ประโยชน์จากเครื่องมือขั้นสูงเหล่านี้ที่ทำงานบนคลาวด์เช่นกัน เนื่องจากให้ความสามารถในการปรับขนาด ความเสถียร และความปลอดภัยที่ไม่พบในระบบภายในองค์กร หากคุณติดขัดในการใช้ทรัพยากรภายในองค์กรเพื่อจัดการโครงสร้างพื้นฐานระบบคลาวด์ ถึงเวลาที่เหมาะสมที่จะเปลี่ยนแปลงสิ่งนั้นด้วยความพร้อมใช้งานของเครื่องมือและฟังก์ชันที่พร้อมใช้งานในขณะนี้ การใช้ GitHub การรับรองความถูกต้องตามใบรับรอง และระบบอัตโนมัติ คุณสามารถเพิ่มความปลอดภัยและการใช้งานของ PowerShell สำหรับผู้ดูแลระบบได้

