Pendahuluan
Hak istimewa pengguna dan manajemen akses hak istimewa adalah konsep keamanan penting untuk semua jenis basis data. PostgreSQL menangani kontrol akses melalui peran dan hak istimewa. Misalnya, menambahkan izin LOGIN ke peran akan menghasilkan pengguna. Postgres menawarkan beberapa cara untuk membuat dan mengelola akun pengguna.
Tutorial ini menunjukkan cara membuat dan menyiapkan berbagai jenis pengguna untuk database PostgreSQL.
Prasyarat
- Postgres diinstal (ikuti panduan kami untuk Ubuntu atau Windows).
- Akses ke terminal dengan hak istimewa sudo.
- Akses ke pengguna postgres.
Buat Pengguna Baru di PostgreSQL
Ada dua cara untuk membuat pengguna baru di PostgreSQL, dan kedua kasus memerlukan akses ke postgres pengguna.
Metode 1:Menggunakan Utilitas Klien createuser
Cara pertama untuk membuat pengguna baru adalah dengan createuser
utilitas klien. Metode ini menghindari koneksi ke antarmuka baris perintah PSQL.
Untuk membuat pengguna, jalankan perintah berikut di terminal:
sudo -u postgres createuser <name>
Terminal tidak mengeluarkan pesan. Untuk menggemakan pesan server, tambahkan -e
tag:
sudo -u postgres createuser -e <name>
Misalnya:
sudo -u postgres createuser -e john
Atau, bagi perintah menjadi dua bagian:
1. Beralih ke postgres pengguna:
sudo su - postgres
2. Jalankan createuser
perintah:
createuser <name>
Postgres secara otomatis membuat pengguna (peran dengan izin masuk) dalam kedua kasus.
Metode 2:Menggunakan PSQL
Cara kedua untuk membuat pengguna baru di PostgreSQL adalah melalui shell PSQL interaktif.
1. Beralih ke postgres pengguna dan mulai terminal interaktif dengan:
sudo -u postgres psql
Sesi terminal berubah menjadi postgres=#
, menunjukkan koneksi yang berhasil ke shell Postgres.
2. Gunakan pernyataan berikut untuk membuat pengguna:
CREATE USER <name>;
Misalnya:
CREATE USER mary;
Menjalankan perintah akan mencetak CREATE ROLE
ke konsol. Alasannya adalah CREATE USER
query adalah alias untuk perintah berikut:
CREATE ROLE <name> WITH LOGIN;
Kedua kueri menghasilkan hasil yang sama.
Buat Pengguna Super di PostgreSQL
Untuk membuat superuser di PostgreSQL, Anda harus memiliki peran superuser.
Peringatan: Superuser database melewati semua pemeriksaan, yang berbahaya dari aspek keamanan. Gunakan tindakan ini dengan hati-hati dan hindari bekerja dengan akun pengguna super kecuali benar-benar diperlukan.
Ada dua cara untuk membuat superuser di PostgreSQL:
1. Buat peran pengguna super melalui utilitas klien dengan menambahkan --superuser
tag:
sudo -u postgres createuser --superuser <name>
Atau gunakan tag singkatan -s
bukannya --superuser
:
sudo -u postgres createuser -s <name>
Terminal mengeluarkan pesan jika terjadi kesalahan atau jika pengguna sudah ada. Jika berhasil, tidak ada pesan yang muncul.
2. Atau, gunakan CREATE USER
Pernyataan PSQL:
CREATE USER <name> SUPERUSER;
CREATE USER
pernyataan adalah alias untuk pernyataan berikut:
CREATE ROLE <name> LOGIN SUPERUSER;
CREATE ROLE
pernyataan memerlukan penambahan LOGIN
izin untuk meniru pengguna.
Buat Kata Sandi untuk Pengguna
Setiap pengguna database harus memiliki password yang kuat untuk mencegah serangan brute force. PostgreSQL menawarkan dua metode untuk membuat pengguna dengan kata sandi.
Peringatan: Dari dua metode, yang pertama lebih disukai dan lebih aman.
1. Gunakan createuser
utilitas klien dan tambahkan --pwprompt
opsi untuk memanggil prompt pembuatan kata sandi secara otomatis:
sudo -u postgres createuser <name> --pwprompt
Versi singkatannya adalah -P
tag:
sudo -u postgres createuser <name> -P
Terminal meminta untuk memasukkan kata sandi dua kali. Kata sandi itu sendiri atau panjangnya dienkripsi dan disembunyikan saat berkomunikasi dengan server.
2. Gunakan PSQL untuk membuat pengguna dengan kata sandi:
CREATE USER <name> WITH PASSWORD '<password>';
Jika pengguna sudah ada, tambahkan kata sandi dengan menggunakan ALTER USER
:
ALTER USER <name> WITH PASSWORD '<password>';
Manajemen kata sandi melalui PSQL hadir dengan tiga kerentanan keamanan:
- Kata sandi terlihat di layar.
- Melihat riwayat perintah akan membuka sandi.
- Informasi dikirimkan sebagai teks yang jelas tanpa enkripsi apa pun.
Gunakan metode ini dengan hati-hati.
Berikan Hak Istimewa kepada Pengguna
Secara default, pengguna baru tidak memiliki hak istimewa apa pun kecuali untuk login. Untuk menambahkan hak istimewa saat membuat pengguna, jalankan createuser
utilitas klien dalam format berikut:
createuser <option> <name>
Untuk melakukan hal yang sama di PSQL, jalankan:
CREATE USER <name> WITH <option>;
Di bawah ini adalah tabel dengan opsi yang umum digunakan untuk kedua metode.
Sintaks Opsi | PSQL | Penjelasan |
---|---|---|
-s --superuser | SUPERUSER | Tambahkan hak pengguna super. |
-S --no-superuser | NOSUPERUSER | Tidak ada hak pengguna super (default). |
-d --createdb | CREATEDB | Memungkinkan pengguna untuk membuat database. |
-D --no-createdb | NOCREATEDB | Tidak diperbolehkan membuat database (default). |
-r --createrole | CREATEROLE | Memungkinkan pengguna untuk membuat peran baru. |
-R --no-createrole | NOCREATEROLE | Tidak diizinkan membuat peran (default). |
-i --inherit | INHERIT | Otomatis mewarisi hak istimewa peran (default). |
-I --no-inherit | NOINHERIT | Jangan mewarisi hak istimewa peran. |
-l --login | LOGIN | Memungkinkan pengguna untuk masuk ke sesi dengan nama peran (default). |
-L --no-login | NOLOGIN | Tidak diizinkan masuk ke sesi dengan nama peran. |
--replication | REPLICATION | Memungkinkan memulai replikasi streaming dan mengaktifkan/menonaktifkan mode pencadangan. |
--no-replication | NOREPLICATION | Tidak diizinkan untuk memulai replikasi streaming atau mode pencadangan (default). |
-P --pwprompt | PASSWORD '<password>' | Memulai permintaan pembuatan kata sandi atau menambahkan kata sandi yang diberikan kepada pengguna. Hindari menggunakan opsi ini untuk membuat pengguna tanpa kata sandi. |
/ | PASSWORD NULL | Secara khusus menyetel kata sandi ke nol. Setiap otentikasi kata sandi gagal untuk pengguna ini. |
-c <number> --connection-limit=<number> | CONNECTION LIMIT <number> | Menyetel jumlah maksimum koneksi untuk pengguna. Default adalah tanpa batas. |
Misalnya, buat pengguna dengan membuat peran dan hak istimewa basis data dan tambahkan -e
tag untuk menggemakan hasil:
sudo -u postgres createuser -d -r -e <name>
Atau gunakan padanan PSQL:
CREATE USER <name> WITH CREATEROLE CREATEDB;
Dalam kedua kasus, hak istimewa yang disebutkan diberikan secara otomatis kepada pengguna baru.
Buat Pengguna PostgreSQL Secara Interaktif
Pembuatan pengguna interaktif adalah pilihan praktis yang tersedia hanya untuk utilitas klien. Untuk membuat pengguna secara interaktif, jalankan perintah berikut:
sudo -u postgres createuser --interactive
Perintah secara otomatis memunculkan serangkaian pertanyaan, menanyakan hal berikut:
- Nama peran.
- Apakah perannya adalah pengguna super.
- Jika pengguna diizinkan untuk membuat database.
- Jika pengguna diizinkan untuk membuat peran lain.
Jawab ya (y
) ke pertanyaan superuser secara otomatis untuk menambahkan hak istimewa "buat database" dan "buat peran" dan akhiri prompt.
Mencantumkan Semua Pengguna di PostgreSQL
Alat penting untuk manajemen pengguna dalam basis data adalah membuat daftar semua pengguna dengan peran dan hak istimewanya masing-masing.
Untuk membuat daftar semua pengguna di PostgreSQL, lakukan hal berikut:
1. Hubungkan ke prompt PSQL sebagai pengguna postgres:
sudo -u postgres psql
2. Daftar semua pengguna dengan perintah berikut:
\du
Output menunjukkan tabel dengan nama peran, atribut (hak istimewa), dan grup pengguna. Untuk menampilkan deskripsi setiap peran, tambahkan tanda tambah (+
) tanda:
\du+
Output menunjukkan kolom tambahan dengan deskripsi peran jika berlaku.