Controle en rapportage over JEAAuditing and Reporting on JEA

Van toepassing op: Windows PowerShell 5.0Applies to: Windows PowerShell 5.0

Nadat u JEA hebt geïmplementeerd, wilt u de configuratie van de JEA regelmatig te controleren.After you've deployed JEA, you will want to regularly audit the JEA configuration. Dit helpt u vast te stellen als de juiste personen toegang tot het eindpunt JEA hebben en hun rollen steeds van toepassing.This will help you assess if the correct people have access to the JEA endpoint and if their assigned roles are still appropriate.

Dit onderwerp beschrijft de verschillende manieren waarop u een eindpunt JEA kunt controleren.This topic describes the various ways you can audit a JEA endpoint.

Geregistreerde JEA sessies op een machine vindenFind registered JEA sessions on a machine

Gebruiken om te controleren welke JEA-sessies zijn geregistreerd op een computer, de Get-PSSessionConfiguration cmdlet.To check which JEA sessions are registered on a machine, use the Get-PSSessionConfiguration cmdlet.

# Filter for sessions that are configured as 'RestrictedRemoteServer' to find JEA-like session configurations
PS C:\> Get-PSSessionConfiguration | Where-Object { $_.SessionType -eq 'RestrictedRemoteServer' }


Name          : JEAMaintenance
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : CONTOSO\JEA_DNS_ADMINS AccessAllowed, CONTOSO\JEA_DNS_OPERATORS AccessAllowed, CONTOSO\JEA_DNS_AUDITORS AccessAllowed

De effectieve rechten voor het eindpunt worden weergegeven in de eigenschap 'Permission'.The effective rights for the endpoint are listed in the "Permission" property. Deze gebruikers hebben het recht om te verbinden met het eindpunt JEA, maar welke rollen (en, bij uitbreiding, opdrachten) die toegang hebben tot wordt bepaald door het veld 'RoleDefinitions' in de sessie configuratiebestand die is gebruikt voor het registreren van de het eindpunt.These users have the right to connect to the JEA endpoint, but which roles (and, by extension, commands) they have access to is determined by the "RoleDefinitions" field in the session configuration file that was used to register the endpoint.

U kunt de toewijzingen van de rol in een geregistreerde JEA eindpunt evalueren door het uitbreiden van de gegevens in de eigenschap 'RoleDefinitions'.You can evaluate the role mappings in a registered JEA endpoint by expanding the data in the "RoleDefinitions" property.

# Get the desired session configuration
$jea = Get-PSSessionConfiguration -Name 'JEAMaintenance'

# Enumerate users/groups and which roles they have access to
$jea.RoleDefinitions.GetEnumerator() | Select-Object Name, @{ Name = 'Role Capabilities'; Expression = { $_.Value.RoleCapabilities } }

Mogelijkheden van de rol die beschikbaar is op de machine vindenFind available role capabilities on the machine

Rol capability-bestanden wordt alleen gebruikt door JEA als ze zijn opgeslagen in een map 'RoleCapabilities' binnen een geldig PowerShell-module.Role capability files will only be used by JEA if they are stored in a "RoleCapabilities" folder inside a valid PowerShell module. U vindt alle rol mogelijkheden die beschikbaar zijn op een computer door te zoeken in de lijst met beschikbare modules.You can find all role capabilities available on a computer by searching the list of available modules.

function Find-LocalRoleCapability {
    $results = @()

    # Find modules with a "RoleCapabilities" subfolder and add any PSRC files to the result set
    Get-Module -ListAvailable | ForEach-Object {
        $psrcpath = Join-Path -Path $_.ModuleBase -ChildPath 'RoleCapabilities'
        if (Test-Path $psrcpath) {
            $results += Get-ChildItem -Path $psrcpath -Filter *.psrc
        }
    }

    # Format the results nicely to make it easier to read
    $results | Select-Object @{ Name = 'Name'; Expression = { $_.Name.TrimEnd('.psrc') }}, @{ Name = 'Path'; Expression = { $_.FullName }} | Sort-Object Name
}

Notitie

De volgorde van de resultaten van deze functie is niet per se de volgorde waarin de mogelijkheden van de rol worden geselecteerd als meerdere mogelijkheden van de functie dezelfde naam hebben.The order of results from this function is not necessarily the order in which the role capabilities will be selected if multiple role capabilities share the same name.

Controleer de rechten voor effectieve voor een specifieke gebruikerCheck effective rights for a specific user

Nadat u een eindpunt JEA hebt ingesteld, wilt u mogelijk controleren welke opdrachten beschikbaar zijn voor een specifieke gebruiker in een sessie JEA.Once you have set up a JEA endpoint, you may want to check which commands are available to a specific user in a JEA session. U kunt Get-PSSessionCapability opsommen van de opdrachten die van toepassing op een gebruiker alsof ze een JEA-sessie starten met hun huidige groepslidmaatschap.You can use Get-PSSessionCapability to enumerate all of the commands applicable to a user if they were to start a JEA session with their current group memberships. De uitvoer van Get-PSSessionCapability is gelijk aan dat de opgegeven gebruiker uitgevoerd Get-Command -CommandType All in een sessie JEA.The output of Get-PSSessionCapability is identical to that of the specified user running Get-Command -CommandType All in a JEA session.

Get-PSSessionCapability -ConfigurationName 'JEAMaintenance' -Username 'CONTOSO\Alice'

Als uw gebruikers niet permanent lid zijn van groepen die u zou hen aanvullende JEA rechten verleend zijn, kan deze extra machtigingen niet overeen met deze cmdlet.If your users are not permanent members of groups which would grant them additional JEA rights, this cmdlet may not reflect those extra permissions. Dit is doorgaans het geval bij gebruik van systemen voor just-in-time privileged access management zodat gebruikers tijdelijk aan een beveiligingsgroep horen.This is typically the case when using just-in-time privileged access management systems to allow users to temporarily belong to a security group. De toewijzing van gebruikers aan rollen altijd zorgvuldig te evalueren en de inhoud van elke rol zodat gebruikers krijgen alleen toegang tot de kortste opdrachten die nodig zijn voor hun werk te doen.Always carefully evaluate the mapping of users to roles and the contents of each role to ensure users are only getting access to the least amount of commands needed to do their jobs successfully.

PowerShell-gebeurtenislogboekenPowerShell event logs

Als u de module en/of script blok logboekregistratie op het systeem hebt ingeschakeld, wordt u mogelijk zijn om te zoeken die in de Windows-gebeurtenislogboeken voor elke opdracht die een gebruiker wordt uitgevoerd in hun JEA-sessies.If you enabled module and/or script block logging on the system, you will be able to find events in the Windows event logs for each command a user ran in their JEA sessions. Als u deze gebeurtenissen zoekt, de Windows-Logboeken te openen, gaat u naar de Microsoft-Windows-PowerShell/operationeel gebeurtenislogboek en zoeken naar gebeurtenissen met de gebeurtenis-ID 4104.To find these events, open the Windows Event Viewer, navigate to the Microsoft-Windows-PowerShell/Operational event log, and look for events with event ID 4104.

Elke logboekvermelding bevat informatie over de sessie waarin de opdracht is uitgevoerd.Each event log entry will include information about the session in which the command was run. JEA sessies, dit omvat voor belangrijke informatie over de ConnectedUser, dit is de werkelijke gebruiker die de sessie JEA gemaakt, evenals de uitvoerenals die het account JEA waarmee wordt aangegeven de opdracht niet uitvoeren.For JEA sessions, this includes important information about the ConnectedUser, which is the actual user who created the JEA session, as well as the RunAsUser which identifies the account JEA used to execute the command. Gebeurtenislogboeken van toepassingen wordt weergeven van wijzigingen van de uitvoerenals rekening transcripties of module-script-logboekregistratie ingeschakeld is essentieel om te kunnen traceren van een aanroep van de specifieke opdracht terug naar een gebruiker.Application event logs will show changes being made by the RunAsUser, so having transcripts or module/script logging enabled is crucial to be able to trace a specific command invocation back to a user.

Gebeurtenislogboeken van toepassingenApplication event logs

Wanneer u een opdracht in een sessie JEA die met een externe toepassing of service uitvoert communiceert, kunnen deze toepassingen gebeurtenissen vastleggen in hun eigen Logboeken.When you run a command in a JEA session that interacts with an external application or service, those applications may log events to their own event logs. In tegenstelling tot PowerShell logboeken en transcripties andere mechanismen voor logboekregistratie niet de verbonden gebruiker van de sessie JEA vast en wordt in plaats daarvan alleen Meld u de virtuele run as-gebruiker of groep beheerd serviceaccount.Unlike PowerShell logs and transcripts, other logging mechanisms will not capture the connected user of the JEA session, and will instead only log the virtual run-as user or group managed service account. Om te bepalen wie de opdracht hebt uitgevoerd, moet u raadpleegt u een tekst sessie of PowerShell logboeken correleren met de tijd en de gebruiker wordt weergegeven in het logboek voor toepassingsgebeurtenissen.In order to determine who ran the command, you will need to consult a session transcript or correlate PowerShell event logs with the time and user shown in the application event log.

