arşiv

0, 2024 için arşiv

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:

Serilog.Expressions – Nuget

Pazartesi, 14 Eki 2024 yorum yok

Serilog.Expressions NuGet paketi, Serilog ile loglama yaparken log filtrelemelerini ve veri manipülasyonlarını daha güçlü ve esnek hale getirmek için kullanılan bir kütüphanedir. Bu paket, log mesajlarının içeriğine dayalı olarak dinamik kurallar tanımlayarak loglama işlemlerine daha fazla kontrol imkanı sağlar. Serilog.Expressions, Serilog’un geleneksel yapılandırmasına ek olarak bir ifade dilini (expression language) destekler.

Başlıca özellikleri şunlardır:

  • Dinamik Filtreleme: Log mesajlarını içeriklerine göre filtrelemek için esnek ifadeler yazmanızı sağlar. Örneğin, bir log mesajında belirli bir alanın belirli bir değeri içermesi durumunda sadece o logları kaydetmek gibi işlemler yapılabilir.
  logger.Filter.ByExpression("Properties.Level = 'Error'");

Bu örnekte, sadece hata seviyesindeki loglar kaydedilir.

  • Koşullu Loglama: Loglama işlemlerini belirli koşullara bağlayabilirsiniz. Örneğin, bir log sadece belirli bir kullanıcı adı içeriyorsa kaydedilsin gibi koşullar eklenebilir.
  • Veri Dönüştürme: Log verileri üzerinde işlem yaparak, kaydetmeden önce veriyi değiştirebilir ya da maskeleyebilirsiniz. Örneğin, log içindeki hassas bilgileri maskelerseniz:
  logger.Filter.ByExpression("Message contains 'password' ? '***' : Message");
  • Gelişmiş Sorgular: Log verilerini dinamik olarak sorgulamak ve düzenlemek için Serilog içinde bir sorgu dili sunar. Bu, log mesajlarının belirli alanlarına göre filtreleme yapmayı kolaylaştırır (örneğin, JSON alanları üzerinde işlem yapma).

Ne Zaman Kullanılır?

  • Detaylı Loglama: Log seviyelerine göre veya log mesajlarındaki içeriğe göre ayrıntılı kontrol gerektiren durumlarda kullanışlıdır.
  • Hassas Verilerin Yönetimi: Örneğin, loglarda kişisel verileri veya hassas bilgileri maskelemek için kullanılabilir.
  • Dinamik Loglama: Statik filtreleme yerine daha dinamik, içerik tabanlı loglama ihtiyaçlarınız olduğunda idealdir.

Bu paket, büyük veya karmaşık uygulamalarda loglama işlemlerine esneklik katar ve uygulamanızın loglarını daha detaylı ve etkili bir şekilde yönetmenize yardımcı olur.

Categories: Genel Tags:

Serilog.Redaction – Nuget

Pazartesi, 14 Eki 2024 yorum yok

Serilog.Redaction NuGet paketi, Serilog ile loglama yaparken hassas verilerin (örneğin, kişisel bilgiler, kredi kartı numaraları, şifreler vb.) loglarda görünmesini önlemek için kullanılır. Bu paket, log mesajlarını yazmadan önce belirli verileri maskeleyerek (redact ederek) gizler. Bu şekilde loglarınızı güvenli tutarak, hassas bilgilerin sızmasını ya da yanlışlıkla erişilmesini engelleyebilirsiniz.

Başlıca özellikleri şunlardır:

  • Hassas Bilgilerin Gizlenmesi: Belirli desenleri veya verileri loglardan çıkartarak, bu bilgilerin log dosyalarına yazılmasını engeller.
  • Kolay Entegrasyon: Serilog yapılandırması içine eklenerek, çok az bir konfigürasyonla kullanılabilir.
  • Esnek Kullanım: Redaction işlemi için farklı kurallar ve desenler tanımlanabilir. Örneğin, belirli bir JSON alanı ya da regex ile eşleşen veriler maskelemeye alınabilir.

Bu paket, özellikle kişisel verilerin korunmasının önemli olduğu projelerde kullanışlıdır. Örneğin, GDPR gibi veri koruma yönetmeliklerine uyum sağlamak isteyen uygulamalar için ideal olabilir.

https://github.com/zyofeng/serilog-redaction

Categories: Genel Tags:

Keycloak tip: disabling the review profile step when using twitter,microsoft,gmail… as an identity provider

Pazartesi, 07 Eki 2024 yorum yok

Keycloak’ta kimlik sağlayıcılar ile login kullanıyorsanız, kullanıcı ilk kez oturum açtığında can sıkıcı küçük bir sorunla karşılaşmış olabilirsiniz: kullanıcı adı, soyadı v.s içeren “Update Account” inceleme profili formu görünür. Bu gönderide, yapılandırma yoluyla bu sorunu nasıl aşabildiğimizi paylaşmak istiyoruz.

Background:

By the default, the review profile is a required step of the first broker login flow which is triggered whenever authentication is done through an identity provider

screen_shot

The review profile step is meant to prompt the user about a missing required profile property (usually first name or last name) that could not be obtained from the identity provider. Additionally, the review profile can be configured to trigger in all the cases regardless of whether the user info are obtained or not by setting the authenticator configuration option to on instead of missing, or not to be triggered at all by setting the option to off.

screen_shot
devamını oku…
Categories: Genel Tags: