Saya mencoba memodelkan modul Otentikasi Pengguna untuk database MS SQL Server yang akan menjadi ujung belakang Aplikasi Delphi UI. Pada dasarnya, saya ingin memiliki akun pengguna di mana pengguna hanya memiliki satu grup. Grup dapat memiliki "n" jumlah hak.
Saya juga ingin menambahkan riwayat kata sandi ke database, karena pengguna akan diminta untuk mengubah kata sandi mereka berdasarkan pengaturan aplikasi (misalnya, setiap 90 hari).
Saya juga ingin mencatat acara untuk setiap kali pengguna masuk dan keluar. Saya dapat memperpanjang ini untuk acara tambahan di masa depan.
Di bawah ini Anda akan menemukan celah pertama saya di sana. Tolong beri tahu saya saran untuk memperbaikinya, karena ini adalah pertama kalinya saya melakukan ini.
Apakah Anda melihat perlunya atribut tambahan untuk keamanan berbasis peran dan kendala untuk aturan kata sandi / periode kedaluwarsa?
sumber
Jawaban:
Berdasarkan persyaratan yang Anda tentukan, model Anda berada dalam kondisi yang cukup baik.
Berikut beberapa saran untuk peningkatan:
Anda tidak mengatakannya secara eksplisit, jadi sulit mengatakannya - tetapi sepertinya Anda mungkin menyimpan kata sandi pengguna secara langsung. Ini akan sangat buruk! Jika Anda melihat pada database otentikasi umum, kata sandi disimpan dalam bentuk terenkripsi. Anda sering melihat
password
kolom danpassword_salt
kolom.USER_LOGS
Tabel Anda memilikiEvent
kolom. Anda tidak jelas tentang bagaimana ini akan diisi. Haruskah adaEVENT_TYPE
tabelUSER_LOGS
referensi mana ? Ini mungkin membuat pelaporan lebih ramah. Peristiwa umum akan mencakup masuk, keluar, kata sandi gagal, perubahan kata sandi, setel ulang kata sandi, kunci-keluar, buka kunci, ...Anda
GROUP_RIGHTS
tabel tidak menunjukkan yang diberikan hak. Untuk tujuan jejak audit, orang sering mencatat siapa yang mengubah catatan apa dan kapan. Itu mungkin tidak menjadi masalah bagi Anda.Berikut adalah beberapa pertanyaan seputar persyaratan bisnis yang Anda nyatakan, yang berbeda dari pola keamanan berbasis peran "buku teks" dalam beberapa cara:
Anda yakin ingin pengguna hanya dalam satu grup? Keuntungan dari keamanan berbasis peran adalah bahwa perannya cenderung statis, sedangkan orang-orang yang memenuhi peran cukup sering datang dan pergi. Termasuk dalam hal ini adalah bahwa beberapa orang sering "memakai dua topi".
Desain Anda hanya untuk hibah. Beberapa sistem termasuk hibah dan pencabutan . Ini memungkinkan Anda untuk mengatakan bahwa hak yang tersedia secara luas tidak tersedia untuk kelompok tertentu.
Anda memiliki pengguna dan akun yang muncul seperti
USERS
dalam desain Anda. Sering ada perbedaan antara orang dan ID pengguna . Beberapa ID pengguna untuk tim atau mesin dan beberapa orang memiliki beberapa ID pengguna untuk tujuan yang berbeda. Apakah ini perbedaan yang akan membantu Anda?sumber
Saya pikir operator bitwise adalah cara terbaik untuk menerapkan izin pengguna. Di sini saya menunjukkan bagaimana kita dapat mengimplementasikannya dengan Mysql.
Di bawah ini adalah tabel sampel dengan beberapa data sampel:
Tabel 1 : Tabel izin untuk menyimpan nama izin bersamaan dengan itu seperti 1,2,4,8..etc (kelipatan 2)
Masukkan beberapa data sampel ke dalam tabel.
Tabel 2 : Tabel pengguna untuk menyimpan id, nama, dan peran pengguna. Peran akan dihitung sebagai jumlah izin.
Contoh:
Jika pengguna 'Ketan' memiliki izin 'Tambah Pengguna' (bit = 1) dan 'Hapus Blog' (bit-64) maka perannya adalah 65 (1 + 64).
Jika pengguna 'Mehata' memiliki izin 'Tampilan Blog' (bit = 128) dan 'Hapus Pengguna' (bit-4) maka perannya adalah 132 (128 + 4).
Contoh data-
Memberi izin pengguna Setelah masuk jika kami ingin memuat izin pengguna daripada yang dapat kami tanyakan di bawah ini untuk mendapatkan izin:
Di sini user.role "&" permit.bit adalah operator Bitwise yang akan memberikan output sebagai -
Jika kami ingin memeriksa cuaca, pengguna tertentu memiliki izin edit pengguna atau tidak-
Output = Tidak ada baris.
Anda dapat melihat juga: http://goo.gl/ATnj6j
sumber