PostgreSQL Kullanıcı Yönetimi: Rol Oluşturma ve Yetkilendirme Rehberi

PostgreSQL veritabanlarında güvenli kullanıcı yönetimi, rol oluşturma ve yetki atama süreçlerini adım adım öğrenin. En iyi pratiklerle veritabanı güvenliğinizi sağlayın.

L
Linuxize
19 görüntülenme
PostgreSQL Kullanıcı Yönetimi: Rol Oluşturma ve Yetkilendirme Rehberi

Giriş

PostgreSQL veritabanı yönetiminde, güvenlik en kritik unsurlardan biridir. Üretim ortamlarında, tüm bağlantıların postgres süper kullanıcısı ile yapılması büyük bir güvenlik açığıdır. Bu makalede, her uygulama ve geliştirici için özel rol (role) tanımlamayı, yetkilendirmeyi ve yönetimi öğreneceğiz.

Rol ve Kullanıcı Kavramı

PostgreSQL'de CREATE USER ve CREATE GROUP komutları, yerini modern CREATE ROLE komutuna bırakmıştır. LOGIN yetkisine sahip bir rol kullanıcı, sahip olmayan ise bir grup olarak işlev görür.

Adım 1: PostgreSQL'e Bağlanma

Tüm işlemler psql kabuğu üzerinden gerçekleştirilir. Sisteminize giriş yapmak için şu komutu kullanın:

sudo -u postgres psql

Adım 2: Rol Oluşturma

Basit bir rol oluşturmak için:

CREATE ROLE uygulama_rolu;

Giriş yapabilen ve şifresi olan bir kullanıcı oluşturmak için:

CREATE USER uygulama_kullanicisi WITH PASSWORD 'guclu_sifre';

Uyarı: Şifreleri asla kod depolarına (Git vb.) yüklemeyin. .env dosyalarını veya güvenli kasa (secrets manager) çözümlerini kullanın.

Adım 3: Yetkilendirme (Grant Privileges)

Veritabanı düzeyinde yetki vermek için:

GRANT CONNECT ON DATABASE veritabani_adi TO uygulama_kullanicisi;

Tablo düzeyinde yetki vermek için:

GRANT SELECT, INSERT, UPDATE ON TABLE tablo_adi TO uygulama_kullanicisi;

Adım 4: Gelecekteki Nesneler İçin Varsayılan Yetkiler

Yeni oluşturulan tablolara otomatik yetki atamak için ALTER DEFAULT PRIVILEGES kullanılır:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT ON TABLES TO uygulama_kullanicisi;

Adım 5: Rol Silme

Bir rolü silmeden önce ona bağlı nesneleri temizlemeniz gerekir:

  1. REASSIGN OWNED BY kullanici TO postgres;
  2. DROP OWNED BY kullanici;
  3. DROP ROLE kullanici;

Sık Karşılaşılan Sorunlar

Erişim Reddedildi Hatası: Eğer permission denied for schema public hatası alıyorsanız, GRANT USAGE ON SCHEMA public TO rol; komutunu çalıştırarak şema erişimini onaylayın.

Özet: PostgreSQL rol tabanlı erişim kontrolü (RBAC), veritabanı güvenliğinin temelidir. Her zaman 'en az ayrıcalık' (least privilege) prensibini uygulayın.

Kaynak

Linuxize