PostgreSQL’de User ve Role Yönetimi

Postgresql veri tabanı ve objelere erişim haklarını kontrol edebilmek için user/role yapısını kullanmaktadır. Bir Role bir user’ın kendisi olabileceği gibi bir grubu da temsil edebilir. Role kavramı aslında user kavramına karşılık gelmektedir. Postgresql veri tabanında yaratılan bir role ile user gibi veri tabanına login olabilmek mümkündür. Yeni bir role yaratabilmek için aşağıdaki komut kullanılır.

CREATE ROLE role_name;

Clusterda yer alan roller hakkında bilgi almak için pg_roles  katalog tablosu kullanılır. Psql komut satırı aracında ise \du komutu ile clusterdaki roller görüntülenebilir.

SELECT rolname FROM pg_roles;

Bir Role yaratırken o rol için sistem rolleri tanımlanabilir. Login bilgileri de yine role tanımlanırken verilebilir.

Create role komutu ile bir kullanıcı yaratıldığında sisteme login yetkisi yoktur. LOGIN izninin verilmesi gerekir. Ancak create user ile bir role yaratıldığında login yetkisi olur.

SUPER USER sistemdeki en yetkili roldür. Bir super user yaratmak için CREATE ROLE rolname SUPERUSER; komutu kullanılır. SUPER USER oluşturmak için SUPER USER yetkisine sahip olunmalıdır.

Database create yetkisi ile bir kullanıcı oluşturmak için CREATE ROLE rolname CREATE DB; komutu kullanılır.

Role yaratma yekisi ile bir kullanıcı oluşturmak için CREATE ROLE rolname CREATEROLE; komutu kullanılır.

Role Grupları

Roller başka bir rol grubuna ait olabilir. Bu login rollere sistemde toplu olarak yetki vermek için kullanılan bir yöntemdir. Bir grup rolü yönetmek; yönetimsel işlemleri kolaylaştırır.

Bir grup rolü oluşturulur;

CREATE ROLE group_role01;

Daha sonra bir login role oluşturulur;

CREATE ROLE user_role01;

Grup Rolü, Login role atanır.

GRANT group_role01 to user_role01;

User’I gruptan cıkarmak için;

REVOKE group_role01 from user_role01;

NOT : Zincirleme şeklinde bir role yetki tanımlaması yapılabilir. Bu durumda kullanıcının hangi rolün yetkilerini kullanacağı INHERIT ve NOINHERIT keywordleri ile belirlenebilir. Bunun dışında Psql’e bağlıyken hangi rolün yetkilerinin kullanılması istenir ise SET ROLE rolname komutu ile bu tercih değiştirilebilir. Geri almak için ise RESET ROLE; komutu kullanılır.

CREATE ROLE user01 LOGIN INHERIT;

CREATE ROLE group01 NOINHERIT;

CREATE ROLE group02 NOINHERIT;

GRANT group01 to user01;

GRANT group02 to group2;

Yukarıda verilen örnekte user01 kullanıcısı ile psql’e bağlanıldığında user01’in yetkilerine ek olarak group01’in yetkilerine de sahip olacaktır. Çünkü INHERIT keywordu ile yetkileri gruptan devralması sağlanmıştır.Ancak group02’nin yetkilerine sahip olmayacaktır çünkü group01 için NOINHERIT keywordu kullanılmıştır.

SET ROLE goup01 ;

Komutu kullanılırsa user01 sadece group01’in haklarına sahip olacaktır. Tekrar user01’in yetkilerine dönmek için RESET ROLE komutu kullanılır.

Sadece veri tabanı objeleri ile ilgili izinler inherit edilebilir. LOGIN, SUPERUSER, CREATEROLE ve CREATEDB yetkileri inherit komutu ile başka kullanıcıya aktarılamaz.

Bir rolü sistemden kaldırmak için DROP ROLE rolename komutu kullanılır.

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir