นโยบายการดำเนินการ PowerShell | ขอบเขตและรูปแบบของนโยบายการดำเนินการ
ข้อมูลเบื้องต้นเกี่ยวกับนโยบายการดำเนินการ PowerShell
นโยบายการดำเนินการ PowerShell เป็นคุณลักษณะด้านความปลอดภัยสำหรับสภาพแวดล้อม PowerShell ซึ่งจะกำหนดว่าผู้ใช้สามารถโหลดไฟล์การกำหนดค่า เช่น โปรไฟล์ PowerShell ไฟล์การกำหนดค่าพื้นฐาน หรือผู้ใช้สามารถเรียกใช้สคริปต์ได้หรือไม่ นอกจากนี้ยังกำหนดด้วยว่าสคริปต์ควรเซ็นชื่อแบบดิจิทัลก่อนที่จะรันหรือไม่ แทนที่จะอนุญาตให้ผู้ใช้เรียกใช้สคริปต์เช่น VBScript นโยบายการดำเนินการของ PowerShell ไม่ใช่คุณลักษณะความปลอดภัยแบบฮาร์ดคอร์ที่ป้องกันการกระทำของผู้ใช้ แต่จะป้องกันไม่ให้โค้ดหรือสคริปต์ที่เป็นอันตรายทำงานในสภาพแวดล้อม ผู้ใช้สามารถเปลี่ยนนโยบายการดำเนินการด้วยบรรทัดคำสั่งเพื่อเรียกใช้สคริปต์
ขอบเขตนโยบายการดำเนินการ PowerShell
เมื่อใช้นโยบายการดำเนินการ นโยบายนั้นจะถูกนำไปใช้กับขอบเขตเฉพาะ ขอบเขตมีการกล่าวถึงด้านล่างในระดับความสำคัญ
- นโยบายเกี่ยวกับเครื่องจักร
- นโยบายผู้ใช้
- กระบวนการ (เซสชันปัจจุบัน)
- ผู้ใช้ปัจจุบัน
- เครื่องท้องถิ่น
1. นโยบายเครื่องจักร
นโยบายนี้กำหนดโดยนโยบายกลุ่มสำหรับผู้ใช้คอมพิวเตอร์ทุกคน สามารถตั้งค่าผ่าน GPO: การกำหนดค่าคอมพิวเตอร์ -> นโยบาย -> เทมเพลตการดูแลระบบ -> ส่วนประกอบของ Windows -> Windows PowerShell
2. นโยบายผู้ใช้
นโยบายนี้สามารถตั้งค่าได้โดยนโยบายกลุ่มสำหรับผู้ใช้คอมพิวเตอร์ปัจจุบัน สามารถตั้งค่าผ่าน GPO: การกำหนดค่าผู้ใช้ -> นโยบาย -> เทมเพลตการดูแลระบบ -> ส่วนประกอบของ Windows -> Windows PowerShell
3.กระบวนการ (เซสชันปัจจุบัน)
นโยบายนี้มีผลจนถึงเซสชัน PowerShell เมื่อปิดเซสชัน นโยบายนี้จะถูกลบออก นโยบายนี้ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม Windows $Env: PSExecutionPolicyPreference โดยค่าเริ่มต้น ตัวแปรนี้จะไม่มีอยู่และสร้างขึ้นเมื่อมีการตั้งค่านโยบายนี้เท่านั้น
$env:PSExecutionPolicyPreference4. ผู้ใช้ปัจจุบัน
นโยบายนี้มีไว้สำหรับผู้ใช้ปัจจุบันเท่านั้น เมื่อตั้งค่านโยบายนี้ ระบบจะจัดเก็บไว้ในรีจิสทรี
5. เครื่องท้องถิ่น
นโยบายนี้ถูกตั้งค่าไว้สำหรับคอมพิวเตอร์ในระบบ เมื่อตั้งค่านโยบายนี้ ระบบจะจัดเก็บไว้ในรีจิสทรี HKEY_LOCAL_MACHINE
โหมดนโยบายการดำเนินการ PowerShell
ด้านล่างนี้คือโหมดนโยบายการดำเนินการ PowerShell:
1. ถูกจำกัด
นี่คือนโยบายการดำเนินการเริ่มต้นสำหรับระบบ Windows สำหรับ PowerShell หมายความว่าคุณไม่สามารถเรียกใช้สคริปต์ใดๆ (.ps1) ไฟล์การกำหนดค่า (.ps1xml) และสคริปต์โมดูล (.psm1) ได้ แต่คุณสามารถเรียกใช้ cmdlets ได้ เมื่อตั้งค่าโหมดนี้แล้วและคุณพยายามเรียกใช้สคริปต์ คุณจะได้รับข้อผิดพลาดดังแสดงในตัวอย่างด้านล่าง
2. ลงนามทั้งหมด
ผู้ใช้สามารถเรียกใช้สคริปต์ที่ลงนามแบบดิจิทัลโดยผู้เผยแพร่ที่เชื่อถือได้เท่านั้น สคริปต์ที่ไม่ได้เซ็นชื่อแบบดิจิทัล ผู้ใช้จะได้รับแจ้งให้ป้อน
3. ลงนามระยะไกล
สคริปต์ที่ทำงานจากเครื่องคอมพิวเตอร์ ไม่จำเป็นต้องมีการเซ็นชื่อแบบดิจิทัล แต่ไม่ควรดาวน์โหลดจากอินเทอร์เน็ตและเรียกใช้ สคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ต รวมถึงแอปพลิเคชันอีเมลและแอปส่งข้อความ จำเป็นต้องมีการเซ็นชื่อแบบดิจิทัล PowerShell สามารถเรียกใช้สคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ตและไม่ได้เซ็นชื่อแบบดิจิทัลหากไฟล์ถูกปลดบล็อก ไฟล์สามารถปลดบล็อกได้โดยใช้คุณสมบัติไฟล์หรือผ่าน Unblock-File
4. ไม่จำกัด
ผู้ใช้สามารถเรียกใช้สคริปต์ที่ไม่ได้ลงชื่อ แต่สามารถเรียกใช้สคริปต์ที่เป็นอันตรายได้เช่นกัน PowerShell เตือนผู้ใช้เมื่อพวกเขาเรียกใช้สคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ต
5. บายพาส
ไม่จำเป็นต้องมีสคริปต์ที่เซ็นชื่อแบบดิจิทัลเมื่อตั้งค่านโยบายการดำเนินการนี้ ผู้ใช้จะไม่ได้รับพร้อมท์ให้เรียกใช้สคริปต์ที่ไม่ได้ลงนาม สิ่งนี้มีประโยชน์เมื่อมีแอปพลิเคชันขนาดใหญ่ที่ต้องการ PowerShell เป็นโมเดลพื้นฐานและจำเป็นต้องเรียกใช้ไฟล์การกำหนดค่าหลายไฟล์ โดยทั่วไปแล้ว นโยบายนี้ไม่แนะนำ เนื่องจากเป็นเรื่องง่ายที่จะกำหนดเป้าหมายเครื่อง Windows ให้เรียกใช้โค้ดที่เป็นอันตรายเมื่อตั้งค่านโยบายนี้
6. ไม่ได้กำหนด
เมื่อมีการตั้งค่านโยบายที่ไม่ได้กำหนดไว้ นโยบายนั้นจะเป็นค่าเริ่มต้น นโยบายเริ่มต้นจะถูกจำกัด หากต้องการลบนโยบายการดำเนินการปัจจุบันโดยทั่วไป นโยบายนี้จะถูกตั้งค่า
ตัวอย่างการนำนโยบายการดำเนินการ PowerShell ไปใช้
ด้านล่างนี้เป็นตัวอย่างบางส่วนที่กล่าวถึง:
ตัวอย่าง #1
เพื่อรับนโยบายการดำเนินการปัจจุบันบนเครื่อง
รหัส:
Get-ExecutionPolicyเอาต์พุต:
ตัวอย่าง #2
หากต้องการรับนโยบายการดำเนินการทั้งหมดและตรวจสอบว่านโยบายใดที่ใช้กับขอบเขต คุณต้องใช้คำสั่งด้านล่าง
รหัส:
Get-ExecutionPolicy -Listเอาต์พุต:
คำอธิบาย: ในที่นี้ ตามผลลัพธ์ของตัวอย่างข้างต้น นโยบายการบายพาสจะถูกนำไปใช้กับขอบเขตเซสชันปัจจุบัน (กระบวนการ)
ตัวอย่าง #3
หากต้องการรับนโยบายการดำเนินการสำหรับขอบเขตเฉพาะ คุณต้องใช้ -ขอบเขต ตัวอย่างเช่น หากต้องการรับนโยบายการดำเนินการสำหรับขอบเขตกระบวนการ ให้ใช้คำสั่งด้านล่าง
รหัส:
Get-ExecutionPolicy -Scope Processเอาต์พุต:
ในทำนองเดียวกัน คุณสามารถกำหนดนโยบายสำหรับขอบเขตที่แตกต่างกันได้ ตัวอย่างเช่น,
Get-ExecutionPolicy -Scope MachinePolicy
Get-ExecutionPolicy -Scope UserPolicy
Get-ExecutionPolicy -Scope CurrentPolicyตัวอย่าง #4
หากต้องการกำหนดนโยบายการดำเนินการ คุณต้องใช้นโยบาย Set-Execution
รหัส:
Set-ExecutionPolicy RemoteSignedเมื่อคุณตั้งค่านโยบายการดำเนินการโดยไม่มีขอบเขตใดๆ นโยบายดังกล่าวจะถูกตั้งค่าสำหรับเครื่องภายในเครื่องตามค่าเริ่มต้น
ตัวอย่าง #5
กำหนดนโยบายการดำเนินการด้วย -Scope
รหัส:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restrictedตัวอย่าง #6
กำหนดนโยบายการดำเนินการด้วย -Force
เมื่อคุณตั้งค่านโยบายการดำเนินการ PowerShell จะแจ้งให้ผู้ใช้ยืนยัน เพื่อหลีกเลี่ยงขั้นตอนนี้ คุณต้องใช้พารามิเตอร์ Force พารามิเตอร์นี้ใช้นโยบายกับขอบเขตเฉพาะหรือขอบเขตเริ่มต้นโดยตรง
รหัส:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Forceตัวอย่าง #7
ลบนโยบายการดำเนินการ
หากต้องการลบนโยบายการดำเนินการสำหรับขอบเขตใดๆ คุณต้องใช้นโยบายที่ไม่ได้กำหนด มันจะตั้งค่านโยบายเป็นค่าเริ่มต้น กล่าวคือ ถูกจำกัด
รหัส:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Undefined -Force
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Undefined -Forceบทสรุป
นโยบาย PowerShell Execution เป็นองค์ประกอบสำคัญของการรักษาความปลอดภัยของระบบ Windows สำหรับการจำกัดผู้ใช้ไม่ให้เรียกใช้สคริปต์ใดๆ จากคอนโซลโดยประมาท ผู้ดูแลระบบสามารถใช้นโยบายกลุ่มเพื่อปรับใช้นโยบายการดำเนินการในระบบสภาพแวดล้อม Windows ขนาดใหญ่ ดังนั้นการเรียกใช้สคริปต์จากอินเทอร์เน็ตและแอปพลิเคชันอื่น ๆ จึงสามารถป้องกันไม่ให้ทำงานโดยไม่ตั้งใจได้





