Skip to main content

Tablo Yetkilerinin Başka Tabloya Tanımlanması

Merhaba,

Daha önce aldığım notun kaybolmaması adına bu yazıyı yazmak istedim. Paylaşacağım bu yazı içeriğinde yapılan işlemlerin sonucuna farklı yollardan da ulaşılabilir tabi. 

Tabloların belirli kullanıcılar tarafından erişilebilir olması için kullanıcıların tablolar üzerinde yetkiye ihtiyaçları vardır. Bunun için Postgres, GRANT komutu kullanılır. GRANT ile ilgili detaylı bilgiye buradan ulaşabilirsiniz.

Bir tablo üzerinde birden fazla kullanıcının farklı yetki tipinde yetkiye sahip olması olağandır. Belirli tablo üzerindeki kullanıcı yetkilerini aşağıdaki script ile görebilirsiniz.

SELECT grantor, grantee, privilege_type  
FROM information_schema.role_table_grants 
WHERE table_schema ='public' 
AND table_name = 'test_table';
 
Yeni bir tablo eklediniz ve mevcut tablonuzun üzerindeki kullanıcı yetkilerinin birebir yeni tablonuzda da olmasını isterseniz yukarıdaki scripti biraz daha değiştirerek GRANT scriptini SQL ile oluşturabilirsiniz. 

Öncesinde yukarıdaki scripti biraz daha değiştirelim ve kullanıcı bazında değil, yetki tipi (privilege_type) bazında gruplayalım.

SELECT privilege_type, string_agg(grantee, ', ') 
FROM information_schema.role_table_grants 
WHERE table_schema='public'  
AND table_name = 'test_table
GROUP BY privilege_type 
ORDER BY 1,2;

Artık elimizde SELECT, UPDATE, DELETE gibi kullanıcı gruplarının sahip olduğu yetkileri, yetki bazında listeledik. Şimdi son adım olan GRANT scriptini SQL ile oluşturulması adımı yazmak kaldı. Onu da aşağıdaki gibi oluşturabiliriz.

SELECT
'GRANT ' || privilege_type || ' ON TABLE ' || 'prvt' || '.' || 'new_table' || ' TO ' || string_agg(grantee, ', ') || ';'FROM information_schema.role_table_grants 
WHERE table_schema ='public'  
AND table_name = 'test_table' 
GROUP BY privilege_type 
ORDER BY 1;
 

Sevgiler,

Comments

Popular posts from this blog

PGConf Europe 2018 Güncesi 1

Merhaba, Diğer tüm veritabanları arasında en popüler açık kaynak kodlu veritabanı olan PostgreSQL, tüm yıl boyunca farklı ülkelerde bir çok konferansa sahiplik yapmaktadır. En bilinenleri PGDay ve PGConf'dur. Ayrıca her yıl 2 Şubatta Brüksel’de yapılan FOSDEM etkinliğinde de PostgreSQL konuşmalarının yapıldığı bir oturum mutlaka olmaktadır. PostgreSQL etkinlik detaylarına bu linkten ulaşabilirsiniz. Bu yıl ki PGConf Europe konferansı Lizbon'da yapıldı. Konferansla ilgili izlenimlerimi, yaptığım neredeyse 6 günlük yolculuğun en başından tüm detaylarıyla birlikte paylaşmak istiyorum. Yolculuğumuz sevgili Seda ile birlikte Atatürk Havalimanı’ndan sabah 07:30’da Lizbon’a direk uçuşla başladı.  Hava şahaneydi ve uçuşumuz konforlu geçti. Koltuğumuz cam kenarı ve uçağın kanadının hemen yanındaydı (benim favori koltuklarım 24, 25, 26, 27 ve 28. sıradakiler) ve biz 27. sıradaydık. Bol bol resim çektik bulutların üstündeyken ve uçak kanatlı olanlardan.  Lizbon’a vardığımı...

PostgreSQL High Availability - Patroni 2

Patroni kurulumuyla ilgili oldukça fazla kaynak bulunmakta fakat kurulum ve yönetimini beraber barındıran kaynağa denk gelmedim. Bu yazıda hem Patroni kurulumu hem de kurulum sonrası yönetimiyle alakalı detaylara ulaşabilirsiniz. PostgreSQL cluster'larının yönetimi için kullanılan Patroni ile ilgili temel bilgilerin yer aldığı Autofailover üzerine hazırladığım yazı serisine aşağıdaki linklerden erişebilirsiniz. PostgreSQL ve Autofailover PostgreSQL'de Autofailover ve Patroni 1 (Giriş) PostgreSQL'de Autofailover ve Patroni 2 (Kurulum, Konfigürasyon ve Yönetim) PostgreSQL'de Autofailover ve Patroni 3 (Mevcut PostgreSQL Cluster'inin Patroni'ye Geçirilmesi) Patroni, PostgreSQL veritabanlarının kurulumundan ve konfigürasyonundan sorumludur. Yani Patroni'yi kurduğumuz sunucular aynı zamanda Patroni ile kurulmuş PostgreSQL'leri barındıracak. Üç node'lu PostgreSQL ve üç node'lu ETCD cluster'larını oluşturacağım. Kuruluma önce üç no...

PostgreSQL High Availability - Patroni 1

Patroni, PostgreSQL HA (High Availability) Cluster yapısının kurulması ve yönetimi için kullanılan open source bir araçtır. Patroni, PostgreSQL Cluster’inin kurulumu (bootstrap), replikasyonunun kurulumu, PostgreSQL otomatik failover yapılması amacıyla kullanılır. Python ile yazılmıştır. Bir önceki yazıda PostgreSQL'de Autofailover araçlarının ne olduğu ve neden Autofailover'a gereksinim duyulduğu konusunda yazı paylaşmıştım. Yazıya buradan ulaşabilirsiniz. Patroni Kurulumu İçin Gereksinimler nedir? Patroni’nin tek başına kurulumu autofailover yapısını yapılandırmak için yeterli değildir. Patroni ile Autofailover yapısının kurulması için DCS (Distributed Configuration Store) araçlarından birine ihtiyaç vardır. Bunlardan bazıları; ETCD, Consul, ZooKeeper, Kubernetes. PostgreSQL üzerinde Autofailover araçlarından Patroni entegre edecekseniz DCS araçlarından birini kullanmanız gerekecek. DCS dediğimiz şey aslında Service Discovery araçlarından biri olduğundan bu iki tan...