giriiş
PostgreSQL, kullanıcıları ve erişim düzeylerini yönetmek için gelişmiş bir sisteme sahip, güçlü ve kurumsal düzeyde bir veritabanıdır. PostgreSQL'de geleneksel anlamda "Kullanıcı" diye bir şey yoktur; her şey tek bir varlıktır. Rol Bir kullanıcının veya bir grubun davranışını sergileyebilen.
Rollerin ve izinlerin doğru kullanımı güvenliği artırır, veritabanlarını daha iyi yönetir ve istenmeyen erişimleri engeller; özellikle PostgreSQL'i bir VPS'de çalıştırırken.
1. Roller ve İzinlerle Çalışmanın Ön Koşulları
Başlamak için aşağıdakilere sahip olmanız gerekir:
Bir Linux VPS (Ubuntu 20.04 veya 22.04 gibi)
PostgreSQL kuruldu
Kök veya sudo kullanıcı erişimi
Komut satırına temel giriş
Postgres hesabınıza giriş yapın:
sudo -i -u postgres
psql2. PostgreSQL'de Rolleri Görüntüleme
Mevcut tüm rolleri görüntülemek için:
\duÖrnek çıktı:
Role name | Attributes | Member of
-----------+----------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replicate | {}3. Yeni bir rol oluşturun
Yöntem 1: psql içinden bir rol oluşturun
CREATE ROLE user_demo;Bu rolün henüz oturum açma izni yok.
Yöntem 2: Belirli özelliklere sahip bir rol oluşturma
Örnek: Şifre ile giriş yapılabilen rol:
CREATE ROLE user_demo WITH LOGIN PASSWORD 'StrongPass123';
Yöntem 3: CLI aracılığıyla bir rol oluşturun
createuser --interactiveBu yöntemde size şu soru sorulacaktır:
Süper kullanıcı mı?
Veritabanı oluşturulmasına izin veriliyor mu?
Rol oluşturulmasına izin veriliyor mu?
4. PostgreSQL'de bir rolü silin
Rolü sil:
DROP ROLE user_demo;Rol mevcut değilse bir hata oluşmasını önlemek için:
DROP ROLE IF EXISTS user_demo;5. Rol oluştururken yapılacak ayarlar
PostgreSQL, bir Rol oluştururken önemli özellikleri belirtmenize olanak tanır:
CREATE ROLE app_user
WITH LOGIN
CREATEDB
NOCREATEROLE
PASSWORD 'ExamplePass';En önemli özellikler:
| Özellik | Açıklama |
|---|---|
| GİRİŞ YAPMAK | Veritabanına erişim izni |
| CREATEDB | Veritabanı oluşturma izni |
| YARATICI ROLE | Rol oluşturma izni |
| MİRAS ALMAK | Anne rolünden izin almak |
| SÜPER KULLANICI | Tam erişim |
| ŞİFRE | Şifre |
| GEÇERLİLİK TARİHİ | Son kullanma tarihini ayarlayın |
6. ALTER ROLE ile Rol ayarlarını değiştirin
Daha sonra bir rolün izinlerini değiştirmek isterseniz:
Giriş Ekleme:
ALTER ROLE app_user WITH LOGIN;Giriş yapma yeteneğini kaldırın:
ALTER ROLE app_user WITH NOLOGIN;Şifre değiştir:
ALTER ROLE app_user WITH PASSWORD 'NewPassword!';7. PostgreSQL'e başka bir rolle giriş yapın
1) İlk önce rol şifresini ayarlayın:
2) psql'den çıkın:
3) Yeni bir rol olarak giriş yapın:
8. İzinleri test etmek için bir tablo oluşturun
9. PostgreSQL'de İzin Verme (GRANT)
Belirli bir iznin verilmesi:
INSERT izni:
TÜM Ayrıcalıkları Vermek:
Tüm kullanıcılara erişim izni verilmesi (Genel):
10. Her tablo için izinleri görüntüleyin
11. İzinleri iptal et (REVOKE)
Belirli bir rolden Ekleme iznini iptal edin:
Tüm izinleri iptal et:
Genel izni kaldır:
12. PostgreSQL'de Grup Rolü
Grup rolü, diğer rollerin üyesi olduğu bir roldür; örneğin Linux grupları gibi.
1) Bir Grup Rolü Oluşturun:
2) Gruba kullanıcı ekleme:
3) Üyelik Kontrolü:
4) Grup rolünün kullanımı:
Bu andan itibaren dev_team'in sahip olduğu tüm yetkiler aktif hale gelecektir.
5) INHERIT ile otomatik kalıtım
13. Bir rolü silmeden önce nesnelerin sahipliğini aktarın
Bir rolü silmek istiyorsanız ancak tablo veya veritabanı ona aitse:
Tablo sahibini değiştir:
Daha sonra rolü silin:
14. VPS'de Rolleri Kullanırken Önemli Güvenlik İpuçları
Her servisin (Backend, Cronjob, Worker) ayrı bir Rolü olmalıdır.
Güvenlik ipucu olarak düşük erişimli roller kullanın.
Veritabanı mimarisinde hiçbir uygulamanın rolü yoktur.
süper kullanıcıVerme.Rol şifreleri güçlü olmalı ve son kullanma tarihleri olmalıdır.
Örneğin, erişimi yönetmek için her zaman grupları kullanın.
Çözüm
PostgreSQL'deki neredeyse her şey rol tabanlıdır. Tek bir yönetim modeliyle kullanıcılar, gruplar, sistem rolleri ve uygulama rolleri oluşturabilirsiniz. Ayrıca, araçlar HİBE ETMEK Ve GERİ ÇEKMEK Tablolar, şemalar, veritabanları ve fonksiyonlar üzerinde tam kontrol sağlarlar.
PostgreSQL'de doğru rol yönetimi, özellikle VPS'lerde çok önemlidir, çünkü tüm veritabanı sisteminizin güvenliği ve istikrarı buna bağlıdır.









