Praktikum 8
USER, PRIVILEGE DAN ROLE
Tujuan :
1.
Mampu membuat user pada Oracle
2.
Mampu memonitor user
3.
Mampu melakukan manipulasi pada user
4.
Mampu mengenal obyek dan system privilege
5.
Mampu memberikan privilege pada user
6.
Mampu mengerti tentang roles dan menggunakan
7.
Mampu membuat dan memodifikasi roles
8.
Mampu melakukan controlling dan removing pada roles
Alat dan Bahan :
1.
Buku literatur mengenai PL/SQL ORACLE, terutama yang
menggunakan DBMS ORACLE 10g.
2.
Modul praktikum BASIS DATA LANJUT
3.
Modul praktikum DATA MINING DAN WAREHOUSING
Landasan Teori :
1. User
Management
a. User Sebagai Tipe
Secara umum operasi-operasi untuk pemakai adalah tiga
operasi klasik yaitu CREATE, ALTER, dan DROP. Tiga operasi klasik ini berlaku
bagi objek-objek hampir semua tipe dalam database (bahkan ke objek bertipe
database itu sendiri).
b. User versus Schema
Literatur oracle sering sekali memakai kata “schema” dan
kata ini dipakai secara kurang hati-hati. Oracle memiliki operasi CREATE
SCHEMA, namun tidak ada operasi DROP SCHEMA dan ALTER SCHEMA.
Schema didefinisikan sebagai kumpulan objek-objek yang
dimiliki pemakai/user. Kumpulan objek yang dimiliki pemakai SYSTEM membentuk
schema SYSTEM. Kumpulan objek yang dimiliki SCOTT membentuk schema SCOTT. Anda
dapat melihat bahwa kadang ada literature atau piranti yang menyebutkan CREATE
SCHEMA namun tidak membuat objek sama sekali. Dalam hal tersebut, lebih tepat
jika piranti meyatakan CREATE USER.
Pemakain schema lebih tepat diterapkan pada topic data
warehouse, saat membicarakan star schema.
Selain itu dengan
adanya schema semakin
memperbanyak tree dalam beberapa piranti (termasuk oracle enterprise
manager).
c. User versus account
Ada suatu istilah lagi yang terkait dengan user yaitu
account. Istilah ini kelihatannya tidak begitu tepat dalam konteks pemakai
database. Saat kita menyata-kan LOCK atau UNLOCK suatu account pada dasarnya
kita melakukan LOCK USER atau UNLOCK USER.
d. CREATE USER
Hanya dengan hak DBA saja yang
bisa melakukan CREATE USER. Pertama anda connect sebagai pemakai dengan hak DBA
untuk melakukan langkah-langkah berikut ini. Kita mulai dengan sintaks
sederhana operasi CREATE USER.
CREATE USER
user_name
IDENTIFIED EXTERNALLY|{by
password}
[DEFAULT TABLESPACE
tablespace_name]
[TEMPORARY TABLESPACE
tablespace_name ]
[ACCOUNT{LOCK|UNLOCK}];
|
Contoh :
CREATE USER scott2 IDENTIFIED BY tiger
DEFAULT TABLESPACE
mahasiswa
TEMPORARY TABLESPACE temp_ mahasiswa;
|
Pilihan diatas adalah pembuatan pemakai yang diautentifikasi
oleh password. Misalkan kita ingin membuat user scott3 yang diidentifikasi
secara external oleh OS. Sintaks yang lengkap dapat dilihat dibuku manual
ORACLE.
CREATE USER scott3 IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE
praktikum
TEMPORARY TABLESPACE temp_praktikum;
|
Sangat sulit memeriksa efektifitas dan
konsekuensi autentikasi lewat cara ini.
e. ALTER USER
Mengubah pemakai dilakukan dengan operasi ALTER USER.
Perubahan yang perlu biasanya mencakup perubahan password, default tablespace,
temporary tablespace, profile, quota, dan status penguncian. Contoh berikut
menyangkut pengubahan pemakai, memaksa pemakai untuk mengubah passwordnya.
ALTER USER scott2 IDENTIFIED BY ojonesu
PASSWORD EXPIRE ;
|
Pemanggilan operasi berikut merubah quota pemakai scott2
sehingga tidak bisa
membuat objek di
tablespace praktikum. Perhatikan bahwa tidak ada penyebutan ALTER
USER scott2
QUOTAtipe TABLESPACE . 0 MON
MAHASISWA;
|
f.
DROP USER
Membuang pemakai dilakukan
dengan operasi DROP USER. Sintaksnya :
DROP USER user_name [CASCADE];
|
Aturannya sebagai berikut :
Jika pemakai tidak memiliki objek maka penyebutan CASCADE
tidak perlu dilakukan. Sekalipun CASCADE dispesifikasikan, pembuangan pemakai
bisa gagal yang disebabkan oleh :
Mencoba membuang pemakai/user SYS dan
SYSTEM. Hal ini disebakan karena kedua user ini tidak bisa dibuang.
Mencoba
membuang user yang masih connect ke service.
Perhatikan bahwa tidak ada operasi untuk hanya membuang
obyek-obyek seorang pemakai tanpa membuang pemakai tersebut. DBA harus menulis
program khusus untuk hal itu.
g. MONITORING
USER
Berikut metadata views untuk memantau pemakai :
DBA_users
: berisi informasi seluruh user yang dimiliki oleh DBA
DBA_TS_Quotas
: berisi informasi tentang tablespace quota bagi setiap pemakai.
V$session
: untuk melihat user yang sedang connect ke
system
Coba lakukan perintah select
berikut :
SELECT * FROM DBA_users;
|
Perintah diatas digunakan untuk menampilkan semua informasi
users yang dimiliki DBA
SELECT * FROM DBA_TS_Quotas;
|
Perintah diatas digunakan untuk
menampilkan semua informasi quota tablespace masing-masing user
SELECT * FROM V$session;
|
Perintah diatas digunakan untuk menampilkan semua user yang
connect ke system
2. PRIVILEGES
Salah
satu model keamanan dalam penggunaan DBMS kita adalah adanya
privilege(hak) Model keamanan ini biasa
diapakai di OS(operating system) maupun server lainnya. a. Operasi-operasi
Operasi-operasi untuk privilege terbatas pada GRANT dan
REVOKE. Operasi GRANT memberikan hak akses kepada satu atau lebih pemakai,
sebaliknya operasi REVOKE membuang hak akses dari satu atau lebih pemakai.
Apa saja hak-hak yang diperoleh seorang pemakai/user apabila
DBA memberi grant role connect dan resource, kita bisa memberikan jawabannya
dengan melihat metadata view berikut.
Connectlah
sebagai DBA jalankan
perintah
DESCRIBE
DBA_sys_privs;
|
Contoh :
SQL> set line 10;
SQL> desc dba_sys_privs;
Name
Null? Type
GRANTEE NOT NULL VARCHAR2(30) PRIVILEGE NOT
NULL VARCHAR2(40)
ADMIN_OPTION VARCHAR2(3)
SQL> SELECT * FROM DBA_SYS_PRIVS
WHERE grantee in (‘CONNECT’,
’RESOURCE’) ORDER BY grantee;
GRANTEE PRIVILEGE ADM
---
CONNECT ALTER SESSION NO
CONNECT CREATE CLUSTER NO
CONNECT CREATE DATABASE LINK NO CONNECT CREATE SEQUENCE NO
CONNECT CREATE
SESSION NO
CONNECT CREATE SYNONYM NO CONNECT
CREATE TABLE NO CONNECT CREATE VIEW NO RESOURCE CREATE CLUSTER NO RESOURCE
CREATE INDEXTYPE NO RESOURCE CREATE OPERATOR NO RESOURCE
CREATE PROCEDURE NO
RESOURCE CREATE SEQUENCE NO RESOURCE
CREATE TABLE NO RESOURCE CREATE TRIGGER NO
RESOURCE CREATE TYPE
NO
|
Scott berhak
merubah session, membuat cluster, database link, type, sequence, session,
synonym, view, cluster, indextype, operator, procedure, sequence, table, dan
trigger.
Privilege terbagi menjadi dua jenis yaitu system-level dan
object-level. Kita akan pelajari keduanya. Sebelum itu mari kita buat seorang
user lagi.
CREATE USER scotti IDENTIFIED BY
tigeri
DEFAULT TABLESPACE
mahasiswa
TEMPORARY TABLESPACE temp_ mahasiswa;
GRANT conncet, resource to scotti;
|
System-level
privileges
System level privilege tidak
terkait dengan object tertentu secara spesifik. Semua (15) privilege yang kita
lihat diatas adalah system level, tak terkait dengan suatu object tertntu
secara spesifik. Ada lebih dari 80 system level privilege dalam oracle RDBMS.
DBA berhak untuk men-drop user dan backup tables.
Object-level
privileges
Privilege ini terkait
dengan object tertentu secara spesifik. Misal user bernama scott9
SQL> CONNEXT scott9 memiliki
dua object (bertipe sama maupun bukan). Jika scott9 hanya memberi Enter password: *****
Connected. object level privilege kepada
scotti, maka scotti tak otomatis memiliki object level privilege terhadap
object yang satu lagi. Mari kita lihat contoh dibawah
SQL> CREATE TABLE satu(a number,b varchar(9)); Table
created.
SQL> INSERT INTO
satu VALUES(1,'x'); 1 row created.
SQL> CREATE TABLE
dua(c number,d varchar(9)); Table
created.
SQL> INSERT INTO
dua VALUES(1,'x'); 1 row created.
SQL> GRANT SELECT ON
satu TO scotti; Grant succeeded.
SQL> CONNECT
scotti@basdat/tiger; Connected.
SQL> SELECT * FROM
scott9.satu;
A B
1
x
2
y
SQL> select * from
scott9.dua; select * from scott9.dua
* ERROR at line 1:
ORA-00942: table or view does not exist
|
Scotti dapat mengakses table satu
milik scott9 tetapi tidak bisa mengakses tabel dua milik scott9, karena scotti
tidak diberi akses oleh scott9 untuk mengakses tabel dua.
b. REVOKE PRIVILEGES
Sekarang kita akan mencoba mnghapus hak akses scotti
terhadap table satu. Ikuti langkah
berikut :
Masuk
sebagai user scott9
Jalankan perintah berikut
SQL> REVOKE SELECT ON satu
FROM scotti;
Revoke succeeded.
|
Masuk
sebagai user scotti
Jalankan selection
terhadap table satu milik scott9
SQL> SELECT * FROM scott9.satu;
SELECT * FROM scott9.satu
*
ERROR at line 1:
ORA-00942: table or view does not exist
|
Terlihat bahwa revoke telah menghilangkan hak akses terhadap
suatu object. Revoke hanya dapat dilakukan oleh pemberi hak akses.
c. Keamanan Privilege dan Roles
Sekarang kita akan melihat model keamanan yang melibatkan
privilege dan role. Untuk memudahkan
pemahaman mari kita lihat gambar berikut
satu
atau lebih privilege bisa di grant ke role
satu atau lebih role bisa digrant ke role satu atau lebih role bisa di grant ke
user satu atau lebih privilege bisa di
grant ke user.
3. ROLES
Role adalah sekumpulan named set
of privilege. Operasi-operasi yang terdapat pada role adalah CREATE,
ALTER, dan DROP, satu operasi SET untuk
pengaktifan ditambah dengan dua operasi GRANT dan REVOKE (seperti untuk
privilege). Role dibuat untuk mempermudah pengelolaan privilege.
a. System Defined Role
DBMS Oracle menyediakan system defined role yang siap
dipakai
Role
|
Kegunaan
|
CONNECT
|
Lihat di bab sebelumnya
|
RESOURCE
|
Lihat di bab sebelumnya
|
DBA
|
Semua privilege
dengan ADMIN OPTION
|
EXP_FULL_DATABASE
|
Export full database
|
IMP_FULL_DATABASE
|
Import full database
|
b. Creating Roles
Membuat role dilakukan dengan operasi CREATE ROLE. Ada
syarat agar seorang pemakai dapat menggunakan hak ini(membuat role), yaitu
harus memiliki hak akses untuk membuat role (CREATE ROLE). Secara default hak
ini tidak diberikan ke pemakai jadi DBA harus memberikan hak ini secara
eksplisit.
Masukklan
sebagai user anda
Jalankan
perintah berikut
SQL> CREATE ROLE mahasiswa; Role
created.
|
c. Operasi GRANT
Operasi GRANT dipakai untuk meng-assign privilege atau role
kepada role. Pertama kita akan memberikan sebuah privilege kepada role mhs_role
berupa kemampuan untuk selection kepada table mahasiswa.
SQL> GRANT SELECT ON mahasiswa TO mhs_role; Grant
succeeded.
|
Kita akan memberikan role yang telah kita buat kepada
pemakai kita yaitu scotti. Jalankan perintah SQL berikut
SQL> GRANT mhs_role TO scotti; Grant
succeeded.
|
d. Memakai Roles
Untuk
menggunakan role mhs_role
tadi oleh scotti maka
scotti harus melakaukan SET
terhadap role tersebut
SQL> SET ROLE
mhs_role;
Role set.
SQL> SEELCT * FROM scott9.mhs;
NIM NAMA
30108001
paijo
30108002 paimen
|
e. Removing Roles
Operasi yang digunakan adalah REVOKE
Masukklah
sebagai scott9 Jalankan SQL berikut
SQL> REVOKE mahasiswa FROM scotti;
Revoke succeeded.
|
Masuklah sebagai scotti
jalankan perintah berikut
SQL> CONNECT
scotti@basdat/tiger Connected.
SQL> SELECT
* FROM scott9.mhs; SELECT
* FROM scott9.mhs
* ERROR at line 1:
ORA-00942:
table or view does not exist
|
f.
Mengubah
Roles
Operasi ALTER
ROLE diapakai untuk mengubah tingkat kerahasiaan. Sintaks :
ALTER ROLE name {NOT
IDENTIFIED|IDENTIFIED {BY password| EXTERNALLY };
ALTER ROLE mhs_role IDENTIFIED EXTERNALLY;
g. Membuang Roles
Sama seperti membuang table,
index, type dan yang lainnya, yaitu menggunakan operasi DROP.
SQL> CONNECT
scott9@basdat/tiger
Connected.
SQL>
DROP ROLE
mahasiswa; Role
dropped.
|
Perhatikan efeknya, hak hak
yang diperoleh dalam role tersebut akan hilang
SQL> CONNECT
scotti@basdat/tiger
Connected.
SQL> SELECT * FROM scott9.mhs;
SELECT * FROM scott9.mhs
*
ERROR
at line 1:
ORA-00942: table or view does not exist
|
Untuk melihat role yang dimiliki anda bisa menjalankan
perintah SQL berikut
SQL> SELECT * FROM
role_sys_privs
ROLE PRIVILEGE AD
CONNECT ALTER SESSION NO
CONNECT CREATE CLUSTER NO
CONNECT
CREATE DATABASE LINK NO CONNECT CREATE
SEQUENCE NO
CONNECT CREATE SESSION NO
CONNECT CREATE SYNONYM NO
CONNECT CREATE TABLE NO
CONNECT CREATE VIEW NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE TYPE NO
16
rows selected.
|
Untuk melihat role yang sedang digunakan
SQL > SELECT * FROM session_roles;
ROLE
CONNECT
RESOURCE
|
Tugas Pendahuluan :
1.
Jelaskan yang dimaksud dengan :
a. Satu
atau lebih privilege bisa di grant ke role
b. Satu
atau lebih role bisa digrant ke role
c. Satu
atau lebih role bisa di grant ke user
d. Satu
atau lebih privilege bisa di grant ke user.
2.
Jelaskan perbedaan penggunaan “AS SYSDBA” dan “AS SYS”
3.
Role apa saja yang harus diterapkan pada USER yang baru
dibuat agar USER tersebut dapat mengelola database ? Jelaskan kegunaan
role-role tersebut.
Percobaan :
1.
Lakukan IMPORT
atas database yang telah dibuat pada modul praktikum sebelumnya.
2.
Buatlah skema user privileges dan role sebagai
berikut:
a.
Terdapat user biasa (pengunjung) yang dapat melihat dan
mencari katalog buku melalui aplikasi yang disediakan (hanya dapat melakukan
operasi select).
b.
Terdapat user administrasi logistik yang memiliki otoritas
penuh terhadap semua tabel tetapi tidak bisa melakukan akses ke schema.
c.
Terdapat user manager yang hanya dapat melakukan view
ke semua tabel.
d.
Terdapat user administrator yang memiliki akses penuh
ke semua tabel dan schema dan dapat memberikan akses yang dimilikinya ke user
yang lain.
0 komentar:
Post a Comment