Bagikan melalui


Memilih Opsi QOS Keamanan

Opsi QOS keamanan diteruskan sebagai bagian dari parameter SecurityQOS yang diberikan ke fungsi RpcBindingSetAuthInfoEx . Gunakan praktik terbaik berikut.

Gunakan Autentikasi Timah

Autentikasi timbal balik sejati hanya tersedia untuk penyedia keamanan tertentu: Negosiasi (ketika menegosiasikan Kerberos), Kerberos, dan Schannel. NTLM tidak mendukung autentikasi bersama. Menggunakan autentikasi bersama mengharuskan nama prinsipal server yang terbentuk dengan baik disediakan. Banyak pengembang menggunakan praktik keamanan yang salah berikut: Server dipanggil untuk meminta nama utamanya (RpcMgmtInqServerPrincName), dan kemudian mereka secara membabi buta meminta autentikasi bersama menggunakan nama utama tersebut. Pendekatan ini memutus seluruh gagasan autentikasi bersama; gagasan autentikasi bersama adalah bahwa hanya server tertentu yang dipanggil karena mereka dipercaya untuk mengurai dan menangani data Anda. Dengan menggunakan praktik keamanan yang salah yang baru saja dijelaskan, pengembang memberikan data mereka kepada siapa pun yang cukup cerdas untuk mengembalikan namanya.

Sebagai contoh, jika perangkat lunak klien hanya boleh memanggil server yang berjalan di bawah akun Joe, Pete, atau Alice, fungsi RpcMgmtInqServerPrincName harus dipanggil, dan nama yang dikirim kembali harus diperiksa. Jika joe, Pete atau Alice, autentikasi bersama harus diminta menggunakan nama utama server mereka. Ini memastikan kedua bagian percakapan masuk ke prinsipal yang sama.

Jika perangkat lunak klien harus memanggil layanan yang berjalan di bawah akun Joe saja, langsung buat nama utama server Joe dan lakukan panggilan. Jika server bukan Joe, panggilan akan gagal.

Sering kali, layanan berjalan sebagai layanan sistem Windows, yang berarti mereka berjalan di bawah akun komputer. Autentikasi bersama dan pembuatan nama prinsipal server masih disarankan.

Gunakan ImpersonationType Terendah yang Memungkinkan Panggilan untuk Dilalui

Praktik Terbaik ini cukup jelas. Bahkan jika autentikasi bersama digunakan, jangan berikan server hak lebih dari yang diperlukan; server yang sah mungkin telah disusupi, dan meskipun data yang Anda kirim jatuh ke tangan yang salah dalam kasus seperti itu, setidaknya server tidak akan dapat mengakses data lain di jaringan atas nama Anda. Beberapa server akan menolak panggilan yang tidak memiliki informasi yang memadai untuk ditentukan, dan mungkin meniru, pemanggil. Selain itu, ketahuilah bahwa beberapa urutan protokol mendukung keamanan tingkat transportasi (ncacn_np dan ncalrpc). Dalam kasus seperti itu, server selalu dapat meniru Anda jika Anda menentukan tingkat peniruan yang cukup tinggi melalui parameter NetworkOptions saat Anda membuat handel pengikatan.

Akhirnya, beberapa penyedia keamanan atau transportasi dapat secara transparan menabrak ImpersonationType ke tingkat yang lebih tinggi dari yang ditentukan. Saat mengembangkan program, pastikan Anda mencoba melakukan panggilan dengan ImpersonationType yang dimaksudkan dan memeriksa apakah Anda mendapatkan ImpersonationType yang lebih tinggi di server.