Peran database dan kontrol akses

Perancangan Basis Data

Lis Sulmont

Curriculum Manager

Memberi dan mencabut akses ke sebuah view

GRANT privilege(s) atau REVOKE privilege(s)

ON object

TO role atau FROM role

  • Privilege: SELECT, INSERT, UPDATE, DELETE, dll.
  • Objek: tabel, view, skema, dll.
  • Peran: pengguna DB atau kelompok pengguna DB
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Perancangan Basis Data

Peran database

  • Kelola izin akses database
  • Peran database adalah entitas yang memuat informasi untuk:
    • Menetapkan hak akses peran
      • Bisa login?
      • Bisa membuat database?
      • Bisa menulis ke tabel?
    • Berinteraksi dengan sistem autentikasi klien
      • Kata sandi
  • Peran dapat ditetapkan ke satu atau lebih pengguna
  • Peran bersifat global di seluruh instalasi klaster database
Perancangan Basis Data

Membuat peran

  • Peran kosong
CREATE ROLE data_analyst;
  • Peran dengan beberapa atribut
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
Perancangan Basis Data

Memberi dan mencabut privilege dari peran

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

Privilege yang tersedia di PostgreSQL:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, dan USAGE
1 http://bit.ly/postgresql_privileges
Perancangan Basis Data

Pengguna dan grup (keduanya peran)

  • Peran adalah entitas yang dapat berfungsi sebagai pengguna dan/atau grup
    • Peran pengguna
    • Peran grup

Grafik peran: lingkaran luar adalah peran grup dan tiga lingkaran di dalamnya adalah peran pengguna

Perancangan Basis Data

Pengguna dan grup (keduanya peran)

Peran grup

CREATE ROLE data_analyst;

Peran pengguna

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Perancangan Basis Data

Pengguna dan grup (keduanya peran)

Peran grup

CREATE ROLE data_analyst;

Peran pengguna

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Perancangan Basis Data

Peran PostgreSQL umum

Peran Akses yang diizinkan
pg_read_all_settings Baca semua variabel konfigurasi, termasuk yang biasanya hanya untuk superuser.
pg_read_all_stats Baca semua view pg_stat_* dan gunakan berbagai ekstensi statistik, termasuk yang biasanya hanya untuk superuser.
pg_signal_backend Kirim sinyal ke backend lain (mis.: batalkan kueri, hentikan).
Lainnya... Lainnya...
1 http://bit.ly/default_roles_postgresql
Perancangan Basis Data

Manfaat dan risiko peran

Manfaat

  • Peran tetap ada setelah pengguna dihapus
  • Peran bisa dibuat sebelum akun pengguna
  • Menghemat waktu DBA

Risiko

  • Kadang peran memberi akses berlebih ke pengguna tertentu
    • Perlu diawasi
Perancangan Basis Data

Ayo berlatih!

Perancangan Basis Data

Preparing Video For Download...