Konfigurasi Sesi JEA

Titik akhir JEA didaftarkan pada sistem dengan membuat dan mendaftarkan file konfigurasi sesi PowerShell. Konfigurasi sesi menentukan siapa yang dapat menggunakan titik akhir JEA dan peran mana yang dapat mereka akses. Mereka juga menentukan pengaturan global yang berlaku untuk semua pengguna sesi JEA.

Membuat file konfigurasi sesi

Untuk mendaftarkan titik akhir JEA, Anda harus menentukan bagaimana titik akhir tersebut dikonfigurasi. Ada banyak opsi yang perlu dipertimbangkan. Opsi yang paling penting adalah:

  • Siapa memiliki akses ke titik akhir JEA
  • Peran mana yang mungkin ditetapkan
  • Identitas mana yang digunakan JEA di bawah sampul
  • Nama titik akhir JEA

Opsi ini didefinisikan dalam file data PowerShell dengan ekstensi yang .pssc dikenal sebagai file konfigurasi sesi PowerShell. File konfigurasi sesi dapat diedit menggunakan editor teks apa pun.

Jalankan perintah berikut untuk membuat file konfigurasi templat kosong.

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

Tip

Hanya opsi konfigurasi yang paling umum yang disertakan dalam file templat secara default. Gunakan sakelar -Full untuk menyertakan semua pengaturan yang berlaku dalam PSSC yang dihasilkan.

Bidang -SessionType RestrictedRemoteServer menunjukkan bahwa konfigurasi sesi digunakan oleh JEA untuk manajemen yang aman. Sesi jenis ini beroperasi dalam mode NoLanguage dan hanya memiliki akses ke perintah default berikut (dan alias):

  • Clear-Host (cls, clear)
  • Exit-PSSession (exsn, exit)
  • Get-CommandAku akan menemuinya.gcm
  • Get-FormatData
  • Get-Help
  • Measure-ObjectAku akan menemuinya.measure
  • Out-Default
  • Select-ObjectAku akan menemuinya.select

Tidak ada penyedia PowerShell yang tersedia, juga bukan program eksternal (executable atau skrip).

Untuk informasi selengkapnya tentang mode bahasa, lihat about_Language_modes.

Pilih identitas JEA

Di balik layar, JEA memerlukan identitas (akun) untuk digunakan saat menjalankan perintah pengguna yang terhubung. Anda menentukan identitas mana yang digunakan JEA dalam file konfigurasi sesi.

Akun Virtual Lokal

Akun virtual lokal berguna ketika semua peran yang ditentukan untuk titik akhir JEA digunakan untuk mengelola komputer lokal dan akun administrator lokal cukup untuk menjalankan perintah dengan sukses. Akun virtual adalah akun sementara yang unik untuk pengguna tertentu dan hanya bertahan selama durasi sesi PowerShell mereka. Di server anggota atau stasiun kerja, akun virtual termasuk dalam grup Administrator komputer lokal. Pada Pengendali Domain Direktori Aktif, akun virtual termasuk dalam grup Admin Domain domain.

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

Jika peran yang ditentukan oleh konfigurasi sesi tidak memerlukan hak administratif penuh, Anda dapat menentukan grup keamanan tempat akun virtual akan berada. Pada server anggota atau stasiun kerja, grup keamanan yang ditentukan harus merupakan grup lokal, bukan grup dari domain.

Ketika satu atau beberapa grup keamanan ditentukan, akun virtual tidak ditetapkan ke grup administrator lokal atau domain.

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

Catatan

Akun virtual untuk sementara diberikan log masuk sebagai layanan langsung dalam kebijakan keamanan server lokal. Jika salah satu VirtualAccountGroups yang ditentukan telah diberikan hak ini dalam kebijakan, akun virtual individual tidak akan lagi ditambahkan dan dihapus dari kebijakan. Ini dapat berguna dalam skenario seperti pengendali domain di mana revisi ke kebijakan keamanan pengendali domain diaudit dengan cermat. Ini hanya tersedia di Windows Server 2016 dengan rollup November 2018 atau yang lebih baru dan Windows Server 2019 dengan rollup Januari 2019 atau yang lebih baru.

Akun layanan yang dikelola grup

Akun layanan yang dikelola grup (GMSA) adalah identitas yang sesuai untuk digunakan ketika pengguna JEA perlu mengakses sumber daya jaringan seperti berbagi file dan layanan web. GMSA memberi Anda identitas domain yang digunakan untuk mengautentikasi dengan sumber daya pada komputer apa pun dalam domain. Hak yang disediakan GMSA ditentukan oleh sumber daya yang Anda akses. Anda tidak memiliki hak admin pada komputer atau layanan apa pun kecuali jika administrator mesin atau layanan telah secara eksplisit memberikan hak tersebut kepada GMSA.

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

GMSA hanya boleh digunakan jika diperlukan:

  • Sulit untuk melacak kembali tindakan kepada pengguna saat menggunakan GMSA. Setiap pengguna berbagi identitas run-as yang sama. Anda harus meninjau transkrip dan log sesi PowerShell untuk menghubungkan pengguna individual dengan tindakan mereka.

  • GMSA mungkin memiliki akses ke banyak sumber daya jaringan yang tidak perlu diakses oleh pengguna yang terhubung. Selalu coba batasi izin yang efektif dalam sesi JEA untuk mengikuti prinsip hak istimewa paling sedikit.

Catatan

Akun layanan terkelola grup hanya tersedia di komputer yang bergabung dengan domain menggunakan PowerShell 5.1 atau yang lebih baru.

Untuk informasi selengkapnya tentang mengamankan sesi JEA, lihat artikel pertimbangan keamanan.

Transkrip sesi

Disarankan agar Anda mengonfigurasi titik akhir JEA untuk merekam transkrip sesi pengguna secara otomatis. Transkrip sesi PowerShell berisi informasi tentang pengguna yang menyambungkan, jalankan sebagai identitas yang ditetapkan kepada mereka, dan perintah yang dijalankan oleh pengguna. Mereka dapat berguna bagi tim audit yang perlu memahami siapa yang membuat perubahan tertentu pada sistem.

Untuk mengonfigurasi transkripsi otomatis dalam file konfigurasi sesi, berikan jalur ke folder tempat transkrip harus disimpan.

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

Transkrip ditulis ke folder oleh akun Sistem Lokal, yang memerlukan akses baca dan tulis ke direktori. Pengguna standar seharusnya tidak memiliki akses ke folder. Batasi jumlah administrator keamanan yang memiliki akses untuk mengaudit transkrip.

Drive pengguna

Jika pengguna yang terhubung perlu menyalin file ke atau dari titik akhir JEA, Anda dapat mengaktifkan drive pengguna dalam file konfigurasi sesi. Drive pengguna adalah PSDrive yang dipetakan ke folder unik untuk setiap pengguna yang menyambungkan. Folder ini memungkinkan pengguna menyalin file ke atau dari sistem tanpa memberi mereka akses ke sistem file lengkap atau mengekspos penyedia FileSystem. Konten drive pengguna terus-menerus di seluruh sesi untuk mengakomodasi situasi di mana konektivitas jaringan mungkin terganggu.

MountUserDrive = $true

Secara default, drive pengguna memungkinkan Anda menyimpan maksimum 50MB data per pengguna. Anda dapat membatasi jumlah data yang dapat digunakan pengguna dengan bidang UserDriveMaximumSize .

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

Jika Anda tidak ingin data di drive pengguna persisten, Anda dapat mengonfigurasi tugas terjadwal pada sistem untuk membersihkan folder secara otomatis setiap malam.

Catatan

Drive pengguna hanya tersedia di PowerShell 5.1 atau yang lebih baru.

Untuk informasi selengkapnya tentang PSDrives, lihat Mengelola drive PowerShell.

Definisi peran

Definisi peran dalam file konfigurasi sesi menentukan pemetaan pengguna ke peran. Setiap pengguna atau grup yang disertakan dalam bidang ini diberikan izin ke titik akhir JEA saat terdaftar. Setiap pengguna atau grup dapat disertakan sebagai kunci dalam hashtable hanya sekali, tetapi dapat ditetapkan beberapa peran. Nama kemampuan peran harus menjadi nama file kemampuan peran, tanpa .psrc ekstensi.

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

Jika pengguna termasuk dalam lebih dari satu grup dalam definisi peran, mereka mendapatkan akses ke peran masing-masing. Ketika dua peran memberikan akses ke cmdlet yang sama, set parameter yang paling permisif diberikan kepada pengguna.

