Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Setelah menyebarkan JEA, Anda perlu mengaudit konfigurasi JEA secara teratur. Audit membantu Anda menilai bahwa orang yang benar memiliki akses ke titik akhir JEA dan peran yang ditetapkan masih sesuai.
Menemukan sesi JEA terdaftar di komputer
Untuk memeriksa sesi JEA mana yang terdaftar di komputer, gunakan cmdlet Get-PSSessionConfiguration .
# 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
Hak efektif untuk titik akhir tercantum di properti Izin . Pengguna ini memiliki hak untuk terhubung ke titik akhir JEA. Namun, peran dan perintah yang dapat mereka akses ditentukan oleh properti RoleDefinitions dalam file konfigurasi sesi yang digunakan untuk mendaftarkan titik akhir. Perluas properti RoleDefinitions untuk mengevaluasi pemetaan peran di titik akhir JEA terdaftar.
# 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 }
}
Menemukan kemampuan peran yang tersedia di komputer
JEA mendapatkan kemampuan peran dari file .psrc yang disimpan di folder RoleCapabilities di dalam modul PowerShell. Fungsi berikut menemukan semua kemampuan peran yang tersedia di komputer.
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
}
Nota
Urutan hasil dari fungsi ini belum tentu urutan di mana kemampuan peran akan dipilih jika beberapa kemampuan peran memiliki nama yang sama.
Memeriksa hak efektif untuk pengguna tertentu
Cmdlet Get-PSSessionCapability menghitung semua perintah yang tersedia pada titik akhir JEA berdasarkan keanggotaan grup pengguna. Output dari Get-PSSessionCapability sama dengan keluaran pengguna yang ditentukan saat menjalankan Get-Command -CommandType All dalam sesi JEA.
Get-PSSessionCapability -ConfigurationName 'JEAMaintenance' -Username 'CONTOSO\Alice'
Jika pengguna Anda bukan anggota grup permanen yang akan memberi mereka hak JEA tambahan, cmdlet ini mungkin tidak mencerminkan izin tambahan tersebut. Ini terjadi saat menggunakan sistem manajemen akses istimewa just-in-time untuk memungkinkan pengguna untuk sementara termasuk dalam kelompok keamanan. Evaluasi pemetaan pengguna dengan cermat ke peran dan kemampuan untuk memastikan bahwa pengguna hanya mendapatkan tingkat akses yang diperlukan untuk melakukan pekerjaan mereka dengan sukses.
Log peristiwa PowerShell
Jika Anda mengaktifkan pengelogan modul atau blok skrip pada sistem, Anda dapat melihat peristiwa di log peristiwa Windows untuk setiap perintah yang dijalankan pengguna dalam sesi JEA. Untuk menemukan peristiwa ini, buka log peristiwa Microsoft-Windows-PowerShell/Operational dan cari peristiwa dengan ID peristiwa 4104.
Setiap entri log peristiwa menyertakan informasi tentang sesi tempat perintah dijalankan. Untuk sesi JEA, acara ini menyertakan informasi tentang ConnectedUser dan RunAsUser. ConnectedUser adalah pengguna aktual yang membuat sesi JEA. RunAsUser adalah akun JEA yang digunakan untuk menjalankan perintah.
Log peristiwa aplikasi menunjukkan perubahan yang dibuat oleh RunAsUser. Jadi, mengaktifkan pembuatan log modul dan skrip diperlukan untuk melacak pemanggilan perintah tertentu kembali ke ConnectedUser.
Log peristiwa aplikasi
Perintah yang dijalankan dalam sesi JEA yang berinteraksi dengan aplikasi atau layanan eksternal dapat mencatat peristiwa ke log peristiwa mereka sendiri. Tidak seperti log dan transkrip PowerShell, mekanisme pengelogan lainnya tidak menangkap pengguna sesi JEA yang terhubung. Sebagai gantinya, aplikasi tersebut hanya mencatat pengguna virtual run-as. Untuk menentukan siapa yang menjalankan perintah, Anda perlu berkonsultasi dengan transkrip sesi atau menghubungkan log peristiwa PowerShell dengan waktu dan pengguna yang ditampilkan di log peristiwa aplikasi.
Log WinRM juga dapat membantu Anda menghubungkan pengguna run-as dengan pengguna yang terhubung dalam log peristiwa aplikasi. ID Peristiwa 193 di log Microsoft-Windows-Windows Manajemen Jarak Jauh/Operasional mencatat pengidentifikasi keamanan (SID) dan nama akun untuk pengguna yang tersambung dan pengguna yang dijalankan untuk setiap sesi JEA baru.
Transkrip sesi
Jika Anda mengonfigurasi JEA untuk membuat transkrip untuk setiap sesi pengguna, salinan teks setiap tindakan pengguna disimpan di folder yang ditentukan.
Perintah berikut (sebagai administrator) menemukan semua direktori transkrip.
Get-PSSessionConfiguration |
Where-Object { $_.TranscriptDirectory -ne $null } |
Format-Table Name, TranscriptDirectory
Setiap transkrip dimulai dengan informasi tentang waktu sesi dimulai, pengguna mana yang terhubung ke sesi, dan identitas JEA mana yang ditetapkan kepada mereka.
**********************
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)
[...]
Isi transkrip berisi informasi tentang setiap perintah yang dipanggil pengguna. Sintaks yang tepat dari perintah yang digunakan tidak tersedia dalam sesi JEA karena cara perintah dirubah untuk PowerShell jarak jauh. Namun, Anda masih dapat menentukan perintah efektif yang dijalankan. Di bawah ini adalah contoh cuplikan transkrip dari pengguna yang menjalankan Get-Service Dns dalam sesi JEA:
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
Baris CommandInvocation ditulis untuk setiap perintah yang dijalankan pengguna.
ParameterBindings merekam setiap parameter dan nilai yang disediakan dengan perintah . Dalam contoh sebelumnya, Anda dapat melihat bahwa parameter Name diberikan nilai Dns untuk Get-Service cmdlet.
Output dari setiap perintah juga memicu CommandInvocation, yang biasanya diarahkan ke Out-Default.
InputObject merupakan objek PowerShell yang dikembalikan dari perintah. Detail objek tersebut dicetak beberapa baris di bawah, dengan cermat meniru apa yang akan pengguna lihat.