Megosztás a következőn keresztül:


Auditálás és jelentéskészítés JEA-ról

A JEA üzembe helyezése után rendszeresen ellenőriznie kell a JEA-konfigurációt. A naplózás segít felmérni, hogy a megfelelő személyek hozzáférnek-e a JEA-végponthoz, és a hozzájuk rendelt szerepkörök továbbra is megfelelőek.

Regisztrált JEA-munkamenetek keresése egy gépen

Annak ellenőrzéséhez, hogy mely JEA-munkamenetek vannak regisztrálva egy gépen, használja a Get-PSSessionConfiguration parancsmagot.

# Filter for sessions that are configured as 'RestrictedRemoteServer' to
# find JEA-like session configurations
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

A végpont érvényes jogosultságai az Engedély tulajdonságban találhatók. Ezeknek a felhasználóknak joguk van csatlakozni a JEA-végponthoz. A hozzáféréssel rendelkező szerepköröket és parancsokat azonban a végpont regisztrálásához használt munkamenet-konfigurációs fájlRoleDefinitions tulajdonsága határozza meg. Bontsa ki a RoleDefinitions tulajdonságot a regisztrált JEA-végpont szerepkör-leképezéseinek kiértékeléséhez.

# 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 }
}

Elérhető szerepkör-képességek keresése a gépen

A JEA a szerepkör-képességeket a .psrcPowerShell-modul RoleCapabilities mappájában tárolt fájlokból szerzi be. Az alábbi függvény megkeresi a számítógépen elérhető összes szerepkör-képességet.

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
}

Megjegyzés:

A függvény eredményeinek sorrendje nem feltétlenül az a sorrend, amelyben a szerepkör-képességek ki lesznek választva, ha több szerepkör-képesség azonos nevű.

Adott felhasználó érvényes jogosultságainak ellenőrzése

A Get-PSSessionCapability parancsmag felsorolja a JEA-végponton elérhető összes parancsot a felhasználó csoporttagságai alapján. A Get-PSSessionCapability kimenete megegyezik azzal, mintha a specifikált felhasználó futtatná a Get-Command -CommandType All egy JEA munkamenetben.

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

Ha a felhasználók nem állandó csoportok tagjai, amelyek további JEA-jogosultságokat biztosítanak számukra, ez a parancsmag nem feltétlenül tükrözi ezeket a további engedélyeket. Ez akkor fordul elő, ha igény szerint emelt szintű hozzáférés-felügyeleti rendszereket használ, hogy a felhasználók ideiglenesen egy biztonsági csoporthoz tartozhassanak. Gondosan értékelje ki a felhasználók szerepkörökre és képességekre való leképezését, hogy a felhasználók csak a feladataik sikeres elvégzéséhez szükséges hozzáférési szintet kapják meg.

PowerShell-eseménynaplók

Ha engedélyezte a modul- vagy szkriptblokkok naplózását a rendszeren, a windowsos eseménynaplókban minden olyan parancs eseményei láthatók, amelyeken a felhasználó jeA-munkamenetben fut. Az események megkereséséhez nyissa meg a Microsoft-Windows-PowerShell/Operatív eseménynaplót, és keresse meg a 4104-as eseményazonosítójú eseményeket.

Minden eseménynapló-bejegyzés tartalmaz információkat arról a munkamenetről, amelyben a parancsot futtatták. A JEA-munkamenetek esetében az esemény a ConnectedUserről és a RunAsUserről tartalmaz információkat. A ConnectedUser az a tényleges felhasználó, aki létrehozta a JEA-munkamenetet. A RunAsUser a parancs végrehajtásához használt JEA fiók.

Az alkalmazásesemény-naplók a RunAsUser által végrehajtott módosításokat mutatják. Ezért ha engedélyezve van a modul- és szkriptnaplózás, egy adott parancshívást vissza kell követnie a ConnectedUserbe.

Alkalmazásesemény-naplók

A parancsok olyan JEA-munkamenetben futnak, amely külső alkalmazásokkal vagy szolgáltatásokkal kommunikál, eseményeket naplózhatnak saját eseménynaplóikba. A PowerShell-naplókkal és az átiratokkal ellentétben más naplózási mechanizmusok nem rögzítik a JEA-munkamenet csatlakoztatott felhasználóját. Ehelyett ezek az alkalmazások csak felhasználóként naplózják a virtuális futtatásokat. Annak megállapításához, hogy ki futtatta a parancsot, meg kell vizsgálnia egy munkamenet-átiratot , vagy össze kell fűznie a PowerShell-eseménynaplókat az alkalmazás eseménynaplójában látható idővel és felhasználóval.

A WinRM-napló segíthet a futtató felhasználók és a csatlakozó felhasználó közötti korrelációban egy alkalmazásesemény-naplóban. A Microsoft-Windows-Windows távfelügyeleti/üzemeltetési napló 193-as eseményazonosítója a csatlakozó felhasználó biztonsági azonosítóját (SID) és fióknevét rögzíti, és minden új JEA-munkamenethez felhasználóként fut.

Munkamenet-átiratok

Ha úgy konfigurálta a JEA-t, hogy minden felhasználói munkamenethez hozzon létre egy átiratot, az összes felhasználó műveleteinek szöveges másolata a megadott mappában lesz tárolva.

A következő parancs (rendszergazdaként) megkeresi az összes átiratkönyvtárat.

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

Minden átirat a munkamenet indításának időpontjával, a munkamenethez csatlakozó felhasználóval és a hozzájuk rendelt JEA-identitással kapcsolatos információkkal kezdődik.

**********************
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)
[...]

Az átirat szövege információkat tartalmaz a felhasználó által végrehajtott parancsokról. A használt parancs pontos szintaxisa nem érhető el a JEA-munkamenetekben, mert a parancsok a PowerShell távoli eléréshez átalakítva vannak. Azonban továbbra is meghatározhatja a végrehajtott érvényes parancsot. Az alábbiakban egy JEA-munkamenetben futó felhasználó példaátirat-kódrészlete látható Get-Service Dns :

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

A rendszer egy CommandInvocation sort ír minden olyan parancshoz, amelyet a felhasználó futtat. A ParameterBindings rögzíti a parancshoz megadott paramétereket és értékeket. Az előző példában láthatja, hogy a Név paraméterhez a Dns értéket adták meg a Get-Service parancsmaghoz.

Az egyes parancsok kimenete a CommandInvocation parancsot is aktiválja, általában a következőre Out-Default: . Az InputObject a Out-Default parancsból visszaadott PowerShell-objektum. Az objektum részleteit néhány sor alatt nyomtatja ki a rendszer, szorosan utánozva azt, amit a felhasználó látott volna.

Lásd még

PowerShell ♥ a kék csapat blogbejegyzése a biztonságról