Sedikit latar belakang
Setelah kuliah tentang HighLoad ++ 2017. Saya melihat laporan ini, "Bagaimana kami memecat admin," dalam rekaman. Pembicara mengatakan bahwa semua perusahaan web memiliki masalah dengan kata sandi, dan saya punya ide bagaimana menyelesaikannya. Kemungkinan besar seseorang sudah melakukannya, tetapi jujur saja, saya tidak tahu, saya hanya ingin menggambarkannya, maka mungkin seseorang akan melakukannya atau entah bagaimana saya akan melakukannya sendiri. Saya harap jika seseorang memutuskan untuk melakukan sesuatu seperti ini, itu akan menjadi opensource.
Sebenarnya deskripsi masalah dan cara mengatasinya
Apa masalahnya, betapapun anehnya kata sandi itu sendiri, atau lebih tepatnya, sehingga karyawan yang tidak bertanggung jawab tidak mengambilnya dari perusahaan.
Ada dua opsi untuk menyelesaikan masalah ini.
- Poskan semua perubahan ke situs secara pribadi ke kepala perusahaan.
- Untuk menciptakan dan melakukan sesuatu.
Secara umum, kami bertindak berdasarkan opsi kedua. Yang pertama sulit dan mahal jika perusahaan terdiri dari sejumlah kecil orang.
Apa yang harus dilakukan sudah diputuskan, sekarang Anda perlu memutuskan bagaimana melakukannya.
Di sini sekaligus ide paling sederhana, mengapa tidak membuat proxy? Yah, kemungkinan besar proxy yang super. Skema kerja pada dasarnya sederhana dan saya menggambar di bawah ini.
Gambar 1 - Skema umum sistemSeperti yang bisa dilihat dari diagram dan ide itu sendiri, elemen utama di sini adalah server proxy.
Tugasnya adalah sebagai berikut:
- Sejalan dengan itu, terima lalu lintas, atau bahkan bekerja pada level perintah SSH dan SFTP, untuk permulaan, dan kirim respons dari server klien ke spesialis.
- Otentikasi dan otorisasi seorang spesialis
- Memeriksa legitimasi tim, ini bisa dilakukan nanti.
Struktur server proxy itu sendiri adalah sebagai berikut:
Gambar 2 - Blok diagram komponen super proxyProxy - langsung mengarahkan lalu lintas melalui SSH, (S) FTP, HTTP, HTTPS
CA (Kontrol Akses) - Mengontrol akses spesialis ke sumber daya klien.
SAP (Sever Admin Panel) - Langsung server yang berkomunikasi dengan administrator melalui panel kontrol.
Inti - Inti dari sistem itu sendiri adalah mengelola permintaan antara modul dan manajemen model.Saya percaya bahwa akses harus ditangani secara terpisah, karena semuanya dimulai karena ini.
Semua pengguna termasuk dalam kebijakan grup, kebijakan grup menentukan aturan untuk akses ke server klien, serta aturan yang dipatuhi administrator sistem. Kebijakan grup memiliki struktur hierarkis, setiap tingkat atas memiliki kekuatan yang sama dengan tingkat yang lebih rendah. Sejak awal ada kebijakan '.', Ini mencakup semua izin untuk semuanya dan mungkin termasuk satu pengguna, administrator utama. Lalu ada dua kelompok untuk kebijakan, administrator sistem dan proyek.
Tabel pivot - administrator dan hak-hak merekaJudul peran | Hak akses | |
---|
Administrator Kebijakan Grup | Pengeditan Pengguna Grup | |
Administrator Kebijakan Grup | Buat Kebijakan Grup | Membuat Menghapus dan Mengedit Pengguna dalam Kebijakan Grup |
Administrator manajemen pengguna | Menghapus pengguna dari Kebijakan Grup | Buat hapus dan edit pengguna |
Administrator cadangan | Membaca informasi tentang pengguna dan administrator | Entri Kebijakan Grup Membaca |
Administrator kepala | Yang lainnya, serta mengedit dan menghapus kebijakan grup | Paksa perubahan kata sandi di server klien |
Kebijakan grup itu sendiri berisi catatan server yang menerapkan kebijakan ini.
Dan pengguna memiliki aturan berikut, yang ditetapkan untuk setiap pengguna atau grup secara terpisah, pada kenyataannya, ini adalah nilai Boolean yang menentukan apakah objek memiliki akses HTTP / HTTPS ke panel kontrol sumber daya (panel admin), SFTP / FTP, akses SSH.
Sekarang beberapa kata tentang panel kontrol dan klien.
Panel kontrol atau semuanya jelas, tetapi Anda perlu menulis lagi, itu akan jelas.
Panel kontrol Diperlukan langsung untuk mengelola kebijakan grup dan server secara keseluruhan, super proxy. Didistribusikan sebagai aplikasi mandiri atau layanan web.
Dengan demikian, administrator memiliki akses ke panel kontrol.
Klien sederhana dalam penampilan, rumit di dalam.
Klien membutuhkan aplikasi, dalam hal HTTP (S), murni secara teoritis, aplikasi ini dapat berupa browser yang dikonfigurasi secara langsung untuk bekerja melalui server proxy, dan server proxy kami harus memasukkan dirinya ke lalu lintas. Secara umum, kemungkinan besar, perlu untuk mengembangkan aplikasi terpisah yang akan bekerja melalui SSH, (S) FTP, HTTP (S), dengan server klien, melalui server super-proxy kami, atau bahkan akan lebih mudah untuk menginstal dan berkomunikasi dengan server klien itu sendiri adalah server super-proxy, dan pada klien yang diinstal pada komputer, seluruh proses hanya akan ditiru oleh spesialis.
Perhatikan contoh HTTP (S).
- Klien mengirim permintaan untuk komunikasi dengan klien ke server proxy.
- Server proxy super memungkinkan atau tidak, jika memungkinkan, server proxy super itu sendiri meningkatkan koneksi dan masuk ke panel kontrol.
- Server proxy super langsung menerima halaman utama panel admin.
- Server proxy super melewati halaman ini ke klien, mengganti alamat sumber daya klien dengan spidol khusus.
- Spesialis mengikuti tautan atau mengisi bidang di browser dan mengirimkan formulir. Data masuk ke server proxy super.
- Server proxy super menggantikan token kembali ke alamat sumber daya klien dan, karenanya, mengirimkannya langsung ke sumber daya klien itu sendiri.
Dengan bekerja pada SSH, Anda dapat mentransfer teks murni. Dan langsung dari server super-proxy ke sumber daya klien, koneksi SSH normal naik.
Sesuatu seperti ini. Saya menantikan tanggapan Anda di komentar, dan tautan ke repositori, jika seseorang memutuskan untuk membuat sistem seperti itu.