Мен иштеген уюмда алыстан иштөөгө принципиалдуу түрдө тыюу салынган. болгон. Өткөн жумага чейин. Эми тез арада чечимди ишке ашырууга туура келди. Бизнестен - процесстерди жаңы иш форматына ыңгайлаштыруу, бизден - PIN коддору жана токендери бар PKI, VPN, деталдуу каттоо жана башкалар.
Башка нерселердин арасында мен Remote Desktop Infrastructure aka Terminal Services орнотуп жаткам. Бизде ар кандай маалымат борборлорунда бир нече RDS жайылтуулары бар. Максаттардын бири - тиешелүү IT бөлүмдөрүндөгү кесиптештерге колдонуучу сессияларына интерактивдүү туташуу мүмкүнчүлүгүн берүү. Белгилүү болгондой, бул үчүн стандарттуу RDS Shadow механизми бар жана аны өткөрүп берүүнүн эң оңой жолу - RDS серверлеринде жергиликтүү администратордук укуктарды берүү.
Мен кесиптештеримди сыйлайм жана баалайм, бирок административдик укуктарды берүүгө келгенде мен абдан ач көздүк кылам. 🙂 Мени менен макул болгондор үчүн, сураныч, кесип.
Макул, милдет түшүнүктүү, эми ишке киришели.
кадам 1
Active Directoryде коопсуздук тобун түзөлү RDP_Operators жана ага биз укуктарды өткөрүп берүүнү каалаган колдонуучулардын аккаунттарын киргизиңиз:
Эгер сизде бир нече AD сайттары болсо, кийинки кадамга өтүүдөн мурун ал бардык домен контроллерлоруна көчүрүлгөнгө чейин күтүшүңүз керек болот. Бул, адатта, 15 мүнөттөн ашык эмес талап кылынат.
кадам 2
Келгиле, топко RDSH серверлеринин ар биринде терминалдык сеанстарды башкаруу укугун берели:
Set-RDSPermissions.ps1
$Group = "RDP_Operators"
$Servers = @(
"RDSHost01",
"RDSHost02",
"RDSHost03"
)
ForEach ($Server in $Servers) {
#Делегируем право на теневые сессии
$WMIHandles = Get-WmiObject `
-Class "Win32_TSPermissionsSetting" `
-Namespace "rootCIMV2terminalservices" `
-ComputerName $Server `
-Authentication PacketPrivacy `
-Impersonation Impersonate
ForEach($WMIHandle in $WMIHandles)
{
If ($WMIHandle.TerminalName -eq "RDP-Tcp")
{
$retVal = $WMIHandle.AddAccount($Group, 2)
$opstatus = "успешно"
If ($retVal.ReturnValue -ne 0) {
$opstatus = "ошибка"
}
Write-Host ("Делегирование прав на теневое подключение группе " +
$Group + " на сервере " + $Server + ": " + $opstatus + "`r`n")
}
}
}
кадам 3
Топту жергиликтүү топко кошуңуз Remote Desktop Users RDSH серверлеринин ар биринде. Эгерде сиздин серверлер сеанс жыйнактарына бириктирилген болсо, анда биз муну коллекция деңгээлинде жасайбыз:
Биз колдоно турган жалгыз серверлер үчүн топ саясаты, анын серверлерде колдонулушун күтүү. Күтүүгө өтө жалкоолор жакшы эски gpupdate аркылуу процессти тездете алышат борбордук.
кадам 4
Келгиле, "менеджерлер" үчүн төмөнкү PS сценарийин даярдайлы:
PS скриптин иштөөгө ыңгайлуу болушу үчүн, биз ага PS скрипти менен бирдей аталыштагы cmd файлы түрүндө кабык түзөбүз:
RDSManagement.cmd
@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*
Биз эки файлды тең "менеджерлерге" жеткиликтүү болгон папкага салып, кайра кирүүнү суранабыз. Эми, cmd файлын иштетүү менен, алар RDS Shadow режиминде башка колдонуучулардын сеанстарына туташып, аларды чыгууга мажбурлай алышат (бул колдонуучу “илинген” сеансты өз алдынча токтото албаган учурда пайдалуу болушу мүмкүн).
Бул мындай көрүнөт:
"менеджер" үчүн
Колдонуучу үчүн
Бир нече акыркы комментарийлер
Нюанс 1. Эгерде биз башкарууга аракет кылып жаткан колдонуучу сеансы Set-RDSPermissions.ps1 скрипти серверде аткарылганга чейин ишке киргизилген болсо, анда “менеджер” кирүү катасын алат. Бул жерде чечим айкын: башкарылган колдонуучу киргенге чейин күтө туруңуз.
Нюанс 2. RDP Shadow менен бир нече күн иштегенден кийин, биз кызыктуу мүчүлүштүктөрдү же өзгөчөлүктөрдү байкадык: көмүскө сессия аяктагандан кийин, лотоктогу тил тилкеси туташып жаткан колдонуучу үчүн жок болот жана аны кайра алуу үчүн колдонуучу кайра иштетүү керек. -логин. Көрсө, биз жалгыз эмеспиз: убакыт, два, үч.
Баары болду. Сизге жана сиздин серверлериңизге чың ден соолук каалайм. Адаттагыдай эле, комментарийлерде сиздин пикириңизди чыдамсыздык менен күтөм жана төмөндөгү кыска сурамжылоого катышууңузду суранам.