AllInfo

Het delegeren van PowerShell Scripts met Net Genoeg Administration (JEA)

Heb je ooit wilde om te delegeren van een taak, maar vond dat de machtigingen die nodig kan zijn te riskant om met de hand uit? Of, heb je wilde vergrendelen dingen als groep maken in het AD af te dwingen naamgeving van de groepen?

JEA kan u helpen met slechts dat-en veel meer. In dit artikel gaan we wandelen door hoe je kunt delegeren uw reeds gemaakte scripts met PowerShell 5.1.

Wat Is JEA?

JEA is een PowerShell-oplossing van Microsoft waarmee u kunt voorkomen dat gebruikers (en beheerders) slechts in staat tot het uitvoeren van bepaalde taken in een specifieke PowerShell-sessie, zelfs als ze moeten lokale admin op de genoemde bron. Bovendien kunt u zeer specifiek. Alleen de opdrachten die u opgeeft kan worden uitgevoerd, kunt u alleen bepaalde parameter waarden en parameter waarden die overeenkomen met een specifiek patroon.

U kunt bijvoorbeeld het inschakelen van Servicedesk tot alleen het opnieuw opstarten van een specifieke service met Opnieuw opstarten, of alleen groepen toevoegen om een AD op basis van een specifieke naamgeving. U kunt dit alles doen zonder dat ze expliciete machtigingen op een server of in een ADVERTENTIE. Het is een tool die kan bespaart u een enorme hoeveelheid tijd en veilig uw omgeving. We gaan aan de slag door het wikkelen van ons script in een functie.

Stap 1: het Creëren van een Functie van Uw Script

De eerste stap als je het nog niet gedaan is om een functie uit van je script. Dit is vrij eenvoudig, ervan uitgaande dat u al uw parameters instellen. Hieronder heb ik wikkelde mijn eenvoudige script “Nieuw-FolderAndShare” naar een functie:

Functie Nieuw-FolderAndShare {
[cmdletbinding()]
param(
# Naam van het deel
[parameter(Verplicht)]
[ValidatePattern(“^(Project d{5}|Team (Finance|HR|HET|Multi) [a-z ]+)$”)]
[string]$Sharenaam,

# Directory van de nieuwe map lokaal
[parameter(Verplicht)]
[ValidatePattern(“^(D|E|F):\Shares\$”)]
[string]$Path,

# Die volledige toegang hebben om
[parameter(Verplicht)]
[ValidateSet(“^CONTOSO\”)]
[string]$FullAccess

)

$FullPath = Join-Pad $Path $Sharenaam
Nieuwe-Item -ItemType Directory -Pad $FullPath
Nieuw-SmbShare -Pad $FullPath -Naam $Sharenaam -FullAccess $FullAccess

}

Het valideren van de parameters met ValidatePattern in de functie, maar als dit een deel van een module die u zou kunnen dat in de RoleCapabilities bestand in plaats daarvan met VisibleFunctions.

Het maken van het script een functie geeft ons meer controle over welke parameters zijn toegestaan in JEA, en maakt het makkelijker om te exporteren.

Stap 2: Het Creëren Van RoleCapabilities

De RoleCapabilities bestand bepaalt wat een bepaalde rol (gedefinieerd in de volgende stap) is het toegestaan om te doen. Dit geldt ook voor wat commando ‘ s die ze mogen uitvoeren, welke parameters ze kunnen gebruiken, en welke modules te importeren.

Terwijl RoleCapabilities kunnen handmatig worden gemaakt, is het aanbevolen gebruik te maken van de Nieuwe-PSRoleCapabilityFile opdracht gebouwd in PowerShell 5.1. Het is ook in dit bestand dat je de belasting in de functie die we gemaakt in de vorige stap.

Het volgende script maakt een bestand met de naam FileShareCreator.psrc en voegt de Nieuwe-FolderAndShare functie (die moet worden geladen in de huidige sessie):

# VOER DEZE IN DE SERVER DIE DE JEA EINDPUNT

$RoleCapabilitiesParam = @{
# Definieer een functie die beschikbaar is in de cmdlet
FunctionDefinitions = @{
Naam = ‘Nieuw-FolderAndShare’
# Importeer de code van de functie
ScriptBlock = [ScriptBlock]::Create(
(Get-Commando New-FolderAndShare).Definitie
)
}

# Modules gebruikt in de functie moet worden expliciet geïmporteerd
ModulesToImport = @(
“SmbShare”,
“Microsoft.PowerShell.Management”
)
Path = “.FileShareCreator.psrc”
}

Nieuw-PSRoleCapabilityFile @RoleCapabilitiesParam

Gebruik maken van de Get-Opdracht voor het ophalen van de functie in de FunctionDefinitions-parameter. U kunt ook de raw-script met parameters.

U ook opgeven hoe u toegestaan gebruik te maken van de functie in de VisibleCmdlet parameter. U kunt dit doen door het specificeren van de naam van de functie en de parameters samen met een reguliere expressie.

Met dit, kunt u een uiterst nauwkeurige controle van wat een gebruiker wel en niet kan doen. Maar er is een addertje onder het gras om het maken van dit werk—je nodig hebt om toe te voegen het psrc-bestand in een module.

Stap 3: het Maken van een Module voor de RoleCapability Bestand

Het is tijd om een module te maken die u in kunt zetten in uw rol van mogelijkheden in. JEA vindt de RoleCapabilities door het psrc bestanden naam zonder de extensie, dus vermijd duplicaten als je gaat om het creëren van meer mogelijkheden rol later op.

Het volgende script is een aangepaste versie van wat je kunt vinden in de Officiële JEA documentatie. Het creëert een nieuwe module in de module-map is, maakt u de benodigde bestanden en mappen die nodig zijn, en kopieert het psrc bestand dat u hebt gemaakt in Stap 2 in het:

# VOER DEZE IN DE SERVER DIE DE JEA EINDPUNT

# Creëer een map voor de module
$modulePath = Join-Pad $env:ProgramFiles “WindowsPowerShellModulesFileShareJEA”
Nieuwe-Item -ItemType Directory -Pad $modulePath

# Maak een leeg script module en module manifest.
# Minstens één bestand in de module-map moet hebben dezelfde naam als de map zelf.
Nieuwe-Item -ItemType Bestand -Pad (Join-Pad $modulePath “FileShareJEA.psm1”)
Nieuw-ModuleManifest -Pad (Join-Pad $modulePath “FileShareJEA.psd1”) -RootModule “FileShareJEA.psm1”

# Creëer de RoleCapabilities map en kopieer in de PSRC bestand
$rcFolder = Join-Pad $modulePath “RoleCapabilities”
Nieuwe-Item -ItemType Directory $rcFolder
Kopie-Item -Pad .FileShareCreator.psrc -Bestemming $rcFolder

Je hebt nu een rol vermogen en een functie, zodat u het kunt gebruiken in JEA. Wat is links nu doen is het creëren van een PowerShell-Sessie Configuratie in kaart advertentiegroepen om de rollen die u zojuist hebt gemaakt.

Stap 4: Bepalen Van Rollen

In deze stap, je gaat het maken van een PowerShell-Sessie Configuratie bestand die bepaalt welke functies zullen worden toegewezen welke Mogelijkheden (van de .psrc-bestand dat u in Stap 2 hebt gemaakt).

Je gaat het maken van de AD groep en transcript directory hier goed.

# Creëer een map voor het opslaan van logs
Nieuwe-Item -ItemType Directory -Pad ‘C:ProgramDataJEAConfigurationTranscripts’ -Force

# Advertentiegroep maken (u nodig zou kunnen hebben om het te doen op een andere server)
Nieuw-ADGroup -Pad “OU=Groups,DC=contoso,DC=com” -Naam ‘JEA_FILESHARE_CREATOR’ -GroupScope DomainLocal

# VOER DEZE IN DE SERVER DIE DE JEA EINDPUNT

# Parameters definiëren voor Nieuwe-PSSessionConfigurationFile
$PSSessionConfigurationParams = @{
# Voer een tijdelijk account
RunAsVirtualAccount = $True

# Dat is een lokale beheerder
RunAsVirtualAccountGroups = @(
“beheerders”
)

# Pad waar de logbestanden van wat gebruikers aan het doen zijn
TranscriptDirectory = ‘C:ProgramDataJEAConfigurationTranscripts’

# Kaart-een active directory-groep om de capaciteit die wij gemaakt
RoleDefinitions = @{
‘CONTOSOJEA_FILESHARE_CREATOR’ = @{
RoleCapabilities = ‘FileShareCreator’
}
}

# Pad van het bestand PSSC
Path = “.SessionConfiguration.pssc”

}
# Creëer het PSSC bestand
Nieuw-PSSessionConfigurationFile @PSSessionConfigurationParams

Stap 5: het Maken van een PowerShell-Sessie

In deze stap zult u lezen in de SessionConfiguration.pssc bestand dat u hebt gemaakt in de vorige stap. Dit kunnen de leden van JEA_FILESHARE_CREATOR om verbinding te maken via PowerShell naar de server:

PS51> Register-PSSessionConfiguration -Pad .SessionConfiguration.pssc -Naam ‘JEAFileShare’ -Force

PSPath : Microsoft.WSMan.ManagementWSMan::localhostPluginJEAFileShare
PSParentPath : Microsoft.WSMan.ManagementWSMan::localhostPlugin
PSChildName : JEAFileShare
PSDrive : WSMan
PSProvider : Microsoft.WSMan.ManagementWSMan
PSIsContainer : True
Toetsen : {Naam=JEAFileShare}
Naam : JEAFileShare
TypeNameOfElement : Container
Type : Container

Je bent klaar! Een gebruiker toevoegen aan JEA_FILESHARE_CREATOR die geen toegang hebben tot de server met de normale middelen en probeer het uit als die gebruiker door te typen:

PS51> Enter-PSSession -Computernaam fs02.contoso.com -ConfigurationName JEAFileShare
PS51> Nieuw-FolderAndShare -Sharenaam Project “12345” -Pad D:Share

U kunt nu de opdracht uitvoeren als een tijdelijke lokale beheerder dat is vergrendeld en alleen ingeschakeld voor het uitvoeren van een aantal standaard commando ‘ s (zichtbaar met Get-Opdracht tijdens het in-sessie) en de Nieuw-FolderAndShare functie toegevoegd in de Rol van Mogelijkheden bestand.

Als u wilt zien van de account dat is aangemaakt tijdelijk, voeg VisibleExternalCommands @(‘c:windowssystem32whoami.exe’) om uw RoleCapabilities parameters in Stap 2. U kan uitvoeren whoami en de lokale beheerder naam:

PS51 >whoami
winrm virtual userswinrm va_1_contoso_joe_helpdesk

Samenvatting

Met behulp van JEA kan een geweldige en eenvoudige manier voor het delegeren van taken en het beveiligen van uw omgeving. Dit omvat niet alleen uw eigen scripts, maar de ingebouwde modules en de geïnstalleerde modules. Hoewel JEA kan een grote toegevoegde waarde, wees voorzichtig! Kunt u een groot risico voor uw omgeving als u het overdragen van de verkeerde commando ‘ s opgeven of de verkeerde parameters voor onverwachte individuen.

Wilt u meer weten?

Exit mobile version