SQL Academy · Pelajaran

Peran dan Hak Istimewa

Berikan dan cabut akses dengan GRANT dan REVOKE.

Pelajaran 1 dari 413 langkah

Peran dan Hak Istimewa adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Apa Itu Peran dan Hak Akses?

Dalam SQL, peran adalah kelompok bernama yang berisi hak akses dan dapat ditetapkan kepada pengguna. Hak akses mengatur tindakan yang boleh dilakukan pengguna atau peran pada objek basis data seperti tabel, tampilan, dan fungsi.

Daripada memberikan izin kepada setiap pengguna secara individual, Anda membuat peran dengan hak akses yang diperlukan, lalu menetapkan peran tersebut kepada banyak pengguna sekaligus. Hal ini membuat kontrol akses jauh lebih mudah dikelola dalam skala besar.

Membuat Peran

Gunakan CREATE ROLE untuk menentukan peran baru di PostgreSQL. Sebuah peran dapat mewakili satu pengguna atau sekelompok pengguna, bergantung pada cara Anda mengonfigurasinya.

Secara bawaan, peran dibuat tanpa hak akses apa pun—Anda harus memberikan akses ke objek secara eksplisit.

CREATE ROLE readonly_user;
CREATE ROLE app_writer;
CREATE ROLE db_admin;

Memberikan Hak Akses Tabel

Pernyataan GRANT memberikan peran atau pengguna izin untuk menjalankan operasi tertentu pada objek basis data. Hak akses umum pada tingkat tabel mencakup SELECT, INSERT, UPDATE, dan DELETE.

Anda dapat memberikan satu hak akses atau beberapa hak akses sekaligus dengan memisahkannya menggunakan koma.

-- Grant SELECT only (read-only role)
GRANT SELECT ON employees TO readonly_user;

-- Grant multiple privileges
GRANT SELECT, INSERT, UPDATE ON orders TO app_writer;

Memberikan Semua Hak Akses

Jika sebuah peran memerlukan akses penuh ke tabel, Anda dapat menggunakan GRANT ALL PRIVILEGES sebagai pengganti mencantumkan setiap izin secara individual. Ini memberikan semua hak akses yang berlaku pada objek yang ditentukan.

Berhati-hatilah dengan ALL PRIVILEGES—berikan hanya kepada peran yang benar-benar memerlukan kendali penuh atas objek tersebut.

-- Grant full access to db_admin on a table
GRANT ALL PRIVILEGES ON employees TO db_admin;

-- Or the shorthand form
GRANT ALL ON orders TO db_admin;

Mencabut Hak Akses

Pernyataan REVOKE menghapus hak akses yang sebelumnya diberikan kepada peran atau pengguna. Inilah cara memperketat akses ketika persyaratan berubah atau sebuah peran tidak lagi memerlukan izin tertentu.

Setelah REVOKE, peran yang terdampak segera kehilangan hak akses yang ditentukan pada objek yang disebutkan.

-- Remove UPDATE access from app_writer
REVOKE UPDATE ON orders FROM app_writer;

-- Remove all privileges from a role
REVOKE ALL PRIVILEGES ON employees FROM readonly_user;

Menetapkan Peran kepada Pengguna

Di PostgreSQL, pengguna juga merupakan peran—peran dengan atribut LOGIN dapat terhubung ke basis data. Anda menetapkan peran grup kepada peran login menggunakan GRANT role TO user.

Setelah ditetapkan, pengguna mewarisi semua hak akses yang dimiliki peran tersebut, sehingga pengelolaan izin untuk banyak pengguna sekaligus menjadi mudah.

-- Create a login user
CREATE ROLE alice WITH LOGIN PASSWORD 'secret123';

-- Assign the readonly role to alice
GRANT readonly_user TO alice;

-- Alice can now SELECT on tables granted to readonly_user

Mencabut Peran dari Pengguna

Untuk menghapus penetapan peran dari seorang pengguna, gunakan REVOKE role FROM user. Setelah itu, pengguna tidak lagi mewarisi hak akses yang sebelumnya diberikan melalui peran tersebut.

Hal ini berguna ketika seorang karyawan berganti tanggung jawab atau meninggalkan organisasi—Anda dapat mencabut perannya tanpa mengubah definisi hak akses milik peran tersebut.

-- Remove the readonly role from alice
REVOKE readonly_user FROM alice;

-- Alice no longer has SELECT on tables via that role

Hak Akses Tingkat schema

Sebelum sebuah peran dapat mengakses objek apa pun di dalam schema, peran tersebut memerlukan hak akses USAGE pada schema itu. Tanpanya, bahkan peran yang memiliki SELECT pada tabel tertentu tidak dapat membaca data karena tidak dapat menentukan jalur schema.

Selalu berikan USAGE pada schema bersama hak akses tingkat objek.

-- Allow readonly_user to see inside the public schema
GRANT USAGE ON SCHEMA public TO readonly_user;

-- Then grant table-level privilege
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

Hak Akses Bawaan untuk Objek Mendatang

Ketika tabel baru dibuat dalam sebuah schema, peran yang sudah ada tidak otomatis mendapatkan akses ke tabel tersebut. Gunakan ALTER DEFAULT PRIVILEGES untuk memastikan bahwa objek mendatang yang dibuat oleh peran tertentu dapat diakses secara otomatis oleh peran lain.

Hal ini mencegah masalah umum ketika tabel yang baru dibuat tidak terlihat oleh peran aplikasi sampai seseorang ingat menjalankan GRANT secara manual.

-- Future tables created by the current user will be SELECTable by readonly_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO readonly_user;

-- Future tables will allow INSERT/UPDATE/DELETE for app_writer
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_writer;

WITH GRANT OPTION

Secara bawaan, peran yang menerima suatu hak akses tidak dapat meneruskan hak akses tersebut kepada peran lain. Menambahkan WITH GRANT OPTION memungkinkan penerima memberikan hak akses tersebut kepada pihak lain.

Gunakan ini dengan hati-hati—artinya peran tersebut menjadi titik delegasi tepercaya untuk kontrol akses, yang dapat mempersulit audit jika digunakan secara berlebihan.

-- app_writer can now grant SELECT on orders to other roles
GRANT SELECT ON orders TO app_writer WITH GRANT OPTION;

-- app_writer can then do:
-- GRANT SELECT ON orders TO reporting_role;

Melihat Hak Akses yang Diberikan

PostgreSQL menyimpan informasi hak akses dalam tampilan katalog sistem. Anda dapat mengueri information_schema.role_table_grants untuk melihat peran mana yang telah menerima hak akses tertentu pada tabel tertentu.

Perintah garis miring terbalik \dp tablename di psql juga menampilkan daftar hak akses untuk sebuah tabel dalam format ringkas.

-- List all table-level grants in the current database
SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.role_table_grants
WHERE table_schema = 'public'
ORDER BY grantee, table_name;

Uji Cepat

Uji pemahaman Anda tentang peran dan hak akses dalam SQL.

Ringkasan: Peran dan Hak Akses

Dalam pelajaran ini, Anda mempelajari cara SQL mengelola kontrol akses melalui peran dan hak akses:

  • CREATE ROLE menentukan peran baru atau akun pengguna
  • GRANT menetapkan hak akses (SELECT, INSERT, UPDATE, DELETE, ALL) pada objek kepada sebuah peran
  • REVOKE menghapus hak akses tersebut
  • GRANT peran TO pengguna menetapkan peran grup kepada pengguna login agar pengguna tersebut mewarisi hak aksesnya
  • Peran memerlukan USAGE pada schema sebelum dapat mengakses objek di dalamnya
  • ALTER DEFAULT PRIVILEGES memastikan objek mendatang dapat diakses secara otomatis
  • WITH GRANT OPTION memungkinkan penerima mendelegasikan hak akses tersebut lebih lanjut

Menjaga hak akses tetap minimal dan berbasis peran merupakan prinsip utama dalam desain basis data yang aman—berikan hanya yang diperlukan, dan segera cabut ketika tidak lagi dibutuhkan.

Gratis untuk memulai

Belajar SQL dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
46
Pelajaran
183

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Peran dan Hak Istimewa” gratis?

Ya — teks lengkap “Peran dan Hak Istimewa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Peran dan Hak Istimewa”?

Berikan dan cabut akses dengan GRANT dan REVOKE. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Peran dan Hak Istimewa” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Peran dan Hak Istimewa
  2. Kebijakan Keamanan Tingkat Baris
  3. Izin Tingkat Kolom
  4. Mengaudit Akses
← Kembali ke SQL Academy