Saat menentukan pengguna atau grup lokal di bidang definisi peran, pastikan untuk menggunakan nama komputer, bukan localhost atau wildcard. Anda dapat memeriksa nama komputer dengan memeriksa $env:COMPUTERNAME variabel.

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

Urutan pencarian kemampuan peran

Seperti yang ditunjukkan pada contoh di atas, kemampuan peran dirujuk oleh nama dasar file kemampuan peran. Nama dasar file adalah nama file tanpa ekstensi. Jika beberapa kemampuan peran tersedia pada sistem dengan nama yang sama, PowerShell menggunakan urutan pencarian implisitnya untuk memilih file kemampuan peran yang efektif. JEA tidak memberikan akses ke semua file kemampuan peran dengan nama yang sama.

JEA menggunakan $env:PSModulePath variabel lingkungan untuk menentukan jalur mana yang akan dipindai untuk file kemampuan peran. Dalam setiap jalur tersebut, JEA mencari modul PowerShell valid yang berisi subfolder "RoleCapabilities". Seperti halnya mengimpor modul, JEA lebih memilih kemampuan peran yang dikirim dengan Windows ke kemampuan peran kustom dengan nama yang sama.

Untuk semua konflik penamaan lainnya, prioritas ditentukan oleh urutan di mana Windows menghitung file dalam direktori. Urutannya tidak dijamin sesuai abjad. File kemampuan peran pertama ditemukan yang cocok dengan nama yang ditentukan digunakan untuk pengguna yang menyambungkan. Karena urutan pencarian kemampuan peran tidak deterministik, sangat disarankan agar kemampuan peran memiliki nama file yang unik.

Aturan akses bersyarah

Semua pengguna dan grup yang disertakan dalam bidang RoleDefinitions secara otomatis diberikan akses ke titik akhir JEA. Aturan akses bersyarat memungkinkan Anda memperbaiki akses ini dan mengharuskan pengguna berada dalam grup keamanan tambahan yang tidak memengaruhi peran tempat mereka ditetapkan. Ini berguna ketika Anda ingin mengintegrasikan solusi manajemen akses istimewa just-in-time, autentikasi kartu pintar, atau solusi autentikasi multifaktor lainnya dengan JEA.

Aturan akses bersyarat ditentukan di bidang RequiredGroups dalam file konfigurasi sesi. Di sana, Anda dapat menyediakan hashtable (berlapis opsional) yang menggunakan kunci 'And' dan 'Or' untuk membuat aturan Anda. Berikut adalah beberapa contoh cara menggunakan bidang ini:

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

Catatan

Aturan akses bersyarkat hanya tersedia di PowerShell 5.1 atau yang lebih baru.

Properti lainnya

File konfigurasi sesi juga dapat melakukan semua yang dapat dilakukan file kemampuan peran, hanya tanpa kemampuan untuk memberikan akses pengguna yang terhubung ke perintah yang berbeda. Jika Anda ingin mengizinkan semua pengguna mengakses cmdlet, fungsi, atau penyedia tertentu, Anda dapat melakukannya dengan benar dalam file konfigurasi sesi. Untuk daftar lengkap properti yang didukung dalam file konfigurasi sesi, jalankan Get-Help New-PSSessionConfigurationFile -Full.

Menguji file konfigurasi sesi

Anda dapat menguji konfigurasi sesi menggunakan cmdlet Test-PSSessionConfigurationFile . Disarankan agar Anda menguji file konfigurasi sesi jika Anda telah mengedit .pssc file secara manual. Pengujian memastikan sintaksnya benar. Jika file konfigurasi sesi gagal dalam pengujian ini, file tidak dapat didaftarkan pada sistem.

Contoh file konfigurasi sesi

Contoh berikut menunjukkan cara membuat dan memvalidasi konfigurasi sesi untuk JEA. Definisi peran dibuat dan disimpan dalam variabel untuk kenyamanan dan keterbacaan $roles . itu bukan persyaratan untuk melakukannya.

$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

Memperbarui file konfigurasi sesi

Untuk mengubah properti konfigurasi sesi JEA, termasuk pemetaan pengguna ke peran, Anda harus membatalkan pendaftaran. Kemudian, daftarkan ulang konfigurasi sesi JEA menggunakan file konfigurasi sesi yang diperbarui.

Langkah berikutnya