Hari ini kita membahas keamanan database. Kami secara khusus melihat berbagai pernyataan SQL dan konstruksi yang memungkinkan Anda untuk mengelola dan efektif mengelola database relasional. Seperti banyak topik lain Anda telah mempelajari sejauh ini, bagaimana sebuah sistem manajemen database yang menerapkan keamanan sangat bervariasi antara produk-produk.Kami fokus pada produk database yang populer Oracle7 untuk memperkenalkan topik ini. Pada akhir hari, Anda akan memahami dan dapat melakukan hal berikut:

  • Buat pengguna
  • Ubah password
  • Buat peran
  • Gunakan dilihat untuk tujuan keamanan
  • Gunakan sinonim di tempat dilihat

Dicari: Database Administrator

Keamanan merupakan aspek yang sering diabaikan dari desain database. Kebanyakan komputer profesional memasuki dunia komputer dengan beberapa pengetahuan tentang pemrograman komputer atau perangkat keras, dan mereka cenderung untuk berkonsentrasi pada bidang-bidang. Misalnya, jika bos Anda meminta Anda untuk bekerja pada proyek baru merek yang jelas diperlukan beberapa jenis desain database relasional, apa yang akan menjadi langkah pertama Anda? Setelah memilih beberapa jenis perangkat keras dan dasar perangkat lunak, Anda mungkin akan mulai dengan merancang database dasar untuk proyek masyarakat ini. Akan tahap secara bertahap akan berpisah beberapa kalangan – salah satu dari mereka seorang desainer grafis antarmuka pengguna, yang lain rendah tingkat komponen-a pembangun. Mungkin Anda, setelah membaca buku ini, mungkin akan diminta untuk kode query SQL untuk memberikan keberanian aplikasi. Seiring dengan tugas ini datang benar-benar tanggung jawab administrasi dan memelihara database.

Banyak kali, pikir sedikit atau perencanaan masuk ke dalam tahap produksi aktual aplikasi. Apa yang terjadi ketika banyak pengguna yang diizinkan untuk menggunakan aplikasi ini di jaringan area luas (WAN)? Dengan perangkat lunak komputer pribadi yang kuat hari ini dan dengan teknologi seperti Microsoft Open Database Connectivity (ODBC), setiap pengguna dengan akses ke jaringan Anda dapat menemukan cara untuk mendapatkan pada database Anda. (Kami bahkan tidak akan memunculkan kompleksitas terlibat bila perusahaan Anda memutuskan untuk menghubungkan LAN Anda ke Internet atau beberapa-jaringan yang luas mulai komputer lain situasi!) Apakah Anda siap untuk menghadapi ini?

Untungnya untuk Anda, produsen perangkat lunak yang tersedia sebagian besar perangkat yang diperlukan untuk menangani masalah keamanan. Setiap rilis baru dari sebuah sistem operasi jaringan wajah persyaratan keamanan yang lebih ketat dari pendahulunya. Selain itu, sebagian vendor database utama membangun beberapa tingkat keamanan ke dalam produk mereka, yang ada secara independen dari sistem operasi Anda atau keamanan jaringan. Implementasi ini sangat beragam fitur keamanan dari produk ke produk.

Populer Database Produk dan Keamanan

Seperti yang Anda ketahui sekarang, banyak sistem basis data relasional berlomba untuk bisnis Anda. Setiap vendor ingin Anda untuk pendek dan jangka panjang alasan. Selama tahap pengembangan proyek, Anda bisa membeli sejumlah lisensi produk untuk pengujian, pengembangan, dan sebagainya. Namun, jumlah izin yang diperlukan untuk database produksi Anda dapat mencapai ratusan atau bahkan ribuan. Selain itu, ketika Anda memutuskan untuk menggunakan produk database tertentu, kemungkinan yang baik bahwa Anda akan tinggal dengan produk untuk tahun-tahun mendatang. Berikut adalah beberapa poin yang perlu diingat ketika Anda memeriksa produk ini:

  • Microsoft FoxPro sistem manajemen database adalah sistem database yang handal yang digunakan terutama di lingkungan single-user. FoxPro menggunakan subset terbatas dari SQL. Tidak ada langkah-langkah keamanan yang disediakan dengan sistem. Ia juga menggunakan format file Xbase, dengan masing-masing file yang berisi satu meja. Indeks disimpan dalam file terpisah.
  • Microsoft Access sistem manajemen database relasional menerapkan lebih dari SQL. Akses masih ditujukan untuk penggunaan pada platform PC, meskipun tidak berisi sistem keamanan dasar. Produk ini memungkinkan Anda untuk membangun query dan menyimpannya dalam database. Selain itu, seluruh database dan semua benda yang ada dalam satu file.
  • Oracle7 sistem manajemen database relasional mendukung SQL standar hampir penuh. Selain itu, Oracle telah menambahkan ekstensi ke SQL sendiri, yang disebut PL * SQL. Ini berisi fitur keamanan penuh, termasuk kemampuan untuk membuat peran dan memberikan izin dan hak pada objek dalam database.
  • Sybase SQL Server yang sama dalam kekuasaan dan fitur untuk produk Oracle. SQL Server juga menyediakan berbagai fitur keamanan dan memiliki ekstensi sendiri ke bahasa SQL, yang disebut Transact-SQL.

Tujuan di balik menggambarkan produk ini adalah untuk menggambarkan bahwa tidak semua perangkat lunak yang cocok untuk setiap aplikasi. Bila Anda berada di sebuah lingkungan bisnis, pilihan Anda mungkin terbatas. Faktor-faktor seperti biaya dan kinerja sangat penting. Namun, tanpa langkah-langkah keamanan yang memadai, ada tabungan menciptakan database Anda dapat dengan mudah diimbangi dengan masalah keamanan.

Bagaimana sebuah Database Menjadi Aman?

Sampai tahap ini, Anda tidak khawatir banyak tentang keamanan “” dari database yang telah Anda buat. Apakah terpikir oleh Anda bahwa Anda mungkin tidak ingin pengguna lain untuk masuk dan merusak dengan informasi database yang begitu cermat memasuki? Apa reaksi Anda jika Anda login ke server suatu pagi dan menemukan bahwa database Anda telah bekerja keras selama telah menjatuhkan (ingat bagaimana diam itu perintah DROP DATABASE ini)? Kami memeriksa secara rinci bagaimana satu sistem manajemen database populer (Personal Oracle7) memungkinkan Anda untuk membuat sebuah database yang aman. Anda akan dapat menerapkan sebagian besar informasi ini untuk sistem manajemen basis data lainnya, jadi pastikan Anda membaca informasi ini bahkan jika tidak sistem Oracle adalah pilihan Anda.


TIP: Jauhkan pertanyaan berikut dalam pikiran ketika Anda rencana sistem keamanan Anda:

  • Siapa yang bisa mendapatkan peran DBA?
  • Berapa banyak pengguna memerlukan akses ke database?
  • Mana pengguna akan membutuhkan hak istimewa yang mana dan peran?
  • Bagaimana Anda akan menghapus user yang tidak lagi membutuhkan akses ke database?

Oracle7 Pribadi dan Keamanan

Oracle7 mengimplementasikan keamanan dengan menggunakan tiga konstruksi:

  • Pengguna
  • Peran
  • Keistimewaan

Menciptakan Pengguna

Pengguna account nama yang diizinkan untuk login ke database Oracle. SQL sintaks yang digunakan untuk membuat pengguna baru berikut.

Sintaks:
  CREATE USER user 
  Diidentifikasi (BY password | eksternal) 
  [DEFAULT tablespace tablespace] 
  [SEMENTARA tablespace tablespace] 
  [QUOTA (integer [K | M] | UNLIMITED) ON] tablespace 
  [PROFIL] Profil 

Jika opsi password BY dipilih, sistem meminta user untuk memasukkan password setiap kali dia log on. Sebagai contoh, membuat username sendiri:

INPUT / OUTPUT:
  SQL> CREATE USER diidentifikasi oleh Bryan CUTIGER; 

  Pengguna diciptakan. 

Setiap kali saya login dengan username saya Bryan, saya diminta untuk memasukkan password saya: CUTIGER.

Jika opsi eksternal dipilih, Oracle bergantung pada nama komputer Anda login dan password sistem. Ketika Anda log on ke sistem, Anda memiliki dasarnya login ke Oracle.


CATATAN: Beberapa implementasi memungkinkan Anda untuk menggunakan eksternal, atau sistem operasi, password sebagai default saat menggunakan SQL (diidentifikasieksternal). Namun, kami menyarankan Anda memaksa pengguna untuk memasukkan password dengan memanfaatkan BY klausa diidentifikasi (diidentifikasi denganpassword).


Seperti yang dapat Anda lihat dari melihat sisa sintaks CREATE USER, Oracle juga memungkinkan Anda untuk mengatur tablespace default dan kuota. Anda dapat mempelajari lebih lanjut tentang topik ini dengan memeriksa dokumentasi Oracle.

Seperti halnya dengan setiap perintah CREATE lain yang telah Anda pelajari di buku ini, ada juga perintah ALTER USER. Ini terlihat seperti ini:

Sintaks:
  ALTER USER pengguna 
  [Diidentifikasi (BY password | eksternal)] 
  [DEFAULT tablespace tablespace] 
  [SEMENTARA tablespace tablespace] 
  [QUOTA (integer [K | M] | UNLIMITED) ON] tablespace 
  [PROFIL] Profil 
  [DEFAULT PERAN ([peran,] peran ... 
    | SEMUA [KECUALI peran [,] peran ...] | NONE)] 

Anda dapat menggunakan perintah ini untuk mengubah pilihan semua pengguna, termasuk password dan profil. Misalnya, untuk mengubah password user Bryan, Anda jenis ini:

INPUT / OUTPUT:
  SQL> ALTER Bryan PENGGUNA 
    2 diidentifikasi oleh Rosebud; 

  Pengguna berubah. 

Untuk mengubah default tablespace, ketik ini:

INPUT / OUTPUT:
  SQL> ALTER RON PENGGUNA 
    DEFAULT 2 tablespace USERS; 

  Pengguna berubah. 

Untuk menghapus pengguna, hanya masalah PENGGUNA perintah DROP, yang menghapus user masuk dalam database sistem. Berikut sintaks untuk perintah ini:

Sintaks:
 DROP USER user_name [CASCADE];

Jika opsi CASCADE digunakan, semua benda yang dimiliki oleh pengguna yang turun bersama dengan user account. Jika CASCADE tidak digunakan dan pengguna dilambangkan oleh user_namemasih memiliki objek, pengguna yang tidak jatuh. Fitur ini agak membingungkan, tetapi akan sangat berguna jika Anda pernah ingin meletakkan pengguna.

Menciptakan Peran

peran adalah hak istimewa atau serangkaian hak istimewa yang memungkinkan user untuk menjalankan fungsi tertentu dalam database. Untuk memberikan peran kepada pengguna, gunakan sintaks berikut:

Sintaks:
  Peran GRANT UNTUK [pengguna DENGAN ADMIN OPTION]; 

Jika DENGAN ADMIN OPTION digunakan, user yang kemudian dapat memberikan peran kepada pengguna lain. Bukankah daya menggembirakan?

Untuk menghapus peran, gunakan perintah REVOKE:

Sintaks:
  REVOKE peran DARI pengguna; 

Bila Anda log on ke sistem dengan menggunakan account yang Anda buat sebelumnya, Anda telah kehabisan batas izin Anda. Anda dapat log on, tapi itu adalah tentang semua yang dapat Anda lakukan. Oracle memungkinkan Anda mendaftar sebagai salah satu dari tiga peran:

  • Menghubungkan
  • Sumber
  • DBA (atau database administrator)

Ketiga peran memiliki berbagai tingkat hak istimewa.


CATATAN: Jika Anda memiliki hak istimewa yang sesuai, Anda dapat membuat peran Anda sendiri, hak istimewa hibah untuk peran Anda, dan kemudian memberikan peran Anda ke pengguna untuk keamanan lebih lanjut.


Peran Connect

Peran Connect dapat dianggap sebagai peran entry-level. Seorang pengguna yang telah diberikan akses peran Connect dapat diberikan berbagai hak istimewa yang memungkinkan dia untuk melakukan sesuatu dengan database.

INPUT / OUTPUT:
  SQL> GRANT CONNECT ATAS Bryan; 

  Grant berhasil. 

Peran Connect memungkinkan pengguna untuk memilih, memasukkan, update, dan menghapus catatan dari tabel milik pengguna lain (setelah perizinan yang sesuai telah diberikan). Pengguna juga dapat membuat tabel, pandangan, urutan, cluster, dan sinonim.

Peran Sumber Daya

Peran Sumber Daya memberi pengguna lebih banyak akses ke database Oracle. Selain izin yang dapat diberikan kepada peran Connect, peran Sumber Daya dapat juga diberikan izin untuk membuat prosedur, memicu, dan indeks.

INPUT / OUTPUT:
  SQL> GRANT RESOURCE ALAM ATAS Bryan; 

  Grant berhasil. 

Peran DBA

Peran DBA memuat segala hak istimewa. Pengguna dengan peran ini mampu melakukan dasarnya apapun yang mereka mau ke sistem database. Anda harus menjaga jumlah pengguna dengan peran untuk minimum sistem untuk memastikan integritas.

INPUT / OUTPUT:
  SQL> GRANT DBA TO Bryan; 

  Grant berhasil. 

Setelah tiga langkah sebelumnya, pengguna diberikan Bryan Connect, Resource, dan peran DBA. Hal ini agak berlebihan karena peranan DBA meliputi dua peran lainnya, sehingga Anda bisa drop mereka sekarang:

INPUT / OUTPUT:
  SQL> CONNECT REVOKE DARI Bryan; 

  Batalkan berhasil. 

  SQL> REVOKE RESOURCE DARI Bryan; 

  Batalkan berhasil. 

Bryan bisa melakukan semua yang dia perlu lakukan dengan peranan DBA.

Keistimewaan Pengguna

Setelah Anda memutuskan peran untuk memberikan pengguna Anda, langkah selanjutnya adalah memutuskan izin ini pengguna akan memiliki database pada objek. (Oracle7 panggilan izin hak hak istimewa ini.) Jenis bervariasi, tergantung pada peran apa yang telah diberikan. Jika Anda benar-benar membuat objek, Anda dapat memberikan hak istimewa pada objek yang ke pengguna lain selama peran mereka izin akses ke hak istimewa yang . Oracle mendefinisikan dua jenis hak istimewa yang dapat diberikan kepada pengguna: sistem hak dan hak istimewa objek.. (Lihat Tabel 12.1 dan 12.2)

Sistem hak systemwide berlaku. sintaks yang digunakan untuk memberikan hak istimewa sistem adalah sebagai berikut:

Sintaks:
  system_privilege GRANT ATAS (user_name | Peran | PUBLIK) 
  [DENGAN] OPSI ADMIN; 

DENGAN ADMIN OPTION memungkinkan penerima beasiswa untuk memberikan hak istimewa ini kepada orang lain.

Akses Pengguna ke Tampilan

Perintah berikut mengijinkan semua user sistem untuk memiliki CREATE VIEW akses dalam skema mereka sendiri.

INPUT:
  GRANT SQL> CREATE VIEW 
    2 UNTUK PUBLIK;
OUTPUT:
  Grant berhasil. 
ANALISIS:

Kata kunci umum berarti bahwa setiap orang memiliki hak pengaturan CREATE VIEW. Jelas, sistem ini memungkinkan penerima hibah hak istimewa yang memiliki banyak akses ke hampir semua sistem. Sistem hak harus diberikan hanya untuk pengguna khusus atau untuk pengguna yang memiliki kebutuhan untuk menggunakan hak istimewa ini. Tabel 12.1 menunjukkan keistimewaan sistem Anda akan menemukan dalam membantu file yang disertakan dengan Personal Oracle7.


PERINGATAN: Gunakan hati saat pemberian hak istimewa kepada publik. Pemberian publik memberikan semua pengguna dengan hak akses ke database Anda mungkin tidak ingin mereka miliki.


Tabel 12.1. Sistem hak istimewa di Oracle7.

Sistem Privilege Diizinkan Operasi
ALTER INDEX APAPUN Memungkinkan penerima untuk mengubah setiap indeks dalam skema apapun.
PROSEDUR ALTER APAPUN Memungkinkan penerima untuk mengubah setiap prosedur yang tersimpan, fungsi, atau paket dalam skema apapun.
ALTER PERAN APAPUN Memungkinkan penerima untuk mengubah apapun peran dalam database.
ALTER TABLE APAPUN Memungkinkan penerima untuk mengubah setiap meja atau melihat dalam skema tersebut.
ALTER TRIGGER APAPUN Memungkinkan penerima untuk mengaktifkan, menonaktifkan, atau kompilasi pun memicu database dalam skema apapun.
ALTER DATABASE Memungkinkan penerima untuk mengubah database.
ALTER USER Memungkinkan penerima untuk mengubah setiap user. hak istimewa ini kewenangan kepada penerima beasiswa untuk mengubah password user lain atau metode otentikasi, memberikan kuota pada setiap tablespace, set default dan tablespace sementara, dan memberikan profil dan peran default.
CREATE INDEKS APAPUN Memungkinkan penerima untuk membuat indeks pada setiap meja dalam skema apapun.
CREATE PROSEDUR APAPUN Memungkinkan penerima untuk membuat disimpan prosedur, fungsi, dan paket dalam skema apapun.
CREATE TABLE APAPUN Memungkinkan penerima untuk membuat tabel dalam skema apapun. Pemilik skema yang berisi tabel harus memiliki kuota ruang pada tablespace yang berisi meja.
CREATE TRIGGER APAPUN Memungkinkan penerima untuk membuat memicu database dalam setiap skema terkait dengan tabel dalam skema apapun.
CREATE VIEW APAPUN Memungkinkan penerima untuk membuat pemandangan dalam skema apapun.
CREATE PROSEDUR Memungkinkan penerima untuk membuat disimpan prosedur, fungsi, dan paket dalam skema mereka sendiri.
CREATE PROFIL Memungkinkan penerima untuk membuat profil.
CREATE PERAN Memungkinkan penerima untuk menciptakan peran.
CREATE sinonim Memungkinkan penerima untuk membuat nama-muradif dalam skema mereka sendiri.
CREATE TABLE Memungkinkan penerima untuk membuat tabel dalam skema mereka sendiri. Untuk membuat meja, para penerima hibah juga harus memiliki kuota ruangan di tablespace untuk berisi meja.
CREATE TRIGGER Memungkinkan penerima untuk membuat database dalam skema memicu mereka sendiri.
CREATE USER Memungkinkan penerima untuk membuat pengguna. hak istimewa ini juga memungkinkan pencipta untuk menetapkan kuota pada setiap tablespace, set default dan tablespace sementara, dan memberikan profil sebagai bagian dari pernyataan CREATE USER.
CREATE VIEW Memungkinkan penerima untuk membuat pemandangan dalam skema mereka sendiri.
HAPUS TABEL APAPUN Memungkinkan penerima untuk menghapus baris dari tabel atau dilihat dalam skema atau tabel truncate dalam skema apapun.
INDEKS DROP APAPUN Memungkinkan penerima untuk menjatuhkan indeks dalam skema apapun.
PROSEDUR DROP APAPUN Memungkinkan penerima untuk drop disimpan prosedur, fungsi, atau paket dalam skema apapun.
DROP PERAN APAPUN Memungkinkan penerima untuk drop peran.
DROP sinonim APAPUN Memungkinkan penerima untuk menjatuhkan nama-muradif swasta dalam skema apa pun.
DROP TABEL APAPUN Memungkinkan penerima untuk drop tabel dalam skema apapun.
DROP TRIGGER APAPUN Memungkinkan penerima untuk drop database memicu dalam skema apapun.
DROP VIEW APAPUN Memungkinkan penerima untuk menjatuhkan dilihat dalam skema apapun.
DROP PENGGUNA Memungkinkan penerima untuk drop pengguna.
Jalankan PROSEDUR APAPUN Memungkinkan penerima untuk melaksanakan prosedur atau fungsi (mandiri atau dikemas) atau referensi variabel paket publik dalam skema apapun.
GRANT APAPUN HAK ISTIMEWA Memungkinkan penerima untuk memberikan hak istimewa apapun sistem.
GRANT PERAN APAPUN Memungkinkan penerima untuk memberikan peran apa pun dalam database.
INSERT TABEL APAPUN Memungkinkan penerima untuk memasukkan baris ke dalam tabel dan tampilan dalam skema apapun.
LOCK TABLE APAPUN Memungkinkan penerima untuk mengunci tabel dan tampilan dalam skema apapun.
PILIH URUTAN APAPUN Memungkinkan penerima untuk sekuens referensi dalam skema apapun.
TABEL SELECT APAPUN Memungkinkan penerima untuk tabel query, pandangan, atau snapshot dalam skema apapun.
UPDATE SETIAP ROWS Memungkinkan penerima untuk memperbarui baris dalam tabel.

Obyek hak adalah hak istimewa yang dapat digunakan objek-objek database tertentu 12.2. Tabel daftar hak istimewa objek dalam Oracle7.

Tabel 12.2. Obyek hak diaktifkan bawah Oracle7.

SEMUA
ALTER
HAPUS
Melaksanakan
INDEKS
INSERT
DAFTAR PUSTAKA
SELECT
UPDATE

Anda dapat menggunakan formulir berikut pernyataan GRANT untuk memberikan pengguna lain mengakses ke meja Anda:

Sintaks:
  GRANT (object_priv | SEMUA [PRIVILEGES]) [(kolom 
  [, Kolom ]...)] 
  [, (Object_priv | SEMUA [PRIVILEGES]) [(kolom 
  [,] Kolom ...)]] ... 
  ON skema [.] Objek 
  UNTUK (user | Peran | PUBLIK) [, (pengguna | Peran | PUBLIK)] ... 
  [DENGAN OPSI] GRANT 

Untuk menghapus objek hak Anda telah memberikan kepada seseorang, gunakan perintah REVOKE dengan sintaks berikut:

Sintaks:
  REVOKE (object_priv | SEMUA [PRIVILEGES]) 
  [, (Object_priv | SEMUA [PRIVILEGES])] 
  ON skema [.] Objek 
  DARI (user | peran | PUBLIK) [, (pengguna | Peran | PUBLIK)] 
  KENDALA CASCADE [] 

Dari Membuat Tabel untuk Pemberian Peran

Buat tabel bernama GAJI dengan struktur sebagai berikut:

INPUT:
  NAMA, CHAR (30) 
  GAJI, NOMOR 
  UMUR, NOMOR 

  SQL> CREATE TABLE GAJI ( 
    2 NAME CHAR (30), 
    3 GAJI NUMBER, 
    4 UMUR NUMBER);
OUTPUT:
  Tabel dibuat. 

Sekarang, buat dua pengguna – Jack dan Jill:

INPUT / OUTPUT:
  SQL> membuat pengguna Jack diidentifikasi oleh Jack; 

  Pengguna diciptakan. 

  SQL> membuat user diidentifikasi oleh Jill Jill; 

  Pengguna diciptakan. 

  SQL> hibah terhubung ke Jack; 

  Grant berhasil. 

  SQL> memberikan sumber daya kepada Jill; 

  Grant berhasil. 
ANALISIS:

Sejauh ini, Anda telah membuat dua pengguna dan masing-masing diberikan peran yang berbeda. Oleh karena itu, mereka akan memiliki kemampuan yang berbeda ketika bekerja dengan database. Pertama menciptakan tabel GAJI dengan informasi berikut:

INPUT / OUTPUT:
  SQL> SELECT * FROM GAJI; 

  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  35.000 JACK 29 
  48.000 JILL 42 
  JOHN 61.000 55 

Anda kemudian dapat memberikan berbagai hak istimewa untuk tabel ini didasarkan pada beberapa alasan sewenang-wenang untuk contoh ini. Kita menganggap bahwa saat ini Anda memiliki hak DBA dan dapat memberikan hak istimewa apapun sistem. Bahkan jika Anda tidak memiliki hak DBA, Anda masih dapat memberikan hak istimewa objek di meja GAJI karena Anda sendiri itu (asumsi Anda baru saja dibuat itu).

Karena hanya milik Jack peran Connect, Anda ingin dia hanya memiliki hak SELECT.

INPUT / OUTPUT:
 SQL> GRANT SELECT PADA GAJI KE JACK; Grant berhasil.

Karena milik Jill peran Resource, Anda membiarkan dia untuk memilih dan memasukkan beberapa data ke dalam tabel. Untuk menghidupkan hal-hal sedikit, memungkinkan Jill untuk memperbarui nilai-nilai hanya dalam bidang GAJI tabel GAJI.

INPUT / OUTPUT:
  GRANT SQL> SELECT, UPDATE (GAJI) PADA GAJI KE Jill; 

  Grant berhasil. 

Sekarang ini meja dan para pengguna telah dibuat, Anda perlu melihat bagaimana pengguna mengakses sebuah meja yang dibuat oleh user lain. Kedua Jack dan Jill telah diberikan akses SELECTpada tabel GAJI. Namun, jika Jack mencoba mengakses meja GAJI, ia akan tahu bahwa itu tidak ada karena Oracle memerlukan nama pengguna atau skema yang memiliki tabel mendahului nama tabel.

Kualifikasi Tabel

Catat username Anda gunakan untuk membuat tabel GAJI (saya adalah Bryan). Untuk Jack untuk memilih data dari tabel GAJI, ia harus mengatasi GAJI tabel dengan nama pengguna tersebut.

INPUT:
  SQL> SELECT * FROM GAJI; 
  SELECT * FROM GAJI 
                *
OUTPUT:
  ERROR pada baris 1: 
  ORA-00942: table atau melihat tidak ada 

Berikut Jack memperingatkan bahwa meja tidak ada. Sekarang menggunakan username pemilik untuk mengidentifikasi meja:

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI Bryan.SALARIES; 

  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  JACK 35.000 29 
  48.000 JILL 42 
  JOHN 61.000 55 
ANALISIS:

Anda dapat melihat bahwa sekarang permintaan bekerja. Sekarang menguji hak akses Jill log. Pertama dari Jack’s logon dan login lagi sebagai Jill (menggunakan password Jill).

INPUT / OUTPUT:
  SQL> SELECT * 
    2 DARI Bryan.SALARIES; 

  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  JACK 35.000 29 
  48.000 JILL 42 
  JOHN 61.000 55 

Yang bekerja baik-baik saja. Sekarang cobalah untuk memasukkan catatan baru ke dalam tabel.

INPUT / OUTPUT:
  SQL> INSERT INTO Bryan.SALARIES 
    2 VALUES ('JOE', 85000,38); 
  INSERT INTO Bryan.SALARIES 
                      * 
  ERROR pada baris 1: 
  ORA-01031: hak istimewa tidak cukup 
ANALISIS:

Operasi ini tidak bekerja karena Jill tidak memiliki hak INSERT pada tabel GAJI.

INPUT / OUTPUT:
  SQL> UPDATE Bryan.SALARIES 
    2 SET UMUR = 42 
    3 WHERE NAME "JOHN = '; 
  UPDATE Bryan.SALARIES 
                 * 
  ERROR pada baris 1: 
  ORA-01031: hak istimewa tidak cukup 
ANALISIS:

Sekali lagi, Jill berusaha berkeliling hak istimewa bahwa ia telah diberikan. Tentu, Oracle menangkap kesalahan ini dan diperbaiki dengan cepat.

INPUT / OUTPUT:
  SQL> UPDATE Bryan.SALARIES 
    2 SET GAJI = 35.000 
    3 WHERE NAME 'JOHN ='; 

  1 baris diperbarui. 

  SQL> SELECT * 
    2 DARI Bryan.SALARIES; 

  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  JACK 35.000 29 
  48.000 JILL 42 
  JOHN 35.000 55 
ANALISIS:

Anda dapat melihat sekarang bahwa memperbarui bekerja selama Jill mematuhi hak istimewa dia telah diberikan.

Menggunakan Tampilan untuk Tujuan Keamanan

Seperti yang telah disebutkan di Hari ke-10, “Tampilan Menciptakan dan Indeks,” pandangan adalah tabel virtual yang dapat Anda gunakan untuk menyajikan tampilan data yang berbeda dari cara secara fisik ada di database. Hari ini Anda akan mempelajari lebih lanjut tentang bagaimana menggunakan pandangan untuk melaksanakan langkah-langkah keamanan. Pertama, bagaimanapun, kami menjelaskan bagaimana laporan pandangan dapat menyederhanakan SQL.

Sebelumnya Anda telah belajar bahwa ketika pengguna harus mengakses sebuah tabel atau database objek yang memiliki pengguna lain, bahwa objek harus direferensikan dengan nama pengguna. Seperti yang dapat Anda bayangkan, prosedur ini bisa bertele-tele jika Anda harus menulis menulis beberapa query SQL berturut-turut. Lebih penting lagi, pengguna pemula akan diperlukan untuk menentukan pemilik meja sebelum mereka bisa memilih isi dari sebuah tabel, yang tidak sesuatu yang Anda ingin semua user Anda untuk melakukan. Satu solusi sederhana ditunjukkan dalam paragraf berikut.

Solusi A untuk Kualifikasi Tabel atau Lihat

Asumsikan bahwa Anda logon sebagai Jack, teman Anda dari contoh sebelumnya. Anda tahu bahwa bagi Jack untuk melihat isi tabel GAJI, ia harus menggunakan pernyataan berikut:

INPUT:
  SQL> SELECT * 
    2 DARI Bryan.SALARIES;
OUTPUT:
  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  JACK 35.000 29 
  48.000 JILL 42 
  JOHN 35.000 55 

Jika Anda adalah untuk membuat tampilan bernama SALARY_VIEW, pengguna hanya dapat memilih dari pandangan itu.

INPUT / OUTPUT:
 SQL> CREATE VIEW SALARY_VIEW 2 AS SELECT * FROM Bryan.SALARIES 3; Lihat menciptakan DARI. SQL> SELECT * SALARY_VIEW; NAMA UMUR GAJI ---------------------- -------- --------- --------- 29 JACK JILL 48.000 35.000 35.000 55 42 JOHN
ANALISIS:

Permintaan sebelumnya kembali nilai-nilai yang sama dengan catatan kembali dari Bryan.SALARIES.

Menggunakan Sinonim di Tempat Tampilan

SQL juga menyediakan objek yang dikenal sebagai sebuah sinonim. Sebuah sinonim memberikan alias untuk meja untuk menyederhanakan atau meminimalkan penekanan tombol ketika menggunakan tabel dalam pernyataan SQL. Ada dua jenis sinonim: swasta dan publik. Setiap pengguna dengan peran sumber daya dapat membuat sinonim pribadi. Di sisi lain, hanya pengguna dengan peran DBA dapat membuat sinonim publik.

Sintaks untuk sebuah sinonim publik berikut.

Sintaks:
  CREATE [PUBLIC] Sinonim [skema sinonim.] 
  UNTUK Skema [.] Obyek [@ dblink] 

Dalam contoh sebelumnya, Anda bisa mengeluarkan perintah berikut untuk mencapai hasil yang sama:

INPUT / OUTPUT:
  SQL> CREATE GAJI sinonim PUBLIK UNTUK GAJI 
  Sinonim dibuat. 

Kemudian login kembali ke Jack dan jenis ini:

INPUT / OUTPUT:
  SQL> SELECT * FROM GAJI; 

  NAMA GAJI UMUR 
  ------------------------------ --------- --------- 
  JACK 35.000 29 
  48.000 JILL 42 
  JOHN 35.000 55 

Menggunakan Tampilan untuk Memecahkan Masalah Keamanan

Misalnya, Anda berubah pikiran tentang Jack dan Jill dan memutuskan bahwa keduanya tidak harus dapat melihat tabel GAJI sepenuhnya. Anda dapat menggunakan pandangan untuk mengubah situasi ini dan memungkinkan mereka hanya memeriksa informasi mereka sendiri.

INPUT / OUTPUT:
  SQL> JACK_SALARY CREATE VIEW AS 
    2 SELECT * FROM BRYAN.SALARIES 
    3 WHERE NAME 'JACK ='; 

  Lihat dibuat.
INPUT / OUTPUT:
  SQL> CREATE VIEW AS JILL_SALARY 
    2 SELECT * FROM BRYAN.SALARIES 
    3 WHERE NAME 'JILL ='; 

  Lihat dibuat.
INPUT / OUTPUT:
  SQL> GRANT SELECT ON JACK_SALARY 
    2 ATAS JACK; 

  Grant berhasil.
INPUT / OUTPUT:
 SQL> GRANT SELECT ON JILL_SALARY 2 ATAS JILL; Grant berhasil.
INPUT / OUTPUT:
  R SQL> SELECT ON Menimbulkan GAJI DARI JACK; 

  Batalkan berhasil.
INPUT / OUTPUT:
  SQL> SELECT ON REVOKE DARI GAJI JILL; 

  Batalkan berhasil. 

Sekarang login sebagai Jack dan menguji tampilan yang Anda buat untuknya.

INPUT / OUTPUT:
  SQL> SELECT * FROM Bryan.JACK_SALARY; 

  NAMA GAJI UMUR 
  ---------- ---------- ---- 

  Jack 35.000 29 
INPUT / OUTPUT:
  SQL> SELECT * FROM PERKINS.SALARIES; 
  SELECT * FROM PERKINS.SALARIES 
                        * 
  ERROR pada baris 1: 
  ORA-00942: table atau melihat tidak ada 

Log out dari account Jack dan Jill uji:

INPUT / OUTPUT:
  SQL> SELECT * FROM Bryan.JILL_SALARY; 

  NAMA GAJI UMUR 
  ------------------ ------------- ---- 

  Jill 48.000 42 
ANALISIS:

Anda dapat melihat bahwa akses ke meja GAJI benar-benar dikontrol menggunakan pandangan. SQL memungkinkan Anda untuk membuat pandangan yang Anda inginkan dan kemudian memberikan izin kepada pengguna lain. Teknik ini memungkinkan banyak fleksibilitas.

Sintaks untuk menjatuhkan sinonim adalah

Sintaks:
  SQL drop> [sinonim synonym_name] publik; 

CATATAN: Sekarang, Anda harus memahami pentingnya menjaga hingga minimum jumlah orang dengan peran DBA. Seorang pengguna dengan tingkat akses dapat memiliki akses lengkap untuk semua perintah dan operasi dalam database. Catatan, bagaimanapun, bahwa dengan Oracle dan Sybase Anda harus memiliki tingkat akses DBA (atau SA-tingkat di Sybase) mengimpor atau mengekspor data pada database.


Menggunakan Klausul DENGAN GRANT OPTION

Bagaimana menurut Anda yang akan terjadi jika Jill berusaha untuk lulus kehormatan UPDATE di atas untuk Jack? Sepintas Anda mungkin berpikir bahwa Jill, karena ia dipercayakan dengan hak istimewa UPDATE, harus dapat menyebarkannya ke pengguna lain yang diizinkan hak istimewa itu. Namun, dengan menggunakan pernyataan GRANT seperti yang Anda lakukan sebelumnya, Jill tidak dapat melewati hak-nya kepada orang lain:

  GRANT SQL> SELECT, UPDATE (GAJI) PADA Bryan.SALARIES ATAS Jill; 

Berikut adalah sintaks untuk laporan GRANT yang diperkenalkan sebelumnya hari ini:

Sintaks:
  GRANT (object_priv | SEMUA [PRIVILEGES]) [(kolom 
  [, Kolom ]...)] 
  [, (Object_priv | SEMUA [PRIVILEGES]) [(kolom 
  [,] Kolom ...)]] ... 
  ON skema [.] Objek 
  UNTUK (user | Peran | PUBLIK) [, (pengguna | Peran | PUBLIK)] ... 
  [DENGAN OPSI] GRANT 

Apa yang Anda cari adalah DENGAN GRANT OPTION klausa di akhir pernyataan GRANT. Ketika obyek hak istimewa yang diberikan dan DENGAN GRANT OPTION digunakan, hak istimewa ini dapat ditularkan kepada orang lain. Jadi jika Anda ingin memperbolehkan Jill untuk menyampaikan hak istimewa ini pada Jack, Anda akan melakukan hal berikut:

INPUT:
  GRANT SQL> SELECT, UPDATE (GAJI) 
    2 PADA Bryan.SALARIES ATAS JILL 
    3 DENGAN GRANT OPTION;
OUTPUT:
  Grant berhasil. 

Jill kemudian bisa log on dan masalah perintah berikut:

INPUT / OUTPUT:
  GRANT SQL> SELECT, UPDATE (GAJI) 
    2 PADA Bryan.SALARIES ATAS JACK; 

  Grant berhasil. 

Ringkasan

Keamanan merupakan topik yang sering diabaikan-yang dapat menyebabkan banyak masalah jika tidak benar dipikirkan dan dikelola. Untungnya, SQL menyediakan beberapa perintah yang berguna untuk menerapkan keamanan pada database.

Pengguna awalnya diciptakan dengan menggunakan perintah CREATE USER, yang mendirikan sebuah username dan password untuk pengguna. Setelah account pengguna telah dibentuk, pengguna ini harus diberikan peran dalam rangka untuk menyelesaikan pekerjaan apapun. Ketiga tersedia peran dalam Oracle7 adalah Connect, Sumber Daya, dan DBA. Setiap peran memiliki tingkat yang berbeda akses ke database, dengan Hubungkan menjadi sederhana dan DBA memiliki akses untuk segala sesuatu.

Perintah GRANT memberikan izin atau hak istimewa kepada user. Perintah REVOKE dapat mengambil bahwa izin atau hak istimewa menjauh dari pengguna. Kedua jenis hak istimewa adalah obyek hak dan hak istimewa sistem. Hak istimewa sistem harus diawasi dengan baik dan tidak boleh diberikan kepada pengguna berpengalaman. Memberikan akses pengguna berpengalaman untuk perintah memungkinkan mereka untuk (secara tidak sengaja mungkin) menghancurkan data atau database Anda telah susah payah menyiapkan. Obyek hak dapat diberikan untuk memberikan pengguna akses ke objek individu yang ada dalam skema’s database pemilik.

Semua teknik dan pernyataan SQL SQL menyediakan pengguna dengan berbagai alat untuk digunakan ketika mengatur keamanan sistem. Meskipun kami berfokus pada fitur keamanan Oracle7, Anda dapat menerapkan banyak informasi ini ke sistem database di situs Anda. Hanya ingat bahwa apa pun produk yang Anda gunakan, penting untuk menegakkan beberapa tingkat keamanan database.

Sumber ; http://www.webbasedprogramming.com