Back to IF3140 Sistem Basis Data

PG-nya udah bener semua (8/11)

Pertimbangan yang diberikan adalah sebagai berikut:

  1. Untuk Devan, Jimmy, dan Program SIP, dibuatkan View spesifik untuk menerapkan Principle of Least Privilege. Mereka hanya berinteraksi dengan view ini, bukan tabel asli.
  2. Devan hanya diberikan hak SELECT dan UPDATE pada view-nya, sesuai fungsinya sebagai manajer untuk memantau dan memperbarui data performa timnya.
  3. Jimmy diberikan hak SELECT, INSERT, UPDATE pada view-nya untuk tugas manajemen data kepegawaian di wilayahnya. Kebutuhan untuk melihat daftar Jabatan/Departemen akan ditangani oleh aplikasi, bukan dengan memberikan akses langsung ke tabel master.
  4. Karin sebagai Direktur hanya memerlukan akses Read untuk monitoring dan tidak diberi hak untuk mengubah data. Ia juga diberikan akses pada view SIP yang sudah menyajikan data lengkap.
  5. Program SIP hanya bertindak sebagai penampil data melalui view INFORMASI_SIP dan tidak memiliki akses ke tabel asli sama sekali

View Query:

-- Devan
CREATE VIEW PEGAWAI_DEVAN AS
SELECT *
FROM Pegawai
WHERE IDPegawai IN (101, 102, 103, 104, 105)
OR IDManajer = 120;
 
GRANT SELECT, UPDATE ON PEGAWAI_DEVAN TO User_Devan;
 
-- Jimmy
CREATE VIEW PEGAWAI_JABAR AS
SELECT P.*
FROM Pegawai P
JOIN Jabatan J ON P.IDJabatan = J.IDJabatan
JOIN Departemen D ON J.IDDepartemen = D.IDDepartemen
JOIN Lokasi L ON D.IDLokasi = L.IDLokasi
WHERE L.Provinsi = 'Jawa Barat';
 
GRANT SELECT, INSERT, UPDATE ON PEGAWAI_JABAR TO User_Jimmy;
 
-- SIP (Diberi ke SIP dan Karin)
CREATE VIEW INFORMASI_SIP AS
SELECT
    p.IDPegawai,
    p.Nama AS NamaPegawai,
    j.NamaJabatan,
    d.NamaDepartemen,
    l.Kota,
    l.Provinsi,
    m.Nama AS NamaManajer
FROM
    Pegawai p
LEFT JOIN Jabatan j ON p.IDJabatan = j.IDJabatan
LEFT JOIN Departemen d ON j.IDDepartemen = d.IDDepartemen
LEFT JOIN Lokasi l ON d.IDLokasi = l.IDLokasi
LEFT JOIN Pegawai m ON p.IDManajer = m.IDPegawai;
 
GRANT SELECT ON INFORMASI_SIP TO Program_SIP;
GRANT SELECT ON INFORMASI_SIP TO User_Karin;

Model Kontrol Akses DAC:

Subject / ObjectRelasi PegawaiRelasi DepartemenRelasi LokasiRelasi JabatanView PEGAWAI_DEVANView PEGAWAI_JABARView INFORMASI_SIP
User Devan----Read, Update (SELECT, UPDATE)--
User Jimmy-----Read, Insert, Update (SELECT, INSERT, UPDATE)-
User KarinRead (SELECT)Read (SELECT)Read (SELECT)Read (SELECT)--Read (SELECT)
Program SIP------Read (SELECT)

a. Harry sebagai S, berdasarkan Simple Security Property, akan melihat (Read) seluruh data dalam Tabel Karyawan (karena tidak ada role yang lebih tinggi isi datanya daripada S) Gambaran data:

IDKaryawanNamaTanggalLahirNilaiKinerja
1234567891Jonathan Christie15 September 1997Sangat Baik
1235674120Anthony Sinisuka20 Oktober 1996Baik

b. Edward sebagai U, berdasarkan Simple Security Property, hanya akan melihat (Read) atribut Nama dengan isi Jonathan Christie

Nama
Jonathan Christie

c. Tidak bisa, berdasarkan Star Property, Harry hanya diperbolehkan menulis dengan tingkatan yang setara atau lebih tinggi, yakni ke S atau TS.

GRANT SELECT ON Instruktur, Pelajaran, Pengajaran TO User_A;
CREATE ROLE head_instructor;
 
GRANT INSERT, UPDATE, DELETE ON Instruktur TO head_instructor WITH GRANT OPTION;
 
GRANT ROLE head_instructor TO User_B;
GRANT ROLE head_instructor TO User_C;
CREATE VIEW Pengajaran_Instruktur_12345_2014 AS (
	SELECT *
	FROM Pengajaran
	WHERE IDInstruktur = 12345 AND Tahun = 2014
);
GRANT SELECT ON Pengajaran_Instruktur_12345_2014 TO User_D;
REVOKE SELECT ON Pengajaran FROM User_A
REVOKE INSERT, UPDATE, DELETE ON Instruktur FROM User_B CASCADE;