Freigeben über


JEA-Sitzungskonfigurationen

Ein JEA-Endpunkt wird auf einem System registriert, indem eine PowerShell-Sitzungskonfigurationsdatei erstellt und registriert wird. Sitzungskonfigurationen definieren, wer den JEA-Endpunkt verwenden kann und auf welche Rollen sie Zugriff haben. Sie definieren auch globale Einstellungen, die für alle Benutzer der JEA-Sitzung gelten.

Erstellen einer Sitzungskonfigurationsdatei

Um einen JEA-Endpunkt zu registrieren, müssen Sie angeben, wie dieser Endpunkt konfiguriert ist. Es gibt viele Zu berücksichtigende Optionen. Die wichtigsten Optionen sind:

  • Wer Zugriff auf den JEA-Endpunkt hat
  • Welche Rollen ihnen zugewiesen werden können
  • Welche Identität JEA im Verborgenen verwendet
  • Der Name des JEA-Endpunkts

Diese Optionen werden in einer PowerShell-Datendatei mit einer .pssc Erweiterung definiert, die als PowerShell-Sitzungskonfigurationsdatei bezeichnet wird. Die Sitzungskonfigurationsdatei kann mit einem beliebigen Text-Editor bearbeitet werden.

Führen Sie den folgenden Befehl aus, um eine leere Vorlagenkonfigurationsdatei zu erstellen.

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\MyJEAEndpoint.pssc

Tipp

Standardmäßig sind nur die am häufigsten verwendeten Konfigurationsoptionen in der Vorlagendatei enthalten. Verwenden Sie die -Full Option, um alle anwendbaren Einstellungen in das generierte PSSC einzuschließen.

Das -SessionType RestrictedRemoteServer Feld gibt an, dass die Sitzungskonfiguration von JEA für die sichere Verwaltung verwendet wird. Sitzungen dieses Typs werden im NoLanguage-Modus ausgeführt und haben nur Zugriff auf die folgenden Standardbefehle (und Aliase):

  • Clear-Host (cls, clear)
  • Exit-PSSession (exsn, exit)
  • Get-Command (gcm)
  • Get-FormatData
  • Get-Help
  • Measure-Object (measure)
  • Out-Default
  • Select-Object (select)

Es sind weder PowerShell-Anbieter verfügbar noch externe Programme (ausführbare Dateien oder Skripts).

Weitere Informationen zu Sprachmodi finden Sie unter about_Language_Modes.

Auswählen der JEA-Identität

Hinter den Kulissen benötigt JEA eine Identität (Konto), die beim Ausführen der Befehle eines verbundenen Benutzers verwendet werden soll. Sie definieren, welche Identität JEA in der Sitzungskonfigurationsdatei verwendet.

Lokales virtuelles Konto

Lokale virtuelle Konten sind nützlich, wenn alle für den JEA-Endpunkt definierten Rollen zum Verwalten des lokalen Computers verwendet werden und ein lokales Administratorkonto ausreicht, um die Befehle erfolgreich auszuführen. Virtuelle Konten sind temporäre Konten, die nur für einen bestimmten Benutzer und nur für die Dauer ihrer PowerShell-Sitzung gelten. Auf einem Mitgliedsserver oder einer Arbeitsstation gehören virtuelle Konten zur Gruppe "Administratoren " des lokalen Computers. Auf einem Active Directory-Domänencontroller gehören virtuelle Konten zur Gruppe " Domänenadministratoren " der Domäne.

# Setting the session to use a virtual account
RunAsVirtualAccount = $true

Wenn die von der Sitzungskonfiguration definierten Rollen keine vollständigen Administratorrechte erfordern, können Sie die Sicherheitsgruppen angeben, zu denen das virtuelle Konto gehört. Auf einem Mitgliedsserver oder einer Arbeitsstation müssen die angegebenen Sicherheitsgruppen lokale Gruppen sein, nicht Gruppen aus einer Domäne.

Wenn mindestens eine Sicherheitsgruppe angegeben wird, wird das virtuelle Konto nicht der lokalen Gruppe oder der Domänenadministratorgruppe zugewiesen.

# Setting the session to use a virtual account that only belongs to the NetworkOperator and NetworkAuditor local groups
RunAsVirtualAccount = $true
RunAsVirtualAccountGroups = 'NetworkOperator', 'NetworkAuditor'

Hinweis

Virtuelle Konten werden vorübergehend die Anmeldung als Dienst direkt in der lokalen Serversicherheitsrichtlinie gewährt. Wenn einer der angegebenen VirtualAccountGroups dieses Recht bereits in der Richtlinie gewährt wurde, wird das einzelne virtuelle Konto nicht mehr hinzugefügt und aus der Richtlinie entfernt. Dies kann in Szenarien wie Domänencontrollern hilfreich sein, in denen Überarbeitungen der Domänencontroller-Sicherheitsrichtlinie eng überwacht werden. Dies ist nur in Windows Server 2016 mit dem Rollup vom November 2018 oder höher und Windows Server 2019 mit dem Rollup vom Januar 2019 oder höher verfügbar.

Gruppenverwaltetes Dienstkonto

Ein gruppenverwaltetes Dienstkonto (GMSA) ist die geeignete Identität, die verwendet werden kann, wenn JEA-Benutzer auf Netzwerkressourcen wie Dateifreigaben und Webdienste zugreifen müssen. GMSAs geben Ihnen eine Domänenidentität, die für die Authentifizierung mit Ressourcen auf jedem Computer innerhalb der Domäne verwendet wird. Die Rechte, die eine GMSA bereitstellt, werden durch die Ressourcen bestimmt, auf die Sie zugreifen. Sie verfügen nicht über Administratorrechte auf Computern oder Diensten, es sei denn, der Computer- oder Dienstadministrator hat diese Rechte explizit der GMSA erteilt.

# Configure JEA sessions to use the GMSA in the local computer's domain
# with the sAMAccountName of 'MyJEAGMSA'
GroupManagedServiceAccount = 'Domain\MyJEAGMSA'

GVO sollten nur bei Bedarf verwendet werden:

  • Es ist schwierig, Aktionen auf einen Benutzer zurückzuverfolgen, wenn eine GMSA verwendet wird. Jeder Benutzer verwendet dieselbe Ausführungsidentität. Sie müssen PowerShell-Sitzungsaufzeichnungen und Protokolle überprüfen, um einzelne Benutzer mit ihren Aktionen zu korrelieren.

  • Die GMSA hat möglicherweise Zugriff auf viele Netzwerkressourcen, auf die der verbindende Benutzer keinen Zugriff benötigt. Versuchen Sie immer, effektive Berechtigungen in einer JEA-Sitzung einzuschränken, um dem Prinzip der geringsten Rechte zu folgen.

Hinweis

Gruppenverwaltete Dienstkonten sind nur auf Computern mit Domänenmitgliedschaft mit PowerShell 5.1 oder höher verfügbar.

Weitere Informationen zum Sichern einer JEA-Sitzung finden Sie im Artikel zu Sicherheitsaspekten .

Sitzungstranskripte

Es wird empfohlen, einen JEA-Endpunkt so zu konfigurieren, dass transkriptionen von Benutzersitzungen automatisch erfasst werden. PowerShell-Sitzungstranskripte enthalten Informationen über den verbindenden Benutzer, die verwendete Ausführungsidentität, die ihnen zugewiesen wurde, und die vom Benutzer ausgeführten Befehle. Sie können für ein Überwachungsteam nützlich sein, das verstehen muss, wer eine bestimmte Änderung an einem System vorgenommen hat.

Um die automatische Transkription in der Sitzungskonfigurationsdatei zu konfigurieren, geben Sie einen Pfad zu einem Ordner an, in dem die Transkriptionen gespeichert werden sollen.

TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'

Transkriptionen werden vom lokalen Systemkonto in den Ordner geschrieben, das Lese- und Schreibzugriff auf das Verzeichnis erfordert. Standardbenutzer sollten keinen Zugriff auf den Ordner haben. Beschränken Sie die Anzahl der Sicherheitsadministratoren, die Zugriff auf die Aufzeichnungen haben.

Benutzerlaufwerk

Wenn Ihre Verbindungsbenutzer Dateien in oder vom JEA-Endpunkt kopieren müssen, können Sie das Benutzerlaufwerk in der Sitzungskonfigurationsdatei aktivieren. Das Benutzerlaufwerk ist ein PSDrive , das einem eindeutigen Ordner für jeden Verbindungsbenutzer zugeordnet ist. Dieser Ordner ermöglicht Benutzern das Kopieren von Dateien in oder vom System, ohne ihnen Zugriff auf das vollständige Dateisystem zu gewähren oder den FileSystem-Anbieter verfügbar zu machen. Der Inhalt des Benutzerlaufwerks ist sitzungsübergreifend beständig, um Situationen zu berücksichtigen, in denen die Netzwerkkonnektivität unterbrochen werden kann.

MountUserDrive = $true

Standardmäßig können Sie auf dem Benutzerlaufwerk maximal 50 MB Daten pro Benutzer speichern. Sie können die Datenmenge einschränken, die ein Benutzer mit dem UserDriveMaximumSize-Feld nutzen kann.

# Enables the user drive with a per-user limit of 500MB (524288000 bytes)
MountUserDrive = $true
UserDriveMaximumSize = 524288000

Wenn Sie nicht möchten, dass Daten auf dem Benutzerlaufwerk dauerhaft sind, können Sie eine geplante Aufgabe auf dem System so konfigurieren, dass der Ordner jeden Abend automatisch bereinigt wird.

Hinweis

Das Benutzerlaufwerk ist nur in PowerShell 5.1 oder höher verfügbar.

Weitere Informationen zu PSDrives finden Sie unter Verwalten von PowerShell-Laufwerken.

Rollendefinitionen

Rollendefinitionen in einer Sitzungskonfigurationsdatei definieren die Zuordnung von Benutzern zu Rollen. Jeder Benutzer oder jede Gruppe, die in diesem Feld enthalten ist, erhält die Berechtigung für den JEA-Endpunkt, wenn er registriert ist. Jeder Benutzer oder jede Gruppe kann nur einmal als Schlüssel in die Hashtabelle einbezogen werden, kann aber mehreren Rollen zugewiesen werden. Der Name der Rollenfunktion sollte der Name der Rollenfunktionsdatei ohne die .psrc Erweiterung sein.

RoleDefinitions = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

Wenn ein Benutzer zu mehreren Gruppen in der Rollendefinition gehört, erhält er Zugriff auf die Rollen der einzelnen Gruppen. Wenn zwei Rollen Zugriff auf dieselben Cmdlets gewähren, wird dem Benutzer der am meisten zulässige Parametersatz gewährt.

Wenn Sie lokale Benutzer oder Gruppen im Feld "Rollendefinitionen" angeben, müssen Sie unbedingt den Computernamen verwenden, nicht „localhost“ oder „Wildcards“. Sie können den Computernamen überprüfen, indem Sie die $Env:COMPUTERNAME Variable überprüfen.

RoleDefinitions = @{
    'MyComputerName\MyLocalGroup' = @{ RoleCapabilities = 'DnsAuditor' }
}

Suchreihenfolge der Rollenfähigkeiten

Wie im obigen Beispiel gezeigt, werden Rollenfunktionen anhand des Basisnamens der Rollenfunktionsdatei referenziert. Der Basisname einer Datei ist der Dateiname ohne die Erweiterung. Wenn mehrere Rollenfunktionen auf dem System mit demselben Namen verfügbar sind, verwendet PowerShell die implizite Suchreihenfolge, um die effektive Rollenfunktionsdatei auszuwählen. JEA bietet keinen Zugriff auf alle Rollenfunktionsdateien mit demselben Namen.

JEA verwendet die Umgebungsvariable $Env:PSModulePath , um zu bestimmen, welche Pfade nach Rollenfunktionsdateien gesucht werden sollen. In jedem dieser Pfade sucht JEA nach gültigen PowerShell-Modulen, die einen Unterordner "RoleCapabilities" enthalten. Wie beim Importieren von Modulen bevorzugt JEA die mit Windows ausgelieferten Rollenfunktionen gegenüber benutzerdefinierten Rollenfunktionen mit demselben Namen.

Bei allen anderen Namenskonflikten wird die Rangfolge durch die Reihenfolge bestimmt, in der Windows die Dateien im Verzeichnis aufzählt. Die Reihenfolge ist nicht garantiert alphabetisch. Die erste Rollenfähigkeitsdatei, die mit dem angegebenen Namen übereinstimmt, wird für den verbundenen Benutzer verwendet. Da die Suchreihenfolge der Rollenfunktion nicht deterministisch ist, wird dringend empfohlen , dass Rollenfunktionen eindeutige Dateinamen aufweisen.

Regeln für bedingten Zugriff

Allen Benutzern und Gruppen, die im Feld "RoleDefinitions " enthalten sind, wird automatisch Zugriff auf JEA-Endpunkte gewährt. Mithilfe von Regeln für bedingten Zugriff können Sie diesen Zugriff verfeinern und erfordern, dass Benutzer zu zusätzlichen Sicherheitsgruppen gehören, die sich nicht auf die Rollen auswirken, denen sie zugewiesen sind. Dies ist nützlich, wenn Sie eine just-in-time Privileged Access Management-Lösung, Smartcard-Authentifizierung oder andere mehrstufige Authentifizierungslösung in JEA integrieren möchten.

Regeln für bedingten Zugriff werden im Feld "RequiredGroups" in einer Sitzungskonfigurationsdatei definiert. Dort können Sie eine Hashtabelle (optional geschachtelt) bereitstellen, die Schlüssel "And" und "Or" verwendet, um Ihre Regeln zu erstellen. Hier sind einige Beispiele für die Verwendung dieses Felds:

# Example 1: Connecting users must belong to a security group called "elevated-jea"
RequiredGroups = @{ And = 'elevated-jea' }

# Example 2: Connecting users must have signed on with 2 factor authentication or a smart card
# The 2 factor authentication group name is "2FA-logon" and the smart card group
# name is "smartcard-logon"
RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }

# Example 3: Connecting users must elevate into "elevated-jea" with their JIT system and
# have logged on with 2FA or a smart card
RequiredGroups = @{ And = 'elevated-jea', @{ Or = '2FA-logon', 'smartcard-logon' }}

Hinweis

Regeln für bedingten Zugriff sind nur in PowerShell 5.1 oder höher verfügbar.

Sonstige Eigenschaften

Sitzungskonfigurationsdateien können auch alles tun, was eine Rollenfunktionsdatei tun kann, nur ohne die Möglichkeit, Benutzern Zugriff auf verschiedene Befehle zu gewähren. Wenn Sie allen Benutzern den Zugriff auf bestimmte Cmdlets, Funktionen oder Anbieter ermöglichen möchten, können Sie dies direkt in der Sitzungskonfigurationsdatei tun. Um eine vollständige Liste der unterstützten Eigenschaften in der Sitzungskonfigurationsdatei zu erhalten, führen Sie Get-Help New-PSSessionConfigurationFile -Full aus.

Testen einer Sitzungskonfigurationsdatei

Sie können eine Sitzungskonfiguration mit dem Cmdlet Test-PSSessionConfigurationFile testen. Es wird empfohlen, ihre Sitzungskonfigurationsdatei zu testen, wenn Sie die .pssc Datei manuell bearbeitet haben. Das Testen stellt sicher, dass die Syntax korrekt ist. Wenn eine Sitzungskonfigurationsdatei diesen Test nicht erfüllt, kann sie nicht im System registriert werden.

Beispiel-Sitzungskonfigurationsdatei

Das folgende Beispiel zeigt, wie Eine Sitzungskonfiguration für JEA erstellt und überprüft wird. Die Rollendefinitionen werden zur Benutzerfreundlichkeit und Lesbarkeit in der $roles Variablen erstellt und gespeichert. dies ist nicht erforderlich.

$roles = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

$parameters = @{
    SessionType = 'RestrictedRemoteServer'
    Path = '.\JEAConfig.pssc'
    RunAsVirtualAccount = $true
    TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'
    RoleDefinitions = $roles
    RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }
}
New-PSSessionConfigurationFile @parameters
Test-PSSessionConfigurationFile -Path .\JEAConfig.pssc # should yield True

Aktualisieren von Sitzungskonfigurationsdateien

Um die Eigenschaften einer JEA-Sitzungskonfiguration zu ändern, einschließlich der Zuordnung von Benutzern zu Rollen, müssen Sie die Registrierung aufheben. Registrieren Sie dann die JEA-Sitzungskonfiguration mithilfe einer aktualisierten Sitzungskonfigurationsdatei erneut.

Nächste Schritte