Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Mengatur Izin Akses Basis Data

Keamanan server terutama bergantung pada seberapa benar Anda dapat mengonfigurasi izin akses pada objek. Memberikan izin yang berlebihan kepada pengguna dapat menyebabkan banyak masalah. Tidak, pengguna tidak akan menggunakan kesalahan Anda. Sebaliknya, setiap peretas atau saya akan melakukan ini. Dalam hal ini, Anda dapat melupakan tabel Anda dengan data atau seluruh database.

Untuk beberapa alasan, keamanan database adalah perlindungan dari luar, seperti hacker. Namun, ini sangat jarang terjadi. Saya seorang programmer di sebuah perusahaan besar dan seorang administrator bahkan tidak berpikir untuk melindungi port server, di mana semuanya terbuka. Ada banyak database, program, dan bahkan server FTP di satu server dan tidak pernah diretas selama 5 tahun terakhir. Untungnya, saya membujuk administrator untuk menyebarkan server WEB pada perangkat keras yang terpisah. Jika tidak, jika seseorang mengetahui alamat IP server utama kami, pemalas mana pun akan dapat meretasnya. Baik database maupun Windows tidak ditambal selama beberapa tahun.

Namun, masalah internal muncul setiap hari karena kebijakan keamanan yang salah. Semua pengguna masuk dengan hak administrator dan dapat membuat apa pun yang mereka inginkan. Ini adalah masalah nyata karena izin yang berlebihan memungkinkan pemalas untuk menunjukkan buta huruf total mereka. Oleh karena itu, kami akan mempertimbangkan keamanan terlepas dari mana ancaman itu berasal – dari peretas atau pengguna.

Pada artikel ini, kita akan mempertimbangkan semua dasar-dasar perlindungan keamanan yang diperlukan dari peretas dan pengguna. Saya memilih MS SQL Server sebagai contoh karena berisi semua yang tersedia di database lain (Oracle, MySQL, dll.) dan memiliki kemampuan manajemen keamanan tambahan. Seseorang mungkin berpikir bahwa ini membuat MS lebih curam. Namun, terkadang, fitur tambahan bisa berlebihan sehingga menyebabkan masalah.

Peran server

Di Windows dan sistem operasi lain, ada grup dan pengguna untuk mengelola izin. Kami dapat menggabungkan pengguna ke dalam grup dan memberikan hak kepada mereka semua sekaligus, yang jauh lebih mudah daripada memberikan hak kepada setiap pengguna satu per satu. Untuk tujuan ini, dalam database, ada konsep "peran".

Asumsikan bahwa 100 pengguna memiliki izin untuk membaca data dari tabel tertentu. Memberi setiap pengguna izin ini merepotkan. Jauh lebih mudah untuk membuat peran yang diizinkan untuk dibaca, dan kemudian menambahkan semua pengguna yang diperlukan ke dalamnya. Hasilnya mirip dengan pengelompokan.

Di SQL Server, ada dua jenis peran:server dan database. Peran server telah ditentukan sebelumnya dan tidak dapat diubah.

Buka cabang peran Keamanan/Server di Manajer Perusahaan sehingga Anda dapat melihat daftar peran yang tersedia di bagian kanan jendela. Deskripsi mendefinisikan apa yang dapat dilakukan pengguna dengan peran yang sesuai.

Peran server di MS SQL Server dan jendela manajer peran

Untuk menambahkan pengguna yang sudah ada ke peran, klik dua kali baris peran. Di jendela yang muncul, Anda dapat menambahkan pengguna ke peran atau menghapusnya. Tab Izin menjelaskan secara rinci apa yang dapat dilakukan setiap pengguna.

Pengguna

Untuk mengelola pengguna, buka cabang Keamanan/Login di Manajer Perusahaan. Di bagian kanan, Anda akan melihat daftar semua pengguna server. Secara default, akses diberikan kepada administrator domain dan akun login bawaan seperti sa.

Untuk menambahkan pengguna baru, klik kanan di mana saja di bagian kanan jendela yang kosong dan pilih Login baru di menu yang muncul. Di bagian paling atas jendela, pilih nama pengguna. Jika Anda perlu memilih domain atau pengguna komputer yang ada, klik tombol (…) di sebelah kanan bidang masukan dan Anda akan melihat kotak pencarian pengguna di domain tersebut.

Menambahkan pengguna baru

Di bawah ini, Anda dapat memilih jenis otentikasi – Windows atau SQL Server. Jika Anda memilih Windows, Anda tidak perlu menentukan kata sandi karena server akan mengambilnya dari sistem. Namun, Anda dapat beralih ke Berikan akses (izinkan akses) atau Tolak akses (larangan). Dalam kasus terakhir, pengguna akan terdaftar di database, tetapi mereka tidak akan dapat terhubung – itu dilarang.

Jika Anda memilih otentikasi SQL Server, Anda perlu mengatur kata sandi karena dalam kasus ini, itu akan disimpan dalam tabel sistem server database. Harap dicatat bahwa meskipun hanya otentikasi Windows yang ditentukan dalam pengaturan server, Anda dapat membuat catatan server SQL, tetapi Anda tidak akan dapat masuk ke sistem dengan catatan ini.

Pada tab Peran Server, Anda dapat menentukan peran server apa yang akan diberikan kepada pengguna. Oleh karena itu, bahkan pada tahap pembuatan, Anda dapat menambahkan pengguna ke peran yang diperlukan.

Akses pengguna ke database

Pada tab Akses Database, tentukan database yang dapat digunakan pengguna. Di sini, jendela dibagi menjadi dua bagian:di bagian atas, Anda dapat memilih database yang aksesnya diizinkan, dan di daftar bawah, Anda dapat memilih peran database. Peran ini dalam database akan menentukan izin pengguna. Beberapa peran dapat diberikan kepada satu pengguna.

Buat akun qq, yang akan memiliki akses ke database Northwind. Ini adalah database pengujian standar yang dibuat saat menerapkan server.

Simpan perubahannya.

Sekarang, buka cabang Databases/Northwind/Users dan lihat daftar pengguna yang diizinkan untuk mengakses database yang dipilih. Harap dicatat bahwa ada akun qq di sini. Tidak ada akun di database lain karena akses ke mereka untuk pengguna baru kami dilarang.

Peran basis data

Setiap database dapat memiliki perannya sendiri, yang menentukan izin akses pada objek. Banyak administrator tidak suka repot dengan izin ini. Dengan demikian, mereka menginstal publik default bawaan, yang memungkinkan hampir semuanya. Jika ada kekurangan izin untuk peran publik, cukup tambahkan pengguna ke peran server Administrator Sistem. Dalam hal ini, database menjadi rentan.

Setiap pengguna harus diberikan izin mereka sendiri dan yang diperlukan. Yang tidak diperbolehkan harus dilarang. Role yang sudah ada di server tidak boleh digunakan karena izinnya terbuka untuk semua orang. Bahkan disarankan untuk menghapus semuanya, terutama yang publik.

Membuat peran

Untuk membuat peran database baru, klik kanan cabang Databases/Database Name/Roles. Di menu yang muncul, pilih Peran database baru. Properti Peran Basis Data – Jendela Peran Baru terbuka. Di bagian atas jendela, ketik nama peran.

Misalnya, kami ingin membuat peran untuk akuntan. Untuk melakukannya, ketik Buh di bidang Nama.

Membuat peran basis data

Di bawah, pilih jenis peran, misalnya, yang standar. Di tengah jendela, ada daftar pengguna yang akan ditambahkan ke peran. Sejauh ini, daftar itu kosong. Namun, jika kita klik Tambah, kita akan menambahkan pengguna, misalnya, ke akun qq yang dibuat sebelumnya. Tidak ada lagi yang harus dilakukan pada tahap menciptakan peran. Simpan perubahan dengan mengklik OK.

Izin akses

Sekarang, kita akan melihat bagaimana kita dapat mengatur hak akses. Klik dua kali peran Buh yang dibuat untuk membuka jendela pengeditan. Harap dicatat bahwa tombol Izin tersedia sekarang. Hanya ketika peran terdaftar di database, kami dapat mengubah haknya. Klik tombol ini untuk membuka jendela Database Role Properties.

Menyetel izin akses untuk peran

Di bagian atas jendela, ada daftar peran database sehingga Anda dapat dengan cepat beralih di antara mereka. Sekarang, peran Buh dipilih. Di tengah jendela, ada kotak besar dengan kolom berikut:

  • Objek – nama objek;
  • Pemilik – pemilik suatu objek;
  • SELECT – izin untuk melihat data atau menjalankan pernyataan SELECT. Ini hanya tersedia untuk tabel dan tampilan;
  • INSERT – izin untuk menambahkan data atau menjalankan pernyataan INSERT. Ini hanya tersedia untuk tabel dan tampilan;
  • UPDATE – izin untuk mengubah data atau menjalankan pernyataan UPDATE. Ini hanya tersedia untuk tabel dan tampilan;
  • Izin HAPUS untuk menghapus data atau menjalankan pernyataan DELETE. Ini hanya tersedia untuk tabel dan tampilan;
  • EXEC – izin untuk menjalankan prosedur dan fungsi tersimpan. Ini hanya tersedia untuk prosedur dan fungsi tersimpan;
  • DRI (integritas referensial deklaratif). Ini hanya tersedia untuk tabel, tampilan, dan fungsi.

Tidak ada izin untuk peran baru. Untuk dapat melihat tabel, misalnya Kategori, centang kotak di persimpangan baris Kategori dan kolom PILIH. Anda akan melihat centang hijau di kotak, yang berarti izin. Klik kedua mengubah centang menjadi tanda palang merah dan berarti larangan. Ini dapat diperlukan jika Anda memberikan izin kepada pengguna dan menambahkannya ke peran lain, di mana akses ke tindakan yang dipilih diizinkan. Klik ketiga menghapus izin apa pun pada tindakan dan membiarkan kotak kosong. Ini berarti tidak ada akses; namun, itu dapat didelegasikan jika pengguna ditambahkan ke peran lain dengan izin pada objek atau izin secara eksplisit ditentukan.

Jika Anda memilih baris dengan objek tabel atau tampilan, tombol Kolom tersedia di bagian bawah jendela. Misalnya Anda memilih tabel dan mengklik tombol ini. Jendela terbuka, di mana Anda dapat mengatur izin untuk masing-masing kolom tabel.

Menyetel izin kolom

Ini memang kemungkinan besar karena beberapa kolom yang bertanggung jawab atas integritas database tidak boleh diubah oleh pengguna atau peretas. Lebih baik untuk melarang operasi UPDATE atau SELECT (jika mungkin) untuk kolom ini.

Individualisme

Peran nyaman digunakan saat diperlukan untuk menggabungkan pengguna serupa. Misalnya, banyak akuntan perlu mendapatkan akses ke tabel keuangan. Untuk memberikan izin kepada setiap akuntan memakan waktu. Jauh lebih mudah untuk membuat peran akuntan, memberikan izin padanya, lalu menambahkan semua akun akuntansi ke peran ini.

Namun, ada kasus ketika izin harus unik untuk pengguna, atau selain izin yang diberikan oleh peran, izin tambahan perlu diberikan. Misalnya, salah satu akuntan perlu memiliki akses ke tabel departemen sumber daya manusia. Dalam hal ini, lebih baik menambahkan izin langsung ke akuntan daripada membuat peran baru.

Kami menjelajahi peran terlebih dahulu untuk membiasakan diri dengannya. Dalam kebanyakan kasus, ada akun terpisah untuk akuntan, akun terpisah untuk ekonom, dll. Dalam hal ini, kebanyakan orang terhubung ke server menggunakan satu akun. Jadi, untuk mengontrol siapa yang melakukan apa yang tidak mungkin. Lebih baik menggunakan izin individu jika diperlukan, sementara setiap pengguna harus memiliki akun sendiri.

Izin pada tabel

Mari kita lihat bagaimana kita dapat memberikan izin pada objek tertentu, misalnya, pada tabel.

Pilih cabang Databases/Northwind/Tables di pohon objek. Di bagian kanan, daftar semua tabel terbuka. Klik kanan tabel mana saja dan pilih Semua tugas/Kelola izin. Jendela Permission Properties terbuka, yang mirip dengan jendela Database Role Properties dengan daftar pengguna, bukan daftar objek. Objeknya adalah tabel yang kita klik dan namanya akan terdaftar di menu drop-down jendela. Sekarang, kita perlu menyetel izin pada objek ini untuk pengguna yang berbeda.

Menyetel izin pada tabel

Daftar izin adalah sebagai berikut:melihat, memperbarui, menambah, menghapus, menjalankan, dan mengelola. Jika Anda mengklik tombol Kolom, jendela akan terbuka untuk mengatur izin pada objek di tingkat bidang tabel untuk pengguna tertentu.

Tampilan

Kami memiliki dua meja. Salah satunya menyimpan daftar karyawan, sedangkan tabel lainnya berisi informasi jumlah jam kerja per bulan dan upah yang diterima (upah resmi dan tersembunyi).

Asumsikan bahwa petugas pajak datang kepada Anda dan meminta untuk menunjukkan upah pekerja. Selain itu, mereka menanyakan apakah Anda telah membayar semua pajak. Tindakan apa yang perlu Anda lakukan di pihak Anda?

Usulan pertama datang dari baris ketiga – untuk membuat pengguna baru yang diizinkan membaca tabel termasuk daftar karyawan dan gaji. Selain itu, jangan lupa untuk menutup kolom dengan upah tersembunyi. Sebenarnya, solusinya benar tapi sama sekali tidak efektif.

Opsi terbaik adalah membuat tampilan, kueri SQL yang memilih data. Dalam database, itu terlihat seperti tabel. Anda dapat memilih data SQL menggunakan kueri dan memberikan izin. Ternyata query tersebut akan dieksekusi terhadap query tersebut.

Untuk membuat tampilan, jalankan kueri berikut:

CREATE VIEW salary AS
SELECT fields for a tax official
FROM Employees, Wages
WHERE joins

Sekarang, ada objek Wage baru di cabang Databases/Northwind/Views. Jika Anda mengklik kanan dan memilih Semua tugas/Kelola izin, jendela untuk memberikan izin akan terbuka. Tetapkan izin untuk petugas pajak dan simpan. Untuk meninjau konten tampilan, jalankan kueri:

SELECT *
FROM salary

Seperti yang Anda lihat, ada akses ke tabel sederhana. Petugas pajak juga akan berpikir bahwa mereka melihat data yang sebenarnya. Namun, sebenarnya, kueri ini hanya akan berisi data yang kita butuhkan.

Dalam kehidupan nyata, petugas pajak tidak dapat ditipu dengan mudah karena mereka tidak bodoh. Namun, contoh ini menunjukkan bahwa tampilan dapat menjadi metode keamanan yang sempurna. Kami dapat menampilkan data yang dibutuhkan pengguna dan tidak ada yang lain. Pada saat yang sama, kami memiliki semua alat untuk mengelola izin pada tampilan tanpa memengaruhi izin akses pada tabel.

Dengan demikian, tampilan yang berbeda ke tabel yang sama dapat menampilkan data yang berbeda. Jika Anda ingin memperlihatkan kolom tambahan, tambahkan tampilan ke kueri. Dalam hal ini, tidak perlu mengubah izin.

Tampilan sistem

Di setiap database, mungkin ada tampilan sistem yang dibuat oleh server secara otomatis. Saya tidak menyarankan memberikan izin pada mereka karena mereka dapat menampilkan beberapa informasi tambahan, yang dapat membantu peretas mengatur izin atau hanya menghancurkan data. Tampilan sistem dimulai dengan awalan sys dan Sistem ditentukan di kolom Jenis dari daftar.

Prosedur dan fungsi

Server database modern mendukung prosedur dan fungsi yang tersimpan. Ini adalah kode PL/SQL atau Transact-SQL tergantung pada database yang dijalankan di server database. Dengan menggunakan prosedur ini, kita dapat melakukan operasi apa pun di server atau cukup memilih data, seperti pada tampilan. Kami dapat mengatur izin pada setiap prosedur.

Saat meninjau peran, kita telah melihat prosedur dalam daftar objek yang dapat Anda atur izinnya dan hanya kolom EXEC yang tersedia di baris ini karena prosedur hanya dapat dijalankan.

Prosedur dan fungsi tersimpan disimpan dalam database tertentu. Untuk melihat prosedur database Northwind, pilih cabang Databases/Northwind/Stored Procedures. Ada banyak prosedur sistem, yang namanya dimulai dengan awalan dt_ dan Sistem ditentukan di kolom Jenis. Disarankan untuk tidak memberikan akses ke prosedur ini, jika memungkinkan. Anda dapat melihat fungsi di cabang fungsi yang ditentukan Databases/Northwind/User.

Untuk mengubah izin pada prosedur dan fungsi, klik kanan namanya dan pilih Semua tugas/Kelola izin di menu. Di jendela yang muncul, Anda hanya dapat mengubah kolom EXEC untuk prosedur dan kolom EXEC dan DRI untuk fungsi.

Kebijakan izin

Beberapa administrator mengatur izin berdasarkan peran yang ada, misalnya, publik. Ini tidak benar karena, dalam peran ini, mungkin ada izin yang tidak dibutuhkan pengguna. Jadi, coba setel izin baru.

Bagi saya, saya selalu membuat peran baru dan memberikan satu set izin minimum. Jika pengguna meminta lebih banyak izin dan itu benar-benar diperlukan, saya menambahkan lebih banyak izin. Jika Anda mengizinkan semuanya secara default, tidak ada jaminan bahwa di masa mendatang hak yang tidak perlu dan berbahaya akan dihapus.

Masalah lain untuk menetapkan lebih sedikit izin adalah kebiasaan. Pengguna dapat terbiasa dengan kenyataan bahwa banyak izin diberikan kepada mereka dan kemudian larangan tersebut akan menyebabkan skandal besar. Tidak ada yang suka ketika hak mereka dilanggar.

Tabel/Database

Database menyimpan pengaturan dan properti tersembunyi di tabel dan database sistem. Mereka tidak berbeda dari objek database lain dan izin dapat diatur pada mereka. Dalam kasus apa pun, jangan izinkan pengguna mengakses tabel ini tanpa kebutuhan khusus.

Di SQL Server, data sistem penting disimpan dalam database master dan msdb. Dengan demikian, database ini harus dilindungi. Di Oracle, setiap database ada sebagai objek terpisah dan tabel sistem disimpan bersama dengan tabel pengguna.

Hampir semua server database menawarkan untuk menginstal database pengujian yang dapat digunakan untuk mempelajari atau menguji sistem. Jika Anda memilikinya, hapus – karena akses publik diatur ke database ini. Jika seorang peretas mengetahui nama atau properti dari objek apa pun yang ada di sistem, itu akan sangat menyederhanakan tugas mereka.

Saat menghubungkan ke database pengujian, Anda dapat menjalankan beberapa perintah di server dan merusak OS atau database yang berfungsi. Tidak ada barang tambahan yang harus ada di sistem. Selain itu, tabel/database tersebut memiliki izin yang cukup tinggi bahkan untuk tamu.

Ringkasan

Terlepas dari kenyataan bahwa kami menggunakan MS SQL Server sebagai contoh, konsep izin, peran, dan otentikasi ada di semua database.

Mengetahui semua aturan yang kami pertimbangkan, satu-satunya hal yang Anda butuhkan adalah menjelajahi kekhasan penggunaannya di database Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Database Kosong di Access 2016

  2. 5 Tip Basis Data Praktis untuk Pemula

  3. Memigrasikan Access Database Anda ke SQL Server

  4. Sisipan Tenaga Penjualan Massal dari Microsoft Access

  5. Cara Menambahkan Header dan Footer ke Laporan di Microsoft Access