Controle en rapportage over JEAAuditing and Reporting on JEA

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

Nadat u de JEA hebt geïmplementeerd, wilt u regelmatige controle van de JEA-configuratie.After you've deployed JEA, you will want to regularly audit the JEA configuration. Dit helpt u bij het bepalen als de juiste personen toegang tot de JEA-eindpunt hebben en hun rollen nog steeds geschikt zijn.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 JEA-eindpunt kunt controleren.This topic describes the various ways you can audit a JEA endpoint.

Geregistreerde JEA-sessies op een virtuele machine zoekenFind registered JEA sessions on a machine

Als u wilt controleren welke JEA-sessies op een virtuele machine zijn geregistreerd, gebruikt u 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 machtigingen 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 de JEA-eindpunt, maar welke functies (en, bij uitbreiding, opdrachten) ze 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 } }

Beschikbare rolmogelijkheden zoeken op de machineFind available role capabilities on the machine

Rol mogelijkheid bestanden wordt alleen worden 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 kunt alle functie mogelijkheden die beschikbaar zijn op een computer vinden door te zoeken naar 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 noodzakelijkerwijs de volgorde waarin de rolmogelijkheden worden geselecteerd als meerdere rolmogelijkheden dezelfde naam delen.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.

Effectieve rechten voor een specifieke gebruiker controlerenCheck effective rights for a specific user

Wanneer u een JEA-eindpunt hebt ingesteld, kunt u om te controleren welke opdrachten zijn beschikbaar voor een specifieke gebruiker in een JEA-sessie.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 als ze een JEA-sessie starten met de huidige groepslidmaatschappen.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 vrijwel identiek aan die van de opgegeven gebruiker uitgevoerd Get-Command -CommandType All in een JEA-sessie.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 zou hun aanvullende JEA rechten verleend, 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 meestal het geval is bij het gebruik van just-in-time privileged access management systemen kunnen gebruikers tijdelijk deel uitmaken van een beveiligingsgroep.This is typically the case when using just-in-time privileged access management systems to allow users to temporarily belong to a security group. Evalueer altijd zorgvuldig de toewijzing van gebruikers aan rollen en de inhoud van elke rol om te controleren of gebruikers alleen toegang tot de opdrachten die nodig zijn voor hun werk doen zo min mogelijk krijgen.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 scripts blokkeren die zich aanmelden op het systeem hebt ingeschakeld, kunt u zich om gebeurtenissen te zoeken in de Windows-gebeurtenislogboeken voor elke opdracht die een gebruiker in de JEA-sessies worden uitgevoerd.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 wilt deze gebeurtenissen vinden, opent u de Windows-Logboeken, gaat u naar de Microsoft-Windows-PowerShell/Operational gebeurtenislogboek en zoek 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 JEA-sessie gemaakt, evenals de uitvoerenals waarin het account waarmee JEA 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, dus met de uitgeschreven of module/script logboekregistratie is ingeschakeld is van cruciaal belang kunnen zijn voor het traceren van de aanroep van een 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.

Logboeken voor toepassingenApplication event logs

Wanneer u een opdracht in een JEA-sessie die met een externe toepassing of service uitvoert communiceert, kunnen deze toepassingen gebeurtenissen registreren bij 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 de PowerShell-logboeken en transcripties, andere mechanismen voor logboekregistratie geen informatie over de gebruiker met de verbinding van de JEA-sessie en zich in plaats daarvan alleen aanmelden 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 is uitgevoerd, moet u raadplegen een sessie transcript 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.

Het logboek kunt u ook correleren WinRM worden uitgevoerd als gebruikers in een logboek voor toepassingsgebeurtenissen aan de gebruiker die verbinding maakt.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 van records de beveiligings-id (SID)-account een naam voor zowel de gebruiker verbinding maakt 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.

Transcripten van sessieSession transcripts

Als u de JEA voor het maken van een transcript voor elke gebruikerssessie hebt geconfigureerd, wordt een tekstkopie van acties van elke gebruiker worden 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 het transcript zoeken, de volgende opdracht uitvoeren 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

Elke transcript begint met informatie over de tijd van de sessie is gestart, welke gebruiker verbinding maken 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 het transcript, wordt informatie over elke opdracht die wordt aangeroepen voor de gebruiker geregistreerd.In the body of the transcript, information is logged about each command the user invoked. De exacte syntaxis van de opdracht uitgevoerd voor de gebruiker is niet beschikbaar in JEA-sessies door de manier waarop opdrachten worden getransformeerd voor externe communicatie van PowerShell, maar u kunt nog steeds bepalen de effectieve opdracht die is 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 vindt u een fragment voor het transcript van voorbeeld van een gebruiker die de Get-Service Dns in een JEA-sessie: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 wordt uitgevoerd door een gebruiker, een regel 'CommandInvocation' worden geschreven, met een beschrijving van de cmdlet of functie van de gebruiker die wordt 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 voor informatie 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 'Naam' is de waarde 'Dns' voor de cmdlet 'Get-Service' verstrekt.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 activeert 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 door 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 onder 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