Keamanan Dan Hak Akses Pipa Bernama

Keamanan Windows memungkinkan Anda mengontrol akses ke pipa bernama. Untuk informasi selengkapnya tentang keamanan, lihat Model Kontrol Akses.

Anda dapat menentukan deskriptor keamanan untuk pipa bernama saat Anda memanggil fungsi CreateNamedPipe . Deskriptor keamanan mengontrol akses ke ujung klien dan server dari pipa bernama. Jika Anda menentukan NULL, pipa bernama mendapatkan pendeskripsi keamanan default. ACL dalam deskriptor keamanan default untuk pipa bernama memberikan kontrol penuh ke akun LocalSystem, administrator, dan pemilik pembuat. Mereka juga memberikan akses baca kepada anggota grup Semua Orang dan akun anonim.

Untuk mengambil deskriptor keamanan pipa bernama, panggil fungsi GetSecurityInfo . Untuk mengubah pendeskripsi keamanan pipa bernama, panggil fungsi SetSecurityInfo .

Saat utas memanggil CreateNamedPipe untuk membuka handel ke akhir server dari pipa bernama yang ada, sistem melakukan pemeriksaan akses sebelum mengembalikan handel. Pemeriksaan akses membandingkan token akses utas dan hak akses yang diminta terhadap DACL di deskriptor keamanan pipa bernama. Selain hak akses yang diminta, DACL harus mengizinkan utas panggilan FILE_CREATE_PIPE_INSTANCE akses ke pipa bernama.

Demikian pula, ketika klien memanggil fungsi CreateFile atau CallNamedPipe untuk terhubung ke akhir klien dari pipa bernama, sistem melakukan pemeriksaan akses sebelum memberikan akses ke klien.

Handel yang dikembalikan oleh fungsi CreateNamedPipe selalu memiliki akses SYNCHRONIZE. Ini juga memiliki GENERIC_READ, GENERIC_WRITE, atau keduanya, tergantung pada mode buka pipa. Berikut ini adalah hak akses untuk setiap mode terbuka.

Mode buka Hak akses
PIPE_ACCESS_DUPLEX (0x00000003) FILE_GENERIC_READ, FILE_GENERIC_WRITE, dan SINKRONKAN
PIPE_ACCESS_INBOUND (0x00000001) FILE_GENERIC_READ dan SINKRONKAN
PIPE_ACCESS_OUTBOUND (0x00000002) FILE_GENERIC_WRITE dan SINKRONKAN

 

FILE_GENERIC_READ akses untuk pipa bernama menggabungkan hak untuk membaca data dari pipa, membaca atribut pipa, membaca atribut yang diperluas, dan membaca DACL pipa.

FILE_GENERIC_WRITE akses untuk pipa bernama menggabungkan hak untuk menulis data ke pipa, menambahkan data ke dalamnya, menulis atribut pipa, menulis atribut yang diperluas, dan membaca DACL pipa. Karena FILE_APPEND_DATA dan FILE_CREATE_PIPE_INSTANCE memiliki definisi yang sama, jadi FILE_GENERIC_WRITE memungkinkan izin untuk membuat pipa. Untuk menghindari masalah ini, gunakan hak individual alih-alih menggunakan FILE_GENERIC_WRITE.

Anda dapat meminta hak akses ACCESS_SYSTEM_SECURITY ke objek pipa bernama jika Anda ingin membaca atau menulis SACL objek. Untuk informasi selengkapnya, lihat Daftar Kontrol Akses (ACL) dan Hak Akses SACL.

Untuk mencegah pengguna jarak jauh atau pengguna pada sesi layanan terminal yang berbeda mengakses pipa bernama, gunakan SID masuk pada DACL untuk pipa. SID masuk juga digunakan dalam logon run-as; ini adalah SID yang digunakan untuk melindungi namespace objek per sesi. Untuk informasi selengkapnya, lihat Mendapatkan SID Masuk di C++.