PostgreSQL'de, işletim sistemi kullanıcısı ile veritabanı kullanıcısı farklı kavramlardır. Yani, her veritabanının, işletim sistemi kullanıcılarından ayrı olarak, kullanıcıları belirlenir. Bu kullanıcıların veri tabanına bağlantı metodları ile ilgili bilgiye pg_hba.conf dosyasından ulaşabilirsiniz. Bu kullanıcıların parolaları da, pg_authid sistem katalogunda saklanır.

Aşağıdaki gibi bir sorgu ile bu katalogun içindeki bilgilere erişebilirsiniz:

SELECT * FROM pg_authid;


Aşağıda MD5 ve SCRAM ile şifrelenmiş iki parola örneği görünmektedir:

Farklı parola-tabanlı kimlik doğrulama yöntemlerinin kullanılabilirliği, kullanıcının sunucudaki parolasının nasıl şifreleneceğine bağlıdır. Bu, parola ayarlandığında, yapılandırma parametresi olan 'password_encryption' ile kontrol edilmektedir.

Eğer bir parola 'scram-sha-256' metoduyla şifrelenmişse, 'scram-sha-256' ve parola doğrulama yöntemleri için kullanılabilir. Bir parola MD5 ayarı kullanılarak şifrelenirse, yalnızca MD5 ve parola doğrulama yöntemi tanımlamaları için kullanılabilir.

Var olan metodu MD5'ten 'scram-sha-256' ya değiştirmek istiyorsak, öncelikle, mevcut olan tüm istemci kütüphanelerinin scram'ı destekleyecek kadar yeni olup olmadığını kontrol etmemiz gerekmektedir. Daha sonra, postgresql.conf dosyasında şu değişikliği yapmamız gerekmektedir:

password_encryption = 'scram-sha-256',

daha sonra tüm kullanıcıları yeni metoda uygun parolalar ayarlanmalı, son olarak pg_hba.conf içindeki kimlik doğrulama yöntemi özelliklerini 'scram-sha-256' ya değiştirmeliyiz.

Ayrıca 'password_encryption' parametresini değiştirdikten sonra, değişikliklerin geçerli olması için PostgreSQL'i 'reload' etmemiz gereklidir. Bu işlemi aşağıdaki gibi bir komutla uygulayabiliriz:

systemctl reload postgresql-10


Ayrıca, parolalar üzerinde işlem yapmak(ekleme, kaldırma, değiştirme) için CREATE USER ve ALTER ROLE gibi komutlar kullanılabilir. Örneğin,

Veri tabanımıza yeni bir kullanıcı eklemek istiyorsak,

CREATE USER kullanıcı_adı ENCRYPTED PASSWORD 'belirlediğinizgüçlübirparola';


Dip not: PostgreSQL 10'dan 'UNENCRYPTED' parametresi kaldırılmıştır. Yani, 'PASSWORD' ile 'ENCRYPTED PASSWORD' parametreleri eşdeğerdir.
Veya oluşturduğumuz rolün parolasını değiştirmek istiyorsak,


ALTER ROLE kullanıcı_adı ENCRYPTED PASSWORD 'farklıparola';

Bir kullanıcı için parola oluşturulmamışsa, MD5 ve scram metodlarında, parolası her zaman boş(null) kalır ve parola doğrulaması başarısız olur.
CREATE USER ve ALTER ROLE komutlarının farklı kullanımları için buradan ve buradan ulaşabilirsiniz.


Şimdi bu iki metodu ayrıntılı inceleyelim.

MD5 nedir, algoritması nasıl çalışır?


Parola bazlı bir kimlik doğrulama yönetimidir,tam adı Message-Digest Algorithm(Mesaj Özeti Algoritması)'dir. Bu algoritma, tek yönlü bir kriptoloji fonksiyonudur, temel amacı ise orijinal mesajı doğrulamaktır. Girdi olarak herhangi uzunlukta bir dosyayı kabul edebilir, çıktı olarak sabit uzunlukta bir değer verir. MD5 algoritması, diğerlerine göre (MD4 ve MD2) daha hızlı olmasa da, daha güvenilir bir algoritmadır.

MD5, 512 bit bloklar halinde verileri işler, her biri 32 bitten oluşan 16 kelimeye döndürür. Bu işlemin çıktısı, 128 bitlik bir değerdir. MD5 değerinin hesaplanmasının ilk aşaması, ardışık 16lık sayısal değerler kullanılarak başlar. Her aşamada, mevcut bloktaki ve önceki bloklarda işlenmiş olan değerleri işleyen 4 md geçişi vardır. Son blokta hesaplanan son değer, bu bloğun MD5 özeti olur.

 

PostgreSQL 10 ile gelen yeni bir metod: scram-sha-256


SASL, bağlantı yönelimli protokollerde kimlik doğrulaması için kullanılan bir yapıdır. 'Scram-sha-256' ise, PostgreSQL'in şimdilik tek SASL mekanizmasıdır. Bu yüzden 'scram' olarak da adlandırılır. Scram metodu kullanılan durumlarda, sunucu, istemci ilk mesajında kullanıcının adını yok sayar. Başlangıç mesajında gönderilmiş olan kullanıcı adı yerine kullanılır. Kullanıcı adı belirleme işleminde, 'scram-sha-256' UTF-8 kullanımını desteklerken, PostgreSQL çoklu karakter kodlamasını destekler. Bu yüzden, PostgreSQL'in kullanıcı adını UTF-8'de sunması imkansız olabilir.

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Submitted comments will be subject to moderation before being displayed.