Minggu, 09 Januari 2011

USER, PRIVILEGE dan ROLE

USER MANAGAMENT

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).

User versus Schema

Literatur oracle sering sekali mamakai 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).

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 menyatakan LOCK atau UNLOCK suatu account pada dasarnya kita melakukan LOCK USER atau UNLOCK USER.

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 mengecek effektifitas dan konsekuensi autentikasi lewat cara ini.

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 peterpan
PASSWORD EXPIRE;

Pemanggilan operasi berikut merubah quota pemakai scott2 sehingga tidak bisa membuat objek di tablespace praktikum. Perhatikan bahwa tidak ada penyebutan tipe TABLESPACE .

ALTER USER scott2
QUOTA 0 MON MAHASISWA;

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.

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 selectin 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

 

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.

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.
1. connectlah sebagai DBA
2. jalankan perintah
DESCRIBE DBA_sys_privs;
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.
Privilage 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 tiger
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 memiliki dua object (bertipe sama maupun bukan). Jika scott9 hanya memberi object level privilege kepada scotti, maka scotti tak otomatis memiliki object level privilege terhadap object yang satu lagi.
Mari kita lihat contoh dibawah
SQL> connect scott9
Enter password: *****
Connected.

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 table dua milik scott9, karena scotti tidak diberi akses oleh scott9 untuk mengakses table dua.

REVOKE PRIVILEGES

Sekarang kita akan mencoba mnghapus hak akses scotti terhadap table satu. Ikuti langkah berikut :
1.     masuk sebagai user scott9
2.     jalankan perintah berikut

SQL> revoke select on satu from scotti;
Revoke succeeded.

3.     masuk sebagai user scotti
4.     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.


Keamanan Privilege dan Roles

Sekarang kita akan melihat model keamanan yang melibatkan privilege dan role. Untuk memudahkan pemahaman mari kita lihat gambar berikut

Keterangan :
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.

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.

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


Creating Roles

Membuat role dialakukan 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 explicit.

1. masukklan sebagai user anda
2. jalankan perintah berikut

SQL> CREATE ROLE mahasiswa;
Role created.


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.


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> select * from scott9.mhs;
NIM       NAMA
-----------   --------------------
30108001 paijo
30108002  paimen


Removing Roles

Operasi yang digunakan adalah REVOKE
1.     masukklah sebagai scott9
2.     jalankan SQL berikut

SQL> REVOKE mahasiswa from scotti;

Revoke succeeded.

3.     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

Mengubah Roles

Operasi ALTER  ROLE diapakai untuk mengubah tingkat kerahasiaan.
Sintaks :
ALTER ROLE name {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY };

 
 

Contoh :
ALTER ROLE mhs_role NOT IDENTIFIED;
ALTER ROLE mhs_role IDENTIFIED BY SCOTT9;
ALTER ROLE mhs_role IDENTIFIED EXTERNALLY;

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 bis amenjalankan 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

5 komentar:

  1. kak, mau tanya
    kalo pk mysql kok ga bisa ngasih hak akses ya (grant)
    apa beda ya sama oracle ?
    maaf msh belajar :D

    BalasHapus
    Balasan
    1. saya juga gitu, jika anda mau anda harus menggunakan run sql command line saya sudah coba dan berhasil.

      Hapus
  2. ijin memakai materinya ya, terima kasih

    BalasHapus
  3. Betway review for 2021 | JTM Hub
    The Betway 밀양 출장안마 sportsbook will offer a variety of sports from 군포 출장마사지 Premier League and EPL to EPL 춘천 출장마사지 and more. The 익산 출장안마 Betway 논산 출장샵 app offers an

    BalasHapus