PowerShell là một công cụ mạnh mẽ trong hệ sinh thái Windows, nhưng nếu không được kiểm soát đúng cách, nó có thể trở thành cửa ngõ cho các tập lệnh độc hại. Việc hiểu và thực hiện cách cấu hình powershell policy đúng cách là kỹ năng sống còn đối với quản trị viên hệ thống. Bài viết này sẽ cung cấp cho bạn lộ trình toàn diện từ khái niệm cơ bản cho đến các kỹ thuật triển khai nâng cao trên môi trường doanh nghiệp.
PowerShell Execution Policy là gì và tại sao cần cấu hình?

Execution Policy là một cơ chế bảo mật của PowerShell, giúp kiểm soát loại tập lệnh nào được phép chạy trên hệ thống. Nó không phải là tường lửa hay phần mềm diệt virus, mà là một lớp kiểm soát hành vi chạy script. Khi bạn thực hiện cách cấu hình powershell policy, bạn đang quyết định mức độ tin cậy dành cho các file.ps1,.psm1 hay các module nhập từ bên ngoài.
Trên thực tế, nhiều cuộc tấn công mạng khai thác PowerShell làm vector xâm nhập vì nó có sẵn trên mọi máy Windows. Bằng cách thiết lập policy phù hợp, bạn ngăn chặn việc thực thi mã không ký số, hạn chế rủi ro từ các script phishing hoặc malware.
Phân loại các Execution Policy có sẵn trong PowerShell

Trước khi đi vào cách cấu hình powershell policy, bạn cần nắm vững sáu chế độ chính. Mỗi chế độ đều có tác động khác nhau đến bảo mật và năng suất làm việc.
| Tên Policy | Mô tả ngắn | Phạm vi thực thi |
|---|---|---|
| Restricted | Không cho phép chạy bất kỳ script nào. Chỉ chạy được lệnh tương tác. | Cao nhất |
| AllSigned | Chỉ chạy script được ký bởi publisher đáng tin cậy. | Cao |
| RemoteSigned | Script tải từ Internet phải được ký, script local được phép. | Trung bình |
| Unrestricted | Tất cả script đều chạy, nhưng cảnh báo script từ Internet. | Thấp |
| Bypass | Không chặn, không cảnh báo. Mọi script đều chạy. | Không có |
| Undefined | Chưa thiết lập. Sử dụng policy mặc định của scope cha. | Tuỳ theo scope |
Các scope (phạm vi) của Execution Policy
Khi bạn thực hiện cách cấu hình powershell policy,
Có, bằng cách sử dụng tham số -ExecutionPolicy khi gọi PowerShell. Ví dụ: powershell -ExecutionPolicy Unrestricted -File “D:script.ps1”. Lưu ý: đây là cách bypass chứ không phải thiết lập cố định.
Sự khác nhau giữa RemoteSigned và AllSigned là gì?
RemoteSigned chỉ yêu cầu chữ ký số đối với script tải từ Internet (vùng Zone 3). Script nội bộ (tạo trên máy) không cần ký. AllSigned yêu cầu tất cả script đều phải được ký, kể cả script local, điều này thường gây bất tiện cho dev.
Group Policy có ghi đè được Execution Policy cá nhân không?
Có, MachinePolicy và UserPolicy từ Group Policy có mức ưu tiên cao hơn CurrentUser và LocalMachine. Nếu đã cấu hình qua GPO, các thay đổi cục bộ sẽ bị vô hiệu hoá.
Làm thế nào để reset Execution Policy về mặc định?
Chạy lệnh: Set-ExecutionPolicy Undefined -Scope All. Sau đó kiểm tra lại bằng Get-ExecutionPolicy để xem giá trị mặc định từ Group Policy hoặc registry gốc.
Kết luận

Cách cấu hình powershell policy không chỉ là một thao tác kỹ thuật đơn giản mà còn là một quyết định chiến lược về bảo mật trong hệ thống Windows. Từ việc sử dụng Set-ExecutionPolicy cho máy cá nhân đến triển khai GPO cho toàn bộ doanh nghiệp, mỗi phương pháp đều có ưu nhược điểm riêng. Hãy luôn áp dụng nguyên tắc “ít đặc quyền nhất” và kết hợp Execution Policy với các lớp bảo vệ khác như AppLocker, Constrained Language Mode và giám sát log. Khi bạn nắm vững cả lý thuyết lẫn thực hành, PowerShell sẽ trở thành công cụ lợi hại trong tay bạn chứ không phải điểm yếu bảo mật.







