arşiv

yazılar buna göre etiketlendi; ‘psql’

PostgreSQL’de Tüm Veritabanlarında Sadece Okuma Yetkisi Olan Bir Kullanıcı Oluşturma

Çarşamba, 16 Eki 2024 yorum yok

PostgreSQL’de bir kullanıcı oluşturup, bu kullanıcıya tüm veritabanlarındaki tablolar üzerinde yalnızca SELECT yetkisi vermek için aşağıdaki adımları izleyebilirsin:

1. Kullanıcıyı Oluştur

Öncelikle, tüm veritabanlarında geçerli olacak bir kullanıcı oluşturman gerekiyor. Bunu PostgreSQL’in postgres veritabanı üzerinden yapabilirsin:

CREATE USER readonly_user WITH PASSWORD 'sifre';

Bu komutla readonly_user adında bir kullanıcı oluşturuyoruz ve şifresini ayarlıyoruz.

2. Kullanıcıya Tablolarda Sadece SELECT Yetkisi Ver

Şimdi, bu kullanıcıya tüm tablolar üzerinde yalnızca SELECT izni vereceğiz. PostgreSQL’de bir kullanıcıya tüm tablolar üzerinde izin vermek için aşağıdaki adımları uygulayabilirsin. Ancak, her veritabanı için bu adımı ayrı ayrı yapman gerekecek.

Öncelikle, PostgreSQL’in sistem komutlarından GRANT komutunu kullanarak tablolar üzerinde SELECT yetkisini verebiliriz:

GRANT CONNECT ON DATABASE veritabani_adi TO readonly_user;
GRANT USAGE ON SCHEMA public TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

Yukarıdaki komutlar sırasıyla şunları yapar:

  • CONNECT yetkisi vererek kullanıcıya veritabanına bağlanma yetkisi verilir.
  • USAGE yetkisi ile kullanıcıya public şeması üzerinde erişim hakkı verilir.
  • SELECT yetkisi ile tüm tablolar üzerinde yalnızca okuma yetkisi tanımlanır.

3. Tüm Gelecekteki Tablolar için SELECT Yetkisi

Eğer ileride yeni tablolar eklenecekse ve bu kullanıcıya otomatik olarak SELECT yetkisi verilmesini istiyorsan aşağıdaki komutu da eklemen gerekir:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly_user;

Bu komut, gelecekte oluşturulacak tablolar için readonly_user kullanıcısına otomatik olarak SELECT yetkisi verir.

4. Tüm Veritabanlarına Uygulama

Yukarıdaki işlemleri her veritabanı için tekrar etmen gerekiyor. PostgreSQL’de bir veritabanından diğerine direkt geçiş yapamazsın, bu yüzden her veritabanına bağlanarak aynı adımları uygulamalısın:

psql -d veritabani1 -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;"
psql -d veritabani2 -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;"
...

Bu şekilde tüm veritabanlarına erişimi kısıtlayarak, sadece SELECT yetkisi verebilirsin.

5. Ekstra Güvenlik

Eğer kullanıcının veri değiştirme yetkisini daha da sınırlamak istiyorsan, INSERT, UPDATE ve DELETE gibi yetkileri de manuel olarak iptal edebilirsin:

REVOKE INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public FROM readonly_user;

Bu adımlarla, readonly_user kullanıcısı sadece tablolar üzerinde SELECT yapabilecek, veri ekleme, güncelleme veya silme yetkisine sahip olmayacaktır.

Categories: Genel Tags: