Rolmogelijkheden JEAJEA Role Capabilities

Is van toepassing op: Windows PowerShell 5.0Applies to: Windows PowerShell 5.0

Bij het maken van een JEA-eindpunt, moet u definiëren een of meer "rolmogelijkheden" die worden beschreven wat iemand in een JEA-sessie kunt doen.When creating a JEA endpoint, you will need to define one or more "role capabilities" which describe what someone can do in a JEA session. De mogelijkheid van een rol is een PowerShell-gegevensbestand met de extensie .psrc met een lijst met alle cmdlets, functies, -providers en externe programma's die beschikbaar zijn voor het koppelen van gebruikers moeten worden gemaakt.A role capability is a PowerShell data file with the .psrc extension that lists all the cmdlets, functions, providers, and external programs that should be made available to connecting users.

In dit onderwerp wordt beschreven hoe u een PowerShell-rol mogelijkheid-bestand voor uw gebruikers JEA maken.This topic describes how to create a PowerShell role capability file for your JEA users.

Bepalen welke opdrachten om toe te staanDetermine which commands to allow

De eerste stap bij het maken van een bestand van rol mogelijkheid is om te overwegen wat de gebruikers die de rol is toegewezen toegang nodig tot.The first step when creating a role capability file is to consider what the users who are assigned the role will need access to. Even kunnen duren voordat dit proces voor het verzamelen vereisten, maar het is een belangrijk proces.This requirements gathering process can take a while, but it is a very important process. Gebruikers toegang geven tot te weinig cmdlets en -functies kunt voorkomen dat ze aan hun werk gedaan te krijgen.Giving users access to too few cmdlets and functions can prevent them from getting their job done. Toegang tot te veel cmdlets en -functies kan leiden tot meer dan u bedoeld met hun impliciete beheerdersbevoegdheden verzwakken van uw beveiliging virtualisatieproducten doen gebruikers.Allowing access to too many cmdlets and functions can lead to users doing more than you intended with their implicit admin privileges, weakening your security stance.

Hoe u gaat over dit proces is afhankelijk van uw organisatie en doelstellingen, maar de volgende tips kunnen helpen Zorg ervoor dat u op de juiste weg bent.How you go about this process will depend on your organization and goals, however the following tips can help ensure you're on the right path.

  1. Identificeer de gebruikers opdrachten wordt gebruikt om hun werk te doen.Identify the commands users are using to get their jobs done. Hierbij kan het controleren van IT-personeel, automatiseringsscripts controleren of Transcripten van PowerShell-sessie of de logboeken analyseren.This may involve surveying IT staff, checking automation scripts, or analyzing PowerShell session transcripts or logs.
  2. Update gebruik van opdrachtregelprogramma's voor PowerShell-equivalent, waar mogelijk, voor de beste controle- en JEA aanpassing ervaring.Update use of command line tools to PowerShell equivalents, where possible, for the best auditing and JEA customization experience. Externe programma's kunnen niet worden beperkt als granulair als systeemeigen PowerShell-cmdlets en functies in JEA.External programs cannot be constrained as granularly as native PowerShell cmdlets and functions in JEA.
  3. Beperken het bereik van de cmdlets als nodig is om alleen bepaalde parameters of parameterwaarden toestaan.Restrict the scope of the cmdlets if necessary to only allow specific parameters or parameter values. Dit is vooral belangrijk als gebruikers moeten alleen deel uitmaken van een systeem te beheren.This is particularly important if users should only be able to manage part of a system.
  4. Maak aangepaste functies om complexe opdrachten of opdrachten die moeilijk te beperken in JEA te vervangen.Create custom functions to replace complex commands or commands which are difficult to constrain in JEA. Een eenvoudige functie die loopt van een complexe opdracht of toepassing van extra validatielogica kan bieden extra controle voor het gemak van beheerders en eindgebruikers.A simple function that wraps a complex command or applies additional validation logic can offer additional control for admins and end-user simplicity.
  5. Test binnen het bereik de lijst met toegestane opdrachten door uw gebruikers en/of de automation-services en pas deze zo nodig.Test the scoped list of allowable commands with your users and/or automation services and adjust as necessary.

Het is belangrijk te onthouden dat opdrachten in een JEA-sessie vaak uitgevoerd met de beheerder (of anderszins opdrachtprompt met verhoogde bevoegdheid) bevoegdheden zijn.It is important to remember that commands in a JEA session are often run with admin (or otherwise elevated) privileges. Zorgvuldige selectie van de beschikbare opdrachten is het belangrijk om te controleren of de JEA-eindpunt staat niet toe dat de gebruiker die de verbinding voor het verhogen van hun machtigingen.Careful selection of available commands is important to ensure the JEA endpoint does not allow the connecting user to elevate their permissions. Hieronder volgen enkele voorbeelden van opdrachten die kunnen worden gebruikt opzettelijk als toegestaan in een onbeperkte status.Below are some examples of commands that can be used maliciously if allowed in an unconstrained state. Houd er rekening mee dat dit geen uitputtende lijst is en mag alleen worden gebruikt als een ook beginpunt.Note that this is not an exhaustive list and should only be used as a cautionary starting point.

Voorbeelden van mogelijk schadelijke opdrachtenExamples of potentially dangerous commands

Risico 'sRisk VoorbeeldExample Gerelateerde opdrachtenRelated commands
Verlenen van de gebruiker die verbinding maakt beheerdersbevoegdheden voor het overslaan van JEAGranting the connecting user admin privileges to bypass JEA Add-LocalGroupMember -Member 'CONTOSO\jdoe' -Group 'Administrators' Add-ADGroupMember, Add-LocalGroupMember, net.exe, dsadd.exeAdd-ADGroupMember, Add-LocalGroupMember, net.exe, dsadd.exe
Uitvoeren van willekeurige code, zoals malware, aanvallen of aangepaste scripts te omzeilen: beveiligingRunning arbitrary code, such as malware, exploits, or custom scripts to bypass protections Start-Process -FilePath '\\san\share\malware.exe' Start-Process, New-Service, Invoke-Item, Invoke-WmiMethod, Invoke-CimMethod, Invoke-Expression, Invoke-Command, New-ScheduledTask, Register-ScheduledJobStart-Process, New-Service, Invoke-Item, Invoke-WmiMethod, Invoke-CimMethod, Invoke-Expression, Invoke-Command, New-ScheduledTask, Register-ScheduledJob

Maak een bestand van de mogelijkheid rolCreate a role capability file

Kunt u een nieuw bestand rol mogelijkheid PowerShell met de New-PSRoleCapabilityFile cmdlet.You can create a new PowerShell role capability file with the New-PSRoleCapabilityFile cmdlet.

New-PSRoleCapabilityFile -Path .\MyFirstJEARole.psrc

Het resulterende bestand van de rol-mogelijkheid kan worden geopend in een teksteditor en gewijzigd, zodat de gewenste opdrachten voor de rol.The resulting role capability file can be opened in a text editor and modified to allow the desired commands for the role. De PowerShell-help-documentatie bevat enkele voorbeelden van hoe u het bestand kunt configureren.The PowerShell help documentation contains several examples of how you can configure the file.

PowerShell-cmdlets en-functiesAllowing PowerShell cmdlets and functions

Voor het autoriseren van gebruikers om uit te voeren PowerShell-cmdlets of functies toevoegen de naam van de cmdlet of functie in de velden VisbibleCmdlets of VisibleFunctions.To authorize users to run PowerShell cmdlets or functions, add the cmdlet or function name to the VisbibleCmdlets or VisibleFunctions fields. Als u niet zeker weet of een opdracht is een cmdlet of functie, kunt u uitvoeren Get-Command <name> en de eigenschap 'CommandType' in de uitvoer controleren.If you aren't sure whether a command is a cmdlet or function, you can run Get-Command <name> and check the "CommandType" property in the output.

VisibleCmdlets = 'Restart-Computer', 'Get-NetIPAddress'

Soms is het bereik van een specifieke cmdlet of de functie is te breed voor de behoeften van uw gebruikers.Sometimes the scope of a specific cmdlet or function is too broad for your users' needs. Een DNS-beheerder, bijvoorbeeld waarschijnlijk enige behoeften toegang om de DNS-service opnieuw te starten.A DNS admin, for example, probably only needs access to restart the DNS service. In een omgeving met meerdere tenants waarbij tenants toegang tot Self-servicebeheer-hulpprogramma's worden verleend, moet tenants beheren met hun eigen resources.In a multi-tenant environment where tenants are granted access to self-service management tools, tenants should be limited to managing with their own resources. Voor deze gevallen kunt u beperken welke parameters beschikbaar worden gesteld van de cmdlet of functie.For these cases, you can restrict which parameters are exposed from the cmdlet or function.


VisibleCmdlets = @{ Name = 'Restart-Computer'; Parameters = @{ Name = 'Name' }}

In de meer geavanceerde scenario's moet u mogelijk ook beperken welke waarden iemand kan leveren aan deze parameters.In more advanced scenarios, you may also need to restrict which values someone can supply to these parameters. Rolmogelijkheden kunnen u bij het definiëren van een set toegestane waarden of een reguliere-expressiepatroon die wordt geëvalueerd om te bepalen of een opgegeven invoer is toegestaan.Role capabilities let you define a set of allowed values or a regular expression pattern that is evaluated to determine if a given input is allowed.

VisibleCmdlets = @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'Dns', 'Spooler' }},
                 @{ Name = 'Start-Website'; Parameters = @{ Name = 'Name'; ValidatePattern = 'HR_*' }}

Notitie

De algemene PowerShell-parameters zijn altijd toegestaan, zelfs als u de beschikbare parameters beperken.The common PowerShell parameters are always allowed, even if you restrict the available parameters. U dient niet expliciet vermeld in het veld Parameters.You should not explicitly list them in the Parameters field.

De volgende tabel beschrijft de verschillende manieren waarop u kunt een zichtbaar cmdlet of functie.The table below describes the various ways you can customize a visible cmdlet or function. U kunt combineren en matchen een van de hieronder in de VisibleCmdlets veld.You can mix and match any of the below in the VisibleCmdlets field.

VoorbeeldExample Use-caseUse case
'My-Func' of @{ Name = 'My-Func' }'My-Func' or @{ Name = 'My-Func' } Kan de gebruiker om uit te voeren My-Func zonder beperkingen voor de parameters.Allows the user to run My-Func without any restrictions on the parameters.
'MyModule\My-Func' Kan de gebruiker om uit te voeren My-Func uit de module MyModule zonder beperkingen voor de parameters.Allows the user to run My-Func from the module MyModule without any restrictions on the parameters.
'My-*' Kan de gebruiker een cmdlet of de functie uitvoeren met de term My.Allows the user to run any cmdlet or function with the verb My.
'*-Func' Hiermee kan de gebruiker een cmdlet of de functie uitvoeren met het zelfstandig naamwoord Func.Allows the user to run any cmdlet or function with the noun Func.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'}, @{ Name = 'Param2' }} Kan de gebruiker om uit te voeren My-Func met de Param1 en/of Param2 parameters.Allows the user to run My-Func with the Param1 and/or Param2 parameters. Elke waarde kan worden opgegeven met de parameters.Any value can be supplied to the parameters.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'; ValidateSet = 'Value1', 'Value2' }} Kan de gebruiker om uit te voeren My-Func met de Param1 parameter.Allows the user to run My-Func with the Param1 parameter. Alleen "Value1" en 'Value2' kan worden opgegeven voor de parameter.Only "Value1" and "Value2" can be supplied to the parameter.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'; ValidatePattern = 'contoso.*' }} Kan de gebruiker om uit te voeren My-Func met de Param1 parameter.Allows the user to run My-Func with the Param1 parameter. Een willekeurige waarde beginnen met 'contoso' kan worden opgegeven voor de parameter.Any value starting with "contoso" can be supplied to the parameter.

Waarschuwing

Het verdient voor aanbevolen procedures voor beveiliging, geen jokertekens gebruiken bij het definiëren van zichtbaar cmdlets of functies.For best security practices, it is not recommended to use wildcards when defining visible cmdlets or functions. In plaats daarvan moet u elke vertrouwde opdracht om te controleren of er worden geen andere opdrachten die de dezelfde naamgevingsschema delen per ongeluk zijn gemachtigd expliciet vermelden.Instead, you should explicitly list each trusted command to ensure no other commands that share the same naming scheme are unintentionally authorized.

U kunt een ValidatePattern en ValidateSet toepassen op de dezelfde cmdlet of functie.You cannot apply both a ValidatePattern and ValidateSet to the same cmdlet or function.

Als u dit doet, is de ValidatePattern overschrijft de ValidateSet.If you do, the ValidatePattern will override the ValidateSet.

Bekijk voor meer informatie over ValidatePattern dit Hallo, Scripting Guy! boeken en de PowerShell reguliere expressies -referentie-inhoud.For more information about ValidatePattern, check out this Hey, Scripting Guy! post and the PowerShell Regular Expressions reference content.

Externe opdrachten en PowerShell-scripts toestaanAllowing external commands and PowerShell scripts

Als u wilt toestaan dat gebruikers uitvoerbare bestanden en PowerShell-scripts (.ps1) uitvoeren in een JEA-sessie, moet u het volledige pad toevoegen aan elk programma in het veld VisibleExternalCommands.To allow users to run executables and PowerShell scripts (.ps1) in a JEA session, you have to add the full path to each program in the VisibleExternalCommands field.

VisibleExternalCommands = 'C:\Windows\System32\whoami.exe', 'C:\Program Files\Contoso\Scripts\UpdateITSoftware.ps1'

Het wordt aanbevolen, waar mogelijk gebruik van PowerShell-cmdlet/functie equivalenten van elke externe uitvoerbare bestanden verleent u onbevoegde gebruikers nadat u hebt de controle over welke parameters met PowerShell-cmdlets/functies zijn toegestaan.It is advised, where possible, to use PowerShell cmdlet/function equivalents of any external executables you authorize since you have control over which parameters are allowed with PowerShell cmdlets/functions.

Veel uitvoerbare bestanden kunt u zowel de huidige status lezen en wijzig deze alleen door op te geven van de verschillende parameters.Many executables allow you to both read the current state and then change it just by providing different parameters.

Neem bijvoorbeeld de rol van een bestand van een serverbeheerder bent om te controleren welke netwerkshares worden gehost door de lokale computer.For example, consider the role of a file server admin who wants to check which network shares are hosted by the local machine. Een manier om te controleren, is met net share.One way to check is to use net share. Echter, zodat net.exe is zeer gevaarlijke omdat de beheerder kan net zo eenvoudig gebruik van de opdracht om te krijgen van beheerdersbevoegdheden met net group Administrators unprivilegedjeauser /add.However, allowing net.exe is very dangerous becuase the admin could just as easily use the command to gain admin privileges with net group Administrators unprivilegedjeauser /add. Er is een betere benadering om toe te staan Get-SmbShare die geven hetzelfde resultaat, maar een nog veel meer beperkt bereik heeft.A better approach is to allow Get-SmbShare which achieves the same result but has a much more limited scope.

Wanneer externe opdrachten beschikbaar maken voor gebruikers in een JEA-sessie, is altijd opgeven van het volledige pad naar het uitvoerbare bestand om te controleren of een gelijknamige (en mogelijk malicous) programma elders geplaatst op het systeem niet in plaats daarvan wordt uitgevoerd.When making external commands available to users in a JEA session, always specify the complete path to the executable to ensure a similarly named (and potentially malicous) program placed elsewhere on the system does not get executed instead.

Toegang tot de PowerShell-providersAllowing access to PowerShell providers

Er zijn geen PowerShell-providers zijn standaard beschikbaar in JEA-sessies.By default, no PowerShell providers are available in JEA sessions.

Dit is vooral vermindert het risico van gevoelige informatie en configuratie-instellingen die worden doorgegeven aan de gebruiker die verbinding maakt.This is primarily to reduce the risk of sensitive information and configuration settings being disclosed to the connecting user.

Indien nodig, kunt u de toegang tot de PowerShell-providers met behulp van de VisibleProviders opdracht.When necessary, you can allow access to the PowerShell providers using the VisibleProviders command. Voor een volledige lijst met providers, voert u Get-PSProvider.For a full list of providers, run Get-PSProvider.

VisibleProviders = 'Registry'

Voor eenvoudige taken waarvoor toegang tot het bestandssysteem, register, certificaatarchief of andere gevoelige-providers, kunt u ook overwegen schrijven van een aangepaste functie die geschikt is voor de provider namens de gebruiker.For simple tasks that require access to the file system, registry, certificate store, or other sensitive providers, you can also consider writing a custom function that works with the provider on the user's behalf. Functies, -cmdlets en externe programma's die beschikbaar in een JEA-sessie zijn vallen niet onder de dezelfde beperkingen als JEA--ze hebben standaard toegang tot alle elke provider.Functions, cmdlets, and external programs that are available in a JEA session are not subject to the same constraints as JEA -- they can access any provider by default. Ook kunt u overwegen de schijf van de gebruiker wanneer bestanden zijn gekopieerd naar/van een JEA-eindpunt is vereist.Also consider using the user drive when copying files to/from a JEA endpoint is required.

Het maken van aangepaste functiesCreating custom functions

U kunt aangepaste functies in een bestand rol mogelijkheid complexe taken vereenvoudigen voor uw eindgebruikers maken.You can author custom functions in a role capability file to simplify complex tasks for your end users. Aangepaste functies zijn ook handig wanneer u geavanceerde validatielogica voor cmdlet parameterwaarden vereist.Custom functions are also useful when you require advanced validation logic for cmdlet parameter values. U kunt eenvoudig functies schrijven in de FunctionDefinitions veld:You can write simple functions in the FunctionDefinitions field:

VisibleFunctions = 'Get-TopProcess'

FunctionDefinitions = @{
    Name = 'Get-TopProcess'

    ScriptBlock = {
        param($Count = 10)

        Get-Process | Sort-Object -Property CPU -Descending | Microsoft.PowerShell.Utility\Select-Object -First $Count
    }
}

Belangrijk

Vergeet niet om toe te voegen van de naam van uw aangepaste functies voor de VisibleFunctions veld, zodat ze kunnen worden uitgevoerd door de JEA-gebruikers.Don't forget to add the name of your custom functions to the VisibleFunctions field so they can be run by the JEA users.

De hoofdtekst (scriptblok) van aangepaste functies in de standaardmodus voor de taal voor het systeem wordt uitgevoerd en niet is onderworpen aan beperkingen voor de JEA-taal.The body (script block) of custom functions runs in the default language mode for the system and is not subject to JEA's language constraints. Dit betekent dat functies kunnen toegang krijgen het bestandssysteem en register tot en uitvoeren van opdrachten die zijn niet zichtbaar in het bestand van de mogelijkheid rol.This means that functions can access the file system and registry, and run commands that were not made visible in the role capability file. Let erop om te voorkomen waardoor arbitraire code moet worden uitgevoerd wanneer met behulp van parameters en te voorkomen dat invoer van de gebruiker rechtstreeks in de cmdlets, zoals uitvoeromleiding Invoke-Expression.Take care to avoid allowing arbitrary code to be run when using parameters and avoid piping user input directly into cmdlets like Invoke-Expression.

In het bovenstaande voorbeeld ziet u dat de naam van de volledig gekwalificeerde module (FQMN) Microsoft.PowerShell.Utility\Select-Object is gebruikt in plaats van de steno Select-Object.In the above example, you will notice that the fully qualified module name (FQMN) Microsoft.PowerShell.Utility\Select-Object was used instead of the shorthand Select-Object. Functies die zijn gedefinieerd in de rol mogelijkheid bestanden zijn nog steeds afhankelijk van het bereik van JEA-sessies, waaronder de proxyfuncties JEA wordt gemaakt voor het beperken van bestaande opdrachten.Functions defined in role capability files are still subject to the scope of JEA sessions, which includes the proxy functions JEA creates to constrain existing commands.

Select-Object is een standaard beperkte cmdlet in alle JEA-sessies die is niet toegestaan om willekeurige eigenschappen van objecten te selecteren.Select-Object is a default, constrained cmdlet in all JEA sessions that doesn't allow you to select arbitrary properties on objects. Voor het gebruik van de onbeperkte Select-Object in de functies, moet u expliciet de volledige implementatie aanvragen door de FQMN op te geven.To use the unconstrained Select-Object in functions, you must explicitly request the full implementation by specifying the FQMN. Een beperkte cmdlet in een JEA-sessie wordt vertonen hetzelfde gedrag wordt aangeroepen vanuit een functie, in overeenstemming met de PowerShell opdracht prioriteit.Any constrained cmdlet in a JEA session will exhibit the same behavior when invoked from a function, in line with PowerShell's command precedence.

Als u een groot aantal aangepaste functies ontwikkelt, kan het zijn gemakkelijker te plaatsen een PowerShell-Script-Module.If you are writing a lot of custom functions, it may be easier to put them in a PowerShell Script Module. U kunt deze functies vervolgens zichtbaar in de JEA-sessie met behulp van het veld VisibleFunctions zoals u zou met ingebouwde en van derden modules doen maken.You can then make those functions visible in the JEA session using the VisibleFunctions field like you would with built-in and third party modules.

Rolmogelijkheden plaatsen in een modulePlace role capabilities in a module

In de volgorde voor PowerShell om een rol mogelijkheid-bestand te zoeken, moet deze worden opgeslagen in een map 'RoleCapabilities' in een PowerShell-module.In order for PowerShell to find a role capability file, it must be stored in a "RoleCapabilities" folder in a PowerShell module. De module kan worden opgeslagen in een map die is opgenomen in de $env:PSModulePath omgevingsvariabele, maar u moet niet plaats deze in System32 (gereserveerd voor ingebouwde modules) of een map waar de niet-vertrouwde, verbinding te maken van gebruikers kan de bestanden wijzigen.The module can be stored in any folder included in the $env:PSModulePath environment variable, however you should not place it in System32 (reserved for built-in modules) or a folder where the untrusted, connecting users could modify the files. Hieronder volgt een voorbeeld van het maken van een eenvoudige PowerShell-script-module met de naam ContosoJEA in het pad 'Program Files'.Below is an example of creating a basic PowerShell script module called ContosoJEA in the "Program Files" path.

# Create a folder for the module
$modulePath = Join-Path $env:ProgramFiles "WindowsPowerShell\Modules\ContosoJEA"
New-Item -ItemType Directory -Path $modulePath

# Create an empty script module and module manifest. At least one file in the module folder must have the same name as the folder itself.
New-Item -ItemType File -Path (Join-Path $modulePath "ContosoJEAFunctions.psm1")
New-ModuleManifest -Path (Join-Path $modulePath "ContosoJEA.psd1") -RootModule "ContosoJEAFunctions.psm1"

# Create the RoleCapabilities folder and copy in the PSRC file
$rcFolder = Join-Path $modulePath "RoleCapabilities"
New-Item -ItemType Directory $rcFolder
Copy-Item -Path .\MyFirstJEARole.psrc -Destination $rcFolder

Zie inzicht krijgen in een PowerShell-Module voor meer informatie over PowerShell-modules, modulemanifesten en de omgevingsvariabele PSModulePath.See Understanding a PowerShell Module for more information about PowerShell modules, module manifests, and the PSModulePath environment variable.

Rolmogelijkheden bijwerkenUpdating role capabilities

U kunt een bestand van de mogelijkheid rol op elk gewenst moment bijwerken door gewoon wijzigingen aan de rol mogelijkheid bestand worden opgeslagen.You can update a role capability file at any time by simply saving changes to the role capability file. Een nieuwe JEA-sessies gestart nadat de mogelijkheid van de rol is bijgewerkt, verschijnt op de nieuwe mogelijkheden.Any new JEA sessions started after the role capability has been updated will reflect the revised capabilities.

Dit is de reden waarom het beheren van toegang tot de map van de mogelijkheden van rol is dus belangrijk.This is why controlling access to the role capabilities folder is so important. Alleen uiterst vertrouwde beheerders mogen rol mogelijkheid bestanden te wijzigen.Only highly trusted administrators should be able to change role capability files. Als een niet-vertrouwde gebruiker rol mogelijkheid bestanden wijzigt kan, kunnen ze eenvoudig geven zelf toegang aan de cmdlets waarmee ze zijn bevoegdheden te verhogen.If an untrusted user can change role capability files, they can easily give themselves access to cmdlets which allow them to elevate their privileges.

Voor beheerders het vergrendelen van toegang tot de rolmogelijkheden wilt, zorg ervoor dat lokaal systeem, leestoegang heeft tot de rol mogelijkheid bestanden en met modules.For administrators looking to lock down access to the role capabilities, ensure Local System has read access to the role capability files and containing modules.

Hoe rolmogelijkheden worden samengevoegdHow role capabilities are merged

Gebruikers kunnen toegang tot meerdere rolmogelijkheden worden verleend wanneer ze een JEA-sessie, afhankelijk van de rol-toewijzingen in de sessie configuratiebestand.Users can be granted access to multiple role capabilities when they enter a JEA session depending on the role mappings in the session configuration file. Als dit gebeurt, JEA probeert te geven van de gebruiker de meest strikte reeks opdrachten die zijn toegestaan door een van de rollen.When this happens, JEA tries to give the user the most permissive set of commands allowed by any of the roles.

VisibleCmdlets en VisibleFunctionsVisibleCmdlets and VisibleFunctions

De meest complexe logica voor het samenvoegen van invloed is op de cmdlets en -functies, waarvoor hun parameters en parameterwaarden in JEA beperkt.The most complex merge logic affects cmdlets and functions, which can have their parameters and parameter values limited in JEA.

De regels zijn als volgt:The rules are as follows:

  1. Als een cmdlet is alleen zichtbaar zijn in één rol, worden deze zichtbaar is voor de gebruiker met de beperkingen van toepassing parameter.If a cmdlet is only made visible in one role, it will be visible to the user with any applicable parameter constraints.
  2. Als een cmdlet is zichtbaar in meer dan één rol, en elke rol de dezelfde beperkingen met betrekking tot de cmdlet heeft, zijn de cmdlet zichtbaar voor de gebruiker met deze beperkingen.If a cmdlet is made visible in more than one role, and each role has the same constraints on the cmdlet, the cmdlet will be visible to the user with those constraints.
  3. Als een cmdlet is zichtbaar in meer dan één rol, en elke rol maakt het mogelijk een andere set parameters, zijn de cmdlet en alle parameters gedefinieerd voor elke rol zichtbaar voor de gebruiker.If a cmdlet is made visible in more than one role, and each role allows a different set of parameters, the cmdlet and all of the parameters defined across every role will be visible to the user. Als één rol geen beperkingen met betrekking tot de parameters heeft, wordt alle parameters worden toegestaan.If one role doesn't have constraints on the parameters, all parameters will be allowed.
  4. Als één rol een set valideren of patroon valideren voor een cmdlet-parameter definieert en de andere rol kunt u de parameter, maar legt geen beperkingen voor de parameterwaarden, wordt de set valideren of het patroon worden genegeerd.If one role defines a validate set or validate pattern for a cmdlet parameter, and the other role allows the parameter but does not constrain the parameter values, the validate set or pattern will be ignored.
  5. Als een set valideren voor de dezelfde cmdlet-parameter in meer dan één rol is gedefinieerd, worden alle waarden uit alle valideren sets is toegestaan.If a validate set is defined for the same cmdlet parameter in more than one role, all values from all validate sets will be allowed.
  6. Als een patroon valideren voor de dezelfde cmdlet-parameter in meer dan één rol is gedefinieerd, worden alle waarden die overeenkomen met een van de patronen worden toegestaan.If a validate pattern is defined for the same cmdlet parameter in more than one role, any values that match any of the patterns will be allowed.
  7. Als een set valideren is gedefinieerd in een of meer rollen, en een patroon valideren is gedefinieerd in een andere rol voor de dezelfde cmdlet-parameter, de set valideren wordt genegeerd en regel (6) is van toepassing op de resterende valideren patronen.If a validate set is defined in one or more roles, and a validate pattern is defined in another role for the same cmdlet parameter, the validate set is ignored and rule (6) applies to the remaining validate patterns.

Hieronder volgt een voorbeeld van hoe de functies worden samengevoegd op basis van deze regels:Below is an example of how roles are merged according to these rules:

# Role A Visible Cmdlets
$roleA = @{
    VisibleCmdlets = 'Get-Service',
                     @{ Name = 'Restart-Service'; Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Client' } }
}

# Role B Visible Cmdlets
$roleB = @{
    VisibleCmdlets = @{ Name = 'Get-Service'; Parameters = @{ Name = 'DisplayName'; ValidatePattern = 'DNS.*' } },
                     @{ Name = 'Restart-Service'; Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Server' } }
}

# Resulting permisisons for a user who belongs to both role A and B
# - The constraint in role B for the DisplayName parameter on Get-Service is ignored becuase of rule #4
# - The ValidateSets for Restart-Service are merged because both roles use ValidateSet on the same parameter per rule #5
$mergedAandB = @{
    VisibleCmdlets = 'Get-Service',
                     @{ Name = 'Restart-Service'; Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Client', 'DNS Server' } }
}

VisibleExternalCommands, VisibleAliases, VisibleProviders, ScriptsToProcessVisibleExternalCommands, VisibleAliases, VisibleProviders, ScriptsToProcess

Alle andere velden in het bestand van de mogelijkheid rol worden alleen toegevoegd aan een volledige reeks van toegestane externe opdrachten, aliassen, providers en opstartscripts.All other fields in the role capability file are simply added to a cumulative set of allowable external commands, aliases, providers, and startup scripts. Elke opdracht, alias, provider of script beschikbaar is in één rol-functie is beschikbaar voor de JEA-gebruiker.Any command, alias, provider, or script available in one role capability will be available to the JEA user.

Wees voorzichtig om ervoor te zorgen dat de gecombineerde set-providers van een rol mogelijkheden en functies-cmdlets/opdrachten van een andere gebruikers niet toestaan verbindende onbedoelde toegang tot systeemresources.Be careful to ensure that the combined set of providers from one role capability and cmdlets/functions/commands from another do not allow connecting users unintentional access to system resources. Bijvoorbeeld, als een functie kan de Remove-Item cmdlet en andere kunnen de FileSystem provider, zijn op een JEA-gebruiker willekeurige bestanden op uw computer verwijderd.For example, if one role allows the Remove-Item cmdlet and another allows the FileSystem provider, you are at risk of a JEA user deleting arbitrary files on your computer. Als u meer informatie over het identificeren van de effectieve machtigingen van gebruikers te vinden in de JEA onderwerp controle.Additional information about identifying users' effective permissions can be found in the auditing JEA topic.

Volgende stappenNext steps