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

นโยบายการดำเนินการ PowerShell | ขอบเขตและรูปแบบของนโยบายการดำเนินการ


ข้อมูลเบื้องต้นเกี่ยวกับนโยบายการดำเนินการ PowerShell

นโยบายการดำเนินการ PowerShell เป็นคุณลักษณะด้านความปลอดภัยสำหรับสภาพแวดล้อม PowerShell ซึ่งจะกำหนดว่าผู้ใช้สามารถโหลดไฟล์การกำหนดค่า เช่น โปรไฟล์ PowerShell ไฟล์การกำหนดค่าพื้นฐาน หรือผู้ใช้สามารถเรียกใช้สคริปต์ได้หรือไม่ นอกจากนี้ยังกำหนดด้วยว่าสคริปต์ควรเซ็นชื่อแบบดิจิทัลก่อนที่จะรันหรือไม่ แทนที่จะอนุญาตให้ผู้ใช้เรียกใช้สคริปต์เช่น VBScript นโยบายการดำเนินการของ PowerShell ไม่ใช่คุณลักษณะความปลอดภัยแบบฮาร์ดคอร์ที่ป้องกันการกระทำของผู้ใช้ แต่จะป้องกันไม่ให้โค้ดหรือสคริปต์ที่เป็นอันตรายทำงานในสภาพแวดล้อม ผู้ใช้สามารถเปลี่ยนนโยบายการดำเนินการด้วยบรรทัดคำสั่งเพื่อเรียกใช้สคริปต์

ขอบเขตนโยบายการดำเนินการ PowerShell

เมื่อใช้นโยบายการดำเนินการ นโยบายนั้นจะถูกนำไปใช้กับขอบเขตเฉพาะ ขอบเขตมีการกล่าวถึงด้านล่างในระดับความสำคัญ

  • นโยบายเกี่ยวกับเครื่องจักร
  • นโยบายผู้ใช้
  • กระบวนการ (เซสชันปัจจุบัน)
  • ผู้ใช้ปัจจุบัน
  • เครื่องท้องถิ่น

1. นโยบายเครื่องจักร

นโยบายนี้กำหนดโดยนโยบายกลุ่มสำหรับผู้ใช้คอมพิวเตอร์ทุกคน สามารถตั้งค่าผ่าน GPO: การกำหนดค่าคอมพิวเตอร์ -> นโยบาย -> เทมเพลตการดูแลระบบ -> ส่วนประกอบของ Windows -> Windows PowerShell

2. นโยบายผู้ใช้

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

3.กระบวนการ (เซสชันปัจจุบัน)

นโยบายนี้มีผลจนถึงเซสชัน PowerShell เมื่อปิดเซสชัน นโยบายนี้จะถูกลบออก นโยบายนี้ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม Windows $Env: PSExecutionPolicyPreference โดยค่าเริ่มต้น ตัวแปรนี้จะไม่มีอยู่และสร้างขึ้นเมื่อมีการตั้งค่านโยบายนี้เท่านั้น

$env:PSExecutionPolicyPreference

4. ผู้ใช้ปัจจุบัน

นโยบายนี้มีไว้สำหรับผู้ใช้ปัจจุบันเท่านั้น เมื่อตั้งค่านโยบายนี้ ระบบจะจัดเก็บไว้ในรีจิสทรี

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 ขนาดใหญ่ ดังนั้นการเรียกใช้สคริปต์จากอินเทอร์เน็ตและแอปพลิเคชันอื่น ๆ จึงสามารถป้องกันไม่ให้ทำงานโดยไม่ตั้งใจได้

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