De WinRM logboek kunt u ook correleren uitgevoerd als gebruikers in een logboek voor toepassingsgebeurtenissen aan de gebruiker verbinding probeert te maken.The WinRM log can also help you correlate run as users in an application event log with the connecting user. Gebeurtenis-ID 193 in de Microsoft Windows Windows Remote Management/operationeel logboekregistratie records de beveiligings-id (SID)-account een naam voor zowel de gebruiker verbinding probeert te maken en uitvoeren als gebruiker telkens wanneer een JEA sessie wordt gemaakt.Event ID 193 in the Microsoft-Windows-Windows Remote Management/Operational log records the security identifier (SID) and account name for both the connecting user and run as user every time a JEA session is created.

Sessie transcriptiesSession transcripts

Als u JEA voor het maken van een van de tekst voor elke gebruikerssessie hebt geconfigureerd, wordt een tekstkopie van acties van elke gebruiker opgeslagen in de opgegeven map.If you configured JEA to create a transcript for each user session, a text copy of every user's actions will be stored in the specified folder.

Alle mappen van de tekst zoeken, voer de volgende opdracht als beheerder op de computer geconfigureerd met JEA:To find all transcript directories, run the following command as an administrator on the computer configured with JEA:

Get-PSSessionConfiguration | Where-Object { $_.TranscriptDirectory -ne $null } | Format-Table Name, TranscriptDirectory

Elk van de tekst begint met informatie over de tijd van de sessie is gestart, welke gebruiker verbonden met de sessie en welke identiteit JEA aan hen is toegewezen.Each transcript starts with information about the time the session started, which user connected to the session, and which JEA identity was assigned to them.

**********************
Windows PowerShell transcript start
Start time: 20160710144736
Username: CONTOSO\Alice
RunAs User: WinRM Virtual Users\WinRM VA_1_CONTOSO_Alice
Machine: SERVER01 (Microsoft Windows NT 10.0.14393.0)
[...]

In de hoofdtekst van de tekst van de gegevens vastgelegd over elke opdracht die de gebruiker wordt aangeroepen.In the body of the transcript, information is logged about each command the user invoked. De syntaxis van de opdracht uitgevoerd voor de gebruiker is niet beschikbaar in JEA sessies vanwege de manier waarop opdrachten zijn getransformeerd voor externe communicatie van PowerShell, maar u kunt nog steeds bepalen de effectieve opdracht die werd uitgevoerd.The exact syntax of the command the user ran is unavailable in JEA sessions due to the way commands are transformed for PowerShell remoting, however you can still determine the effective command that was executed. Hieronder volgt een voorbeeld van de tekst van fragment van een gebruiker met Get-Service Dns in een sessie JEA:Below is an example transcript snippet from a user running Get-Service Dns in a JEA session:

PS>CommandInvocation(Get-Service): "Get-Service"
>> ParameterBinding(Get-Service): name="Name"; value="Dns"
>> CommandInvocation(Out-Default): "Out-Default"
>> ParameterBinding(Out-Default): name="InputObject"; value="Dns"

Running  Dns                DNS Server

Voor elke opdracht die een gebruiker wordt uitgevoerd, een regel 'CommandInvocation' worden geschreven, met een beschrijving van de cmdlet of functie van de gebruiker die is aangeroepen.For each command a user runs, a "CommandInvocation" line will be written, describing the cmdlet or function the user invoked. ParameterBindings Volg elke CommandInvocation om aan te geven over elke parameter en de waarde die is opgegeven met de opdracht.ParameterBindings follow each CommandInvocation to tell you about each parameter and value that was supplied with the command. In het bovenstaande voorbeeld ziet u dat de parameter 'Name' is de waarde 'Dns' voor de cmdlet 'Get-Service' opgegeven.In the above example, you can see that the parameter "Name" was supplied the value "Dns" for the "Get-Service" cmdlet.

De uitvoer van elke opdracht ook activeren een CommandInvocation meestal uitgaande standaardwaarden.The output of each command will also trigger a CommandInvocation, usually to Out-Default. De InputObject Out-Default is het PowerShell-object geretourneerd van de opdracht.The InputObject of Out-Default is the PowerShell object returned from the command. De details van dat object worden afgedrukt een paar regels hieronder nauw mimicking wat de gebruiker zou hebben gezien.The details of that object are printed a few lines below, closely mimicking what the user would have seen.

Zie ookSee also