Melindungi kredensial dalam Konfigurasi yang Diinginkan Negara menggunakan sertifikat

8

Saya baru mengenal DSC dan mencoba mencari cara untuk membuatnya bekerja untuk kita.

Yang saya terjebak adalah bagaimana kredensial sebenarnya dilindungi. Pemahaman saya saat ini adalah bahwa itu tidak terlalu bagus.

Tiga masalah besar adalah ini. Bagaimana menggunakan kunci publik sebagai sumber dekripsi benar-benar melindungi kredensial itu? Komputer mana yang membutuhkan sertifikat dalam skenario push and pull? Apa praktik terbaik untuk menangani kredensial sehubungan dengan masalah ini?

Menggunakan kunci publik sertifikat baik untuk mengotentikasi sumber transmisi. Tetapi menggunakannya sebagai kunci dekripsi berarti bahwa akses ke kunci publik sertifikat menentukan akses ke kata sandi.

Jika Anda harus mendorong sertifikat ke setiap komputer yang perlu mendekripsi file MOF, apa yang ada untuk menghentikan pengguna rata-rata mendapatkan akses ke sertifikat dan mampu mendekripsi MOF? Mengatakan keamanan direktori aktif berarti Anda juga membiarkannya dalam teks biasa dan hanya mengandalkan keamanan AD.

Adakah yang bisa membantu saya mengatasi masalah ini?

Simon Gill
sumber

Jawaban:

11

Ide Dasar

  1. Tuan rumah yang akan dikonfigurasi harus memiliki sertifikat yang diinstal (dengan kunci pribadi).
  2. Saat mengatur manajer konfigurasi lokal node target (LCM), Anda harus menentukan Thumbprint sertifikat tersebut. Ini memberitahu LCM sertifikat lokal mana (atau lebih tepatnya kunci priv sertifikat mana) yang akan digunakan untuk mendekripsi kredensial.
  3. Konfigurasi DSC Anda harus mengarah ke file yang hanya berisi sertifikat (kunci publik) dari sertifikat yang sama. Ini dilakukan dalam data konfigurasi, sehingga Anda dapat menentukan sertifikat berbeda untuk setiap node, jika Anda bermaksud menggunakan konfigurasi yang sama untuk masing-masing node.
  4. Ketika MOF dihasilkan, kunci publik digunakan oleh mesin yang menghasilkan MOF untuk meng - enkrip kredensial.
  5. Ketika LCM pada node target mengambil konfigurasi dari server tarik (dalam bentuk MOF), ia menggunakan kunci pribadi sertifikat yang diidentifikasi oleh cap jempol untuk mendekripsi objek kredensial.

Dalam Beberapa Detail

Kunci publik tidak dapat digunakan untuk mendekripsi, dan Anda tidak membagikan kunci pribadi dengan generasi konfigurasi atau mesin distribusi.

Sepertinya Anda sedang mempertimbangkan alur kerja seolah-olah ada satu sertifikat yang digunakan untuk semua kredensial. Anda bisa melakukan itu, tetapi saya pikir idenya adalah bahwa setiap node memiliki pasangan kunci sendiri.

"Pengguna biasa" yang saya maksudkan adalah pengguna non-administratif, tidak dapat mengekspor kunci pribadi sertifikat (kecuali diberikan izin), dan karena Anda tidak akan memindahkan kunci ini, ada sedikit peluang untuk itu terkena. Jika pengguna adalah administrator, maka tentu saja mereka memiliki akses.

Jauh lebih mungkin bahwa menyimpan kredensial teks biasa dalam konfigurasi akan diekspos apakah itu melalui konfigurasi powershell yang belum diproses, atau MOF yang dihasilkan. Jika tidak dienkripsi, maka Anda harus mengamankan:

  • Lokasi sistem file / jaringan berbagi tempat konfigurasi disimpan
  • Fs / bagikan tempat MOF yang dihasilkan disimpan
  • Fs / bagikan tempat Anda menyimpan MOF di server tarik
  • Pastikan server penarik berjalan di atas SSL (Anda harus tetap melakukannya)
  • Pastikan ada otentikasi di server Tarik, jika tidak, kueri anonim apa pun dapat mengambil konfigurasi dengan kredensial terbuka.

Saya pikir kredensial aman di DSC dilakukan dengan cukup baik, tapi itu sedikit cobaan untuk mengaturnya pada awalnya.

AD PKI membuat ini lebih mudah

Jika Anda menggunakan Enterprise PKI di lingkungan AD Anda, ada kemungkinan besar bahwa setiap mesin diatur untuk pendaftaran otomatis dengan CA, sehingga sudah memiliki sertifikat khusus mesin yang memperbarui sendiri. Ini memiliki pengaturan yang diperlukan untuk digunakan untuk tujuan ini.

Bagaimana Saya Menerapkan Ini

Karena alat ini sangat kosong untuk DSC sekarang, kemungkinan Anda akan membuat alur kerja Anda sendiri untuk menghasilkan konfigurasi dan menulis skrip untuk membantu.

Dalam kasus saya, saya punya skrip terpisah untuk menghasilkan LCM meta MOF dan untuk menghasilkan konfigurasi aktual node, jadi langkah-langkah saya untuk mengamankan kredensial dibagi di antara keduanya.

Dalam skrip generasi LCM, saya sebenarnya meminta CA untuk domain untuk menemukan sertifikat yang sesuai dengan nama host mesin yang sedang dikonfigurasi. Saya mengambil sertifikat (CA tidak memiliki kunci pribadi, hanya publik) dan menyimpannya ke jalur untuk digunakan nanti. Meta MOF dikonfigurasikan untuk menggunakan cap jempol dari sertifikat.

Dalam skrip konfigurasi simpul saya mengatur data konfigurasi untuk menggunakan file cert (hanya kunci publik saja). Ketika MOF dihasilkan, kredensial dienkripsi dengan sertifikat itu dan hanya dapat didekripsi dengan kunci pribadi pada node tertentu.

Referensi

Saya merujuk pengalaman saya sendiri di atas, tetapi artikel ini sangat membantu di sepanjang jalan: https://devblogs.microsoft.com/powershell/want-to-secure-credentials-in-windows-powershell-desired-state- konfigurasi

Saya harus mengisi beberapa lubang sendiri. Satu hal yang perlu diperhatikan dalam contoh yang ditampilkan, adalah bahwa mereka menyediakan Thumprintkonfigurasi node. Ini tidak diperlukan untuk konfigurasi simpul; mereka hanya membuat konfigurasi dan LCM meta config secara bersamaan dan menggunakan data konfigurasi untuk menyimpan cap jempol untuk digunakan di sana.

Paragraf terakhir itu mungkin membingungkan, tetapi lebih masuk akal dalam konteks artikel. Jika Anda tidak membuat kedua konfigurasi sekaligus, contohnya tampak aneh. Saya mengujinya; Thumbprinttidak diperlukan dalam data konfigurasi untuk mengenkripsi kredensial. CertificateFilediperlukan, dan itu harus dalam data konfigurasi, jadi jika Anda tidak menggunakan data konfigurasi sebelumnya, Anda akan sekarang.

briantis
sumber