Organizācijā, kurā strādāju, attālinātais darbs principā ir aizliegts. Bija. Līdz pagājušajai nedēļai. Tagad mums bija steidzami jāīsteno risinājums. No biznesa - procesu pielāgošana jaunam darba formātam, no mums - PKI ar PIN kodiem un marķieriem, VPN, detalizēta reģistrēšana un daudz kas cits.
Cita starpā es iestatīju attālās darbvirsmas infrastruktūru jeb termināļa pakalpojumus. Mums ir vairākas RDS izvietošanas iespējas dažādos datu centros. Viens no mērķiem bija ļaut kolēģiem no saistītajām IT nodaļām interaktīvi pieslēgties lietotāju sesijām. Kā zināms, šim nolūkam ir standarta RDS Shadow mehānisms, un vienkāršākais veids, kā to deleģēt, ir piešķirt vietējā administratora tiesības RDS serveros.
Es cienu un cienu savus kolēģus, bet esmu ļoti mantkārīgs, ja runa ir par administratora tiesību izsniegšanu. 🙂 Tiem, kas man piekrīt, lūdzu, sekojiet griezumam.
Nu, uzdevums ir skaidrs, tagad ķersimies pie lietas.
Solis 1
Izveidosim drošības grupu programmā Active Directory RDP_Operatori un iekļaujiet tajā to lietotāju kontus, kuriem vēlamies deleģēt tiesības:
Ja jums ir vairākas AD vietnes, pirms pāriet pie nākamās darbības, jums būs jāgaida, līdz tā tiek replicēta visos domēna kontrolleros. Tas parasti aizņem ne vairāk kā 15 minūtes.
Solis 2
Piešķirsim grupai tiesības pārvaldīt termināļa sesijas katrā no RDSH serveriem:
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")
}
}
}
Solis 3
Pievienojiet grupu vietējai grupai Attālās darbvirsmas lietotāji katrā no RDSH serveriem. Ja jūsu serveri ir apvienoti sesiju kolekcijās, mēs to darām kolekcijas līmenī:
Mēs izmantojam atsevišķiem serveriem grupas politika, gaidot, kad tas tiks lietots serveros. Tie, kuriem ir pārāk slinks gaidīt, var paātrināt procesu, vēlams, izmantojot veco labo gpupdate centralizēti.
Lai PS skripts būtu ērti palaist, mēs izveidosim tam čaulu cmd faila formā ar tādu pašu nosaukumu kā PS skriptam:
RDSManagement.cmd
@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*
Mēs ievietojam abus failus mapē, kas būs pieejama “pārvaldniekiem”, un lūdzam viņiem atkārtoti pieteikties. Tagad, palaižot cmd failu, viņi varēs izveidot savienojumu ar citu lietotāju sesijām RDS Shadow režīmā un piespiest viņus atteikties (tas var būt noderīgi, ja lietotājs nevar patstāvīgi pārtraukt “piekārtu” sesiju).
Tas izskatās apmēram šādi:
Par "vadītāju"
Lietotājam
Daži nobeiguma komentāri
1. nianse. Ja lietotāja sesija, kuru mēs cenšamies iegūt kontroli, tika palaista pirms Set-RDSPermissions.ps1 skripta izpildes serverī, “pārvaldnieks” saņems piekļuves kļūdu. Risinājums šeit ir acīmredzams: pagaidiet, līdz pārvaldītais lietotājs piesakās.
2. nianse. Pēc vairāku dienu darba ar RDP Shadow mēs pamanījām interesantu kļūdu vai funkciju: pēc ēnu sesijas beigām valodas josla teknē pazūd lietotājam, ar kuru tiek izveidots savienojums, un, lai to atgūtu, lietotājam ir nepieciešams atkārtoti -Pieslēgties. Kā izrādās, mēs neesam vieni: laiks, два, trīs.
Tas ir viss. Es novēlu jums un jūsu serveriem labu veselību. Kā vienmēr, gaidu jūsu atsauksmes komentāros un aicinu aizpildīt īso aptauju.