Quản trị vừa đủ (JEA ) tính năng có sẵn bắt đầu từ PowerShell phiên bản 5.0 và cho phép bạn ủy quyền đặc quyền quản trị cho bất kỳ thứ gì bạn có thể quản lý bằng PowerShell. Mục đích chính của PowerShell JEA là giới hạn các đặc quyền. JEA cho phép bạn cấp quyền cho người dùng không phải quản trị viên để thực hiện các tác vụ quản trị cụ thể mà không cấp cho họ quyền quản trị viên dịch vụ hoặc máy chủ (AD, Exchange, SharePoint, v.v.). Sử dụng JEA, bạn có thể đặt người dùng nào có thể chạy các lệnh ghép ngắn, chức năng hoặc tập lệnh PowerShell cụ thể với đặc quyền quản trị và ghi nhật ký tất cả các hành động (tương tự như lịch sử lệnh PowerShell).
Cách triển khai PowerShell Just Enough Administration?
Quản trị viên tạo tệp cấu hình phiên PowerShell trên máy chủ chứa các lệnh mà người dùng có thể chạy. Dựa trên các tệp, một điểm cuối JEA được tạo ra để người dùng có thể kết nối và thực thi bất kỳ lệnh hoặc chương trình nào có sẵn cho anh ta.
Ở đây, chúng tôi sẽ trình bày một ví dụ về cách cấp quyền cho người dùng không phải quản trị viên để khởi động lại bộ điều khiển miền và khởi động lại các dịch vụ DNS và ADDS trên đó.
Trong trường hợp này, bạn không cấp quyền truy cập RDP vào bộ điều khiển miền cho người dùng, ủy quyền cho họ đặc quyền quản trị trong AD, chỉ định quyền trên các dịch vụ Windows hoặc khởi động lại máy chủ theo hướng dẫn sau các liên kết. Tất cả các hạn chế cần thiết được đặt trong cấu hình của Quản trị Vừa đủ.Trước hết, hãy tạo tệp cấu hình của phiên PowerShell ( * .pssc ). Để thực hiện, hãy chạy lệnh này trên bộ điều khiển miền của bạn:
New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
Mở tệp PSSC bằng Notepad.
Tệp PSSC đặt những người có thể kết nối với điểm cuối JEA này và theo tài khoản nào các lệnh trong phiên JEA sẽ chạy.
Sửa đổi các giá trị sau:
- SessionType từ Mặc định thành RestrictedRemoteServer . Chế độ này cho phép sử dụng các lệnh ghép ngắn PowerShell sau:Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default hoặc Select-Objectl
- Chỉ định một thư mục (tạo nó) trong TranscriptDirectory tham số. Tại đây, bạn sẽ ghi lại tất cả các hành động của người dùng JEA:
TranscriptDirectory = C:\PS\JEA_logs
- RunAsVirtualAccount tùy chọn cho phép chạy các lệnh trong tài khoản quản trị viên ảo (thành viên của nhóm Quản trị viên cục bộ hoặc Quản trị viên miền):
RunAsVirtualAccount = $true
GroupManagedServiceAccount = 'woshub\gMSAJEAUser'
Trong chỉ thị RoleDefinitions, chỉ định nhóm bảo mật AD được phép kết nối với phiên PowerShell và tên của vai trò JEA (nó phải khớp với tên tệp PSRC mà chúng ta sẽ tạo sau này).
Ví dụ:
RoleDefinitions = @{‘woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}
Lưu tệp cấu hình phiên.
Trước khi tiếp tục, hãy đảm bảo rằng không có lỗi trong tệp cấu hình:
Test-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
Tạo một thư mục mới để giữ tệp cấu hình JEA, ví dụ:
New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory
Sau đó, tạo tệp PSRC cấu hình với mô tả vai trò (sử dụng tên tệp từ cấu hình PSSC ở trên).
New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'
Tệp PSRC chỉ định những gì được phép làm trong phiên JEA hiện tại. Trong VisibleCmdlets chỉ thị, bạn có thể chỉ định các lệnh ghép ngắn (và các tham số hợp lệ của chúng) được phép sử dụng cho một nhóm người dùng nhất định.
Trong VisibleExternalCommands , bạn có thể chỉ định các lệnh bên ngoài và các tệp EXE được phép chạy.
Ví dụ:cấu hình sau cho phép HelpDesk người dùng khởi động lại bộ điều khiển miền bằng lệnh tắt máy hoặc Restart-Computer
lệnh ghép ngắn, cũng như khởi động lại DNSServer và Dịch vụ miền Active Directory bằng Restart-Service
lệnh ghép ngắn.
VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }} VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'
Lưu tệp PSRC của bạn.
Sau đó, đăng ký cấu hình PSSession mới cho tệp PSSC của bạn:
Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
và khởi động lại WinRM:
Restart-Service WinRM
Bạn có thể liệt kê các điểm cuối JEA có sẵn:
Get-PSSessionConfiguration|ft name
Hãy xem cách cấu hình Quản trị Vừa Đủ (JEA) mới của chúng tôi hoạt động như thế nào. Bạn có thể kết nối với điểm cuối JEA đã tạo trong tài khoản người dùng từ nhóm bảo mật được chỉ định trong tệp cấu hình. Kết nối với bộ điều khiển miền bằng PowerShell Remoting (bạn phải chỉ định tên điểm cuối JEA):
Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk
Xem danh sách các lệnh ghép ngắn có sẵn trong phiên PowerShell của bạn:
Get-Command
Như bạn có thể thấy, một số lệnh nhỏ có sẵn, bao gồm Khởi động lại-Dịch vụ và Khởi động lại-Máy tính. Người dùng chỉ có thể làm những gì anh ta được phép làm.
Cố gắng khởi động lại dịch vụ DNS:
Restart-Computer dns
Dịch vụ đã được khởi động lại thành công (lệnh được chạy với tư cách người dùng đặc quyền với quyền quản trị miền).
Nếu bạn cố gắng khởi động lại bất kỳ dịch vụ nào khác không được mô tả trong tệp cấu hình JEA, thông báo lỗi sau sẽ xuất hiện:
Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException
Lịch sử của tất cả các hành động của người dùng trong phiên JEA PowerShell được ghi vào các tệp trong C:\ PS \ JEA_logs.
Vì vậy, JEA cho phép bạn cấp cho người dùng quyền truy cập một cách chi tiết để chạy các lệnh ghép ngắn, tập lệnh hoặc chương trình PowerShell cụ thể với tư cách là quản trị viên.