Takip et

Veritabanı Güvenliği Neden Bu Kadar Önemli ve PostgreSQL Neden Tercih Edilmeli?

PostgreSQL Rol ve İzin Yönetimi: VPS Güvenliği İçin Kapsamlı Rehber

PostgreSQL veritabanınızın güvenliğini artırmak ve yetkilendirme sorunlarını çözmek mi istiyorsunuz? VPS üzerinde rol ve izinleri etkili kullanarak veri güvenliğini adım adım öğrenin.

Veritabanı Güvenliği Neden Bu Kadar Önemli ve PostgreSQL Neden Tercih Edilmeli?

Dijital çağda, veriler işletmelerin can damarıdır ve siber tehditlerin sürekli evrildiği bir ortamda, veritabanı güvenliği her zamankinden daha kritik bir hale gelmiştir. Bir web uygulaması, e-ticaret platformu veya kurumsal bir sistem çalıştırıyorsanız, kullanıcı bilgileri, finansal veriler, ürün detayları gibi hassas bilgiler PostgreSQL veritabanınızda saklanıyor olabilir. Bu verilerin yetkisiz erişime karşı korunması, sadece yasal uyumluluk açısından değil, aynı zamanda müşteri güvenini sürdürmek ve işletmenizin itibarını korumak için de hayati önem taşır. Özellikle bir Sanal Özel Sunucu (VPS) üzerinde barındırılan veritabanları için, güvenlik yapılandırmaları doğrudan sizin sorumluluğunuzdadır ve bu durum, rol ve izin yönetimini vazgeçilmez kılar.

Veri ihlalleri, sadece büyük şirketleri değil, her ölçekten kuruluşu etkileyebilir. Finansal kayıpların yanı sıra, veri ihlalleri marka imajını zedeleyebilir, yasal davalara ve ağır para cezalarına yol açabilir. Bu nedenle, veritabanı güvenliğine proaktif bir yaklaşım sergilemek, potansiyel riskleri minimize etmenin ve iş sürekliliğini sağlamanın anahtarıdır. PostgreSQL, bu noktada öne çıkan güçlü ve güvenilir bir ilişkisel veritabanı yönetim sistemidir. Açık kaynak kodlu olması, geniş topluluk desteği ve ACID uyumluluğu gibi özelliklerinin yanı sıra, gelişmiş güvenlik mekanizmaları sunmasıyla da dikkat çeker. Özellikle esnek rol ve izin sistemi, PostgreSQL’i hassas verileri barındırmak için ideal bir seçenek haline getirir.

PostgreSQL’in rol ve izin yönetimi, “en az yetki prensibi” (Principle of Least Privilege) adı verilen temel bir güvenlik ilkesini uygulamanıza olanak tanır. Bu prensip, her kullanıcının veya uygulamanın, görevini yerine getirmesi için kesinlikle gerekli olan minimum erişim yetkisine sahip olmasını savunur. Örneğin, bir web uygulaması kullanıcısının yalnızca belirli tablolara veri okuma ve yazma izni varken, veritabanı yöneticisinin daha geniş yetkilere sahip olması gerekir. Bu ayrım, bir güvenlik ihlali durumunda, saldırganın erişebileceği verileri ve yapabileceği eylemleri sınırlar, böylece potansiyel hasarı önemli ölçüde azaltır. Bu makalede, VPS ortamında PostgreSQL’in bu güçlü rol ve izin mekanizmalarını nasıl etkili bir şekilde kullanacağınızı, veritabanı güvenliğinizi sağlamlaştırmak için adım adım inceleyeceğiz.

PostgreSQL’de Rol ve İzin Temelleri: Kavramlar ve İlk Adımlar

PostgreSQL’in güvenlik mimarisinin merkezinde “roller” ve “izinler” kavramları yer alır. Bu temel bileşenleri anlamak, veritabanınızın yetkilendirme yapısını doğru bir şekilde kurmanın ilk adımıdır. Peki, bu kavramlar tam olarak ne anlama geliyor ve VPS üzerinde ilk adımları nasıl atmalıyız? Bir “rol” (role), PostgreSQL’de hem bir veritabanı kullanıcısını hem de bir kullanıcı grubunu temsil eden esnek bir varlıktır. Yani, bir rol veritabanına bağlanabilen ve belirli eylemleri gerçekleştirebilen bir kişi veya uygulama olabileceği gibi, aynı yetkilere sahip birden fazla kullanıcının bir araya geldiği bir grup da olabilir. Bu esneklik, kullanıcı ve yetki yönetimini önemli ölçüde basitleştirir. Her rol, LOGIN (giriş yapabilir), PASSWORD (şifre), CREATEDB (veritabanı oluşturabilir), CREATEROLE (rol oluşturabilir) gibi çeşitli niteliklere sahip olabilir.

“İzinler” (privileges) ise, bir rolün veritabanındaki belirli nesneler (tablolar, şemalar, fonksiyonlar, veritabanları vb.) üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan yetkilendirmelerdir. Örneğin, bir tablo üzerinde SELECT (veri okuma), INSERT (veri ekleme), UPDATE (veri güncelleme) veya DELETE (veri silme) izni verilebilir. Bir veritabanı üzerinde CONNECT (bağlanma) izni veya bir şema üzerinde USAGE (kullanım) izni de yaygın izin türlerindendir. Bu izinler, GRANT komutuyla atanır ve REVOKE komutuyla geri alınır. Bu güçlü mekanizma sayesinde, her rolün yalnızca işini yapması için kesinlikle ihtiyaç duyduğu minimum izinlere sahip olmasını sağlayabiliriz. Bu, olası bir güvenlik ihlali durumunda yetkisiz erişimin kapsamını kısıtlar.

VPS üzerinde PostgreSQL kurulumu genellikle basit olsa da, ilk güvenlik adımları kritik öneme sahiptir. Kurulum sonrası, PostgreSQL varsayılan olarak postgres adında bir süper kullanıcı rolü oluşturur ve bu rol, işletim sistemindeki postgres kullanıcısıyla ilişkilidir. Veritabanına bağlanmak için genellikle bu işletim sistemi kullanıcısıyla geçiş yapmanız gerekir:

sudo -i -u postgres
psql

Ancak, postgres süper kullanıcı rolünü doğrudan günlük operasyonlarda kullanmak iyi bir güvenlik uygulaması değildir. Bunun yerine, kendi yönetimsel rolünüzü oluşturmanız ve ona gerekli yetkileri vermeniz gerekir. Güçlü bir şifreye sahip yeni bir yönetimsel rol oluşturalım. Bu rol, süper kullanıcı olmasa da, veritabanları ve diğer roller üzerinde yönetim yetkisine sahip olacaktır. Örneğin, db_admin adında bir rol oluşturalım:

CREATE ROLE db_admin WITH LOGIN PASSWORD 'CokGucluSifre007!' CREATEDB CREATEROLE;

Bu komutla db_admin adında, yeni veritabanları ve roller oluşturma yetkisine sahip, şifre ile giriş yapabilen bir rol tanımladık. Artık psql‘den çıkıp (\q) bu yeni yönetici rolüyle bağlanmayı deneyebilirsiniz:

psql -U db_admin -h localhost -d postgres

Bu ilk adım, süper kullanıcı postgres rolünden uzaklaşarak daha güvenli bir yönetim pratiği oluşturmanızı sağlar. Ayrıca, public şemasının varsayılan olarak tüm kullanıcılara CREATE izni vermesi güvenlik açığı oluşturabilir. Bu izni kaldırmak iyi bir uygulamadır:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Bu temel yapılandırmalar, VPS üzerindeki PostgreSQL veritabanınız için sağlam bir güvenlik temeli atar ve ilerleyen adımlarda daha spesifik roller ve izinler tanımlamanıza olanak tanır.

Uygulama ve Kullanıcılar İçin Özel Rol ve İzinleri Adım Adım Tanımlama

Bir veritabanı sistemi, genellikle farklı ihtiyaçlara sahip birden fazla uygulama ve kullanıcı tarafından kullanılır. Örneğin, bir web uygulaması backend’i, bir veri analizi aracı, bir raporlama servisi veya manuel erişim sağlayan geliştiriciler gibi çeşitli aktörler olabilir. Bu farklı grupların her birine, yalnızca görevlerini yerine getirmeleri için gerekli olan minimum yetkileri sağlamak, sağlam bir güvenlik duruşu için kritik öneme sahiptir. Bu bölümde, bu farklı kullanıcı grupları için özel roller ve izinleri adım adım nasıl tanımlayacağımızı, gerçek dünya senaryolarından örneklerle açıklayacağız.

İlk olarak, bir web uygulaması backend’inin veritabanına erişimi için bir rol oluşturalım. Bu rol, genellikle belirli tablolarda veri okuma, ekleme, güncelleme ve silme (CRUD) işlemleri yapabilmeli, ancak veritabanı şemasını değiştirmemeli veya diğer kritik yönetim görevlerini yapmamalıdır. Diyelim ki my_webapp_db adında bir veritabanımız var ve içinde users, products, orders adında tablolarımız mevcut. webapp_user adında bir rol oluşturalım:

CREATE ROLE webapp_user WITH LOGIN PASSWORD 'AppSecret123!';
GRANT CONNECT ON DATABASE my_webapp_db TO webapp_user;

Şimdi bu role, users, products ve orders tablolarında CRUD yetkileri verelim:

GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE users TO webapp_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE products TO webapp_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE orders TO webapp_user;

Ancak, uygulamanın payments tablosuna sadece okuma erişimi olması gerektiğini varsayalım, çünkü ödeme işlemleri ayrı bir mikroservis tarafından yönetiliyor olabilir:

GRANT SELECT ON TABLE payments TO webapp_user;
REVOKE INSERT, UPDATE, DELETE ON TABLE payments FROM webapp_user; -- Emin olmak için.

Gelecekte oluşturulacak yeni tablolar için de bu izinleri otomatik olarak uygulamak için ALTER DEFAULT PRIVILEGES komutunu kullanabiliriz. Bu, veritabanı yöneticisi rolü (db_admin) tarafından oluşturulan yeni nesnelerin webapp_user için varsayılan izinlere sahip olmasını sağlar:

ALTER DEFAULT PRIVILEGES FOR ROLE db_admin IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO webapp_user;

Şimdi de veri analistleri için bir rol oluşturalım. Bu ekip genellikle verileri okuma yetkisine sahip olmalı, ancak veritabanında herhangi bir değişiklik yapmamalıdır. data_analyst adında bir rol oluşturalım:

CREATE ROLE data_analyst WITH LOGIN PASSWORD 'AnalystSecurePass!';
GRANT CONNECT ON DATABASE my_webapp_db TO data_analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO data_analyst;
ALTER DEFAULT PRIVILEGES FOR ROLE db_admin IN SCHEMA public
GRANT SELECT ON TABLES TO data_analyst;
Uzman İpucu: Farklı uygulamalar veya modüller için ayrı şemalar kullanmak, izin yönetimini daha da kolaylaştırır. Her uygulama kendi şemasına sahip olabilir ve o şema üzerindeki izinler daha spesifik olarak yönetilebilir. Örneğin: CREATE SCHEMA app_schema AUTHORIZATION webapp_user;

Bu detaylı yapılandırma, her bir rolün yalnızca işini yapması için gerekli olan minimum yetkilere sahip olmasını garanti eder. Bu yaklaşım, potansiyel güvenlik açıklarını minimize eder ve yetkisiz bir erişim durumunda oluşabilecek zararı sınırlar. Ayrıca, kullanıcı ihtiyaçları değiştikçe veya yeni özellikler eklendikçe, mevcut rolleri kolayca güncelleyebilir veya yeni roller oluşturarak sistemi esnek bir şekilde genişletebilirsiniz. İzinleri düzenli olarak gözden geçirmek ve güncel tutmak, uzun vadede güvenli bir veritabanı ortamı sağlamanın anahtarıdır.

Gelişmiş Rol Yönetimi, Bağlantı Güvenliği ve Denetim İpuçları

PostgreSQL’in rol ve izin sistemi, temel GRANT ve REVOKE komutlarının ötesinde, daha karmaşık güvenlik senaryolarını destekleyen gelişmiş özellikler sunar. Bu bölümde, veritabanı güvenliğinizi optimize etmek için rol nitelikleri, grup rolleri, bağlantı güvenliği ve denetim mekanizmaları gibi ileri düzey konuları ele alacağız.

Rol Nitelikleri ve Grup Kullanımı

Bir rol oluştururken veya mevcut bir rolü değiştirirken, ona çeşitli nitelikler atayarak davranışını ve yetkilerini daha hassas bir şekilde kontrol edebilirsiniz. En yaygın niteliklerden bazıları şunlardır:

  • LOGIN / NOLOGIN: Rolün veritabanına bağlanıp bağlanamayacağını belirler. Uygulama kullanıcıları için LOGIN gerekirken, sadece diğer rolleri gruplayan bir rol için NOLOGIN kullanılabilir.
  • SUPERUSER: Tüm veritabanı üzerinde sınırsız yetki verir. Bu nitelik, aşırı güçlü olduğu için çok dikkatli ve yalnızca gerçek veritabanı yöneticileri tarafından kullanılmalıdır.
  • CREATEDB: Rolün yeni veritabanları oluşturmasına izin verir.
  • CREATEROLE: Rolün yeni roller oluşturmasına izin verir.
  • INHERIT / NOINHERIT: Rolün ait olduğu diğer rollerin izinlerini miras alıp almayacağını kontrol eder. Varsayılan olarak INHERIT‘tir. NOINHERIT kullanıldığında, bir kullanıcı SET ROLE komutunu kullanarak o rolün izinlerini açıkça etkinleştirmelidir.
  • VALID UNTIL 'tarih': Rolün şifresinin ne zamana kadar geçerli olacağını belirler. Şifrelerin düzenli olarak değiştirilmesini zorunlu kılmak için faydalıdır.
ALTER ROLE webapp_user VALID UNTIL '2024-12-31';
ALTER ROLE db_admin WITH NOLOGIN; -- db_admin'in sadece grup olarak kullanılmasını sağlar.

Grup rolleri, izin yönetimini merkezi hale getirmenin ve ölçeklenebilirliği artırmanın güçlü bir yoludur. Bir grup rolü oluşturup ona belirli izinleri verdikten sonra, diğer kullanıcı rollerini bu grup rolüne atayabilirsiniz. Bu, yeni bir kullanıcı eklendiğinde veya bir kullanıcının yetkileri değiştiğinde, sadece grup üyeliğini ayarlayarak kolayca yönetim yapmanızı sağlar.

CREATE ROLE read_only_users NOLOGIN;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only_users;
CREATE ROLE junior_analyst WITH LOGIN PASSWORD 'junior_pass';
GRANT read_only_users TO junior_analyst; -- Junior analist artık read_only_users grubunun izinlerine sahip.

Bağlantı Güvenliği ve pg_hba.conf Yapılandırması

VPS üzerindeki PostgreSQL sunucunuzun dış dünyaya karşı güvenliği için pg_hba.conf dosyası kritik bir rol oynar. Bu dosya, hangi istemci IP adreslerinden, hangi veritabanlarına, hangi kullanıcıların ve hangi kimlik doğrulama yöntemiyle bağlanabileceğini tanımlar. Güvenli bir yapılandırma için:

  • Yalnızca uygulamanızın çalıştığı sunucunun IP adresinden gelen bağlantılara izin verin.
  • Gereksiz tüm diğer IP aralıklarını (0.0.0.0/0) reddedin veya kısıtlayın.
  • Şifrelerin ağ üzerinden açık metin olarak gönderilmesini engellemek için md5 veya scram-sha-256 gibi güçlü kimlik doğrulama yöntemlerini kullanın.
# Örnek pg_hba.conf girişi:
# type    database    user        address         method
host      my_webapp_db  webapp_user   192.168.1.10/32   scram-sha-256
host      all         all         0.0.0.0/0       reject # Diğer tüm bağlantıları reddet

Ayrıca, veritabanı bağlantılarını SSL/TLS ile şifrelemek, özellikle hassas verilerle çalışırken vazgeçilmez bir güvenlik önlemidir. PostgreSQL sunucunuzu SSL sertifikaları ile yapılandırarak, istemci ile sunucu arasındaki tüm iletişimi şifreleyebilir ve man-in-the-middle saldırılarını önleyebilirsiniz.

Denetim (Auditing) ve İzleme Mekanizmaları

Kimlik doğrulama ve yetkilendirme ne kadar sağlam olursa olsun, veritabanınızda ne olup bittiğini bilmek, güvenlik ihlallerini tespit etmek ve uyumluluk gereksinimlerini karşılamak için hayati öneme sahiptir. PostgreSQL, pg_audit gibi uzantılar ve kapsamlı loglama seçenekleri ile denetim yetenekleri sunar. Bu uzantılar sayesinde, belirli rollerin veya tüm veritabanının gerçekleştirdiği tüm SQL sorgularını, bağlantı girişimlerini ve diğer kritik işlemleri kaydedebilirsiniz. Bu logları düzenli olarak gözden geçirmek, anormallikleri, yetkisiz erişim girişimlerini veya şüpheli davranışları erken aşamada tespit etmenizi sağlar.

Uzman İpucu: Tüm kritik veritabanı işlemlerini denetleyin ve logları merkezi bir güvenlik bilgi ve olay yönetimi (SIEM) sistemine göndererek proaktif izleme ve otomatik uyarılar kurun. Bu, anormalliklere anında müdahale etmenizi sağlar.

Yönetim Panellerinde Mobil Uyumluluk Yaklaşımı

Eğer rol ve izinleri yönetmek için özel bir web tabanlı yönetim paneli geliştiriyorsanız, bu panelin mobil uyumlu (responsive) olması, yöneticilerinize ve geliştiricilerinize her an, her yerden güvenli bir şekilde erişim yetkilerini kontrol etme esnekliği sunar. CSS medya sorguları (@media (max-width: 768px) { ... }) ve esnek grid sistemleri kullanarak, panelin farklı ekran boyutlarına ve cihazlara (telefonlar, tabletler) uyum sağlamasını sağlayabilirsiniz. Örneğin, küçük ekranlarda kullanıcı listelerinin tek sütunlu olarak görüntülenmesi, büyük ekranlarda ise tablo formatında daha fazla bilgi göstermesi gibi düzenlemeler, kullanıcı deneyimini iyileştirirken, güvenlik operasyonlarının hızını da destekler.

Bu gelişmiş ipuçları ve uygulamalar, VPS üzerindeki PostgreSQL veritabanınızın sadece temel düzeyde değil, aynı zamanda kapsamlı bir şekilde güvence altına alınmasını sağlar. Sürekli izleme ve güncel güvenlik pratikleri, dijital varlıklarınızın korunmasında anahtar rol oynar.

Sonuç: Sürekli Güvenlik Stratejileri ve Sıkça Sorulan Sorular

PostgreSQL’de rol ve izin yönetimi, bir VPS üzerinde barındırılan veritabanlarınızın güvenliğini sağlamak için temel ve vazgeçilmez bir stratejidir. Bu kapsamlı rehber boyunca, veritabanı güvenliğinin neden bu kadar kritik olduğundan başlayarak, PostgreSQL’in güçlü rol ve izin kavramlarının temellerine indik. Ardından, VPS ortamında adım adım nasıl yönetici rolleri oluşturacağımızı, farklı uygulama ve kullanıcı grupları için özelleştirilmiş erişim kontrollerini nasıl tanımlayacağımızı öğrendik. Gerçek dünya senaryolarıyla bu bilgileri pekiştirirken, rol nitelikleri, grup kullanımı, pg_hba.conf ile bağlantı güvenliği ve denetim mekanizmaları gibi gelişmiş ipuçlarıyla güvenliğinizi bir üst seviyeye taşımanın yollarını keşfettik.

En az yetki prensibini benimsemek, yani her kullanıcının veya uygulamanın yalnızca görevini yerine getirmesi için kesinlikle gerekli olan minimum erişime sahip olmasını sağlamak, veri ihlallerini önlemenin ve potansiyel zararı sınırlamanın altın kuralıdır. Güçlü şifreler kullanmak, SUPERUSER rolünü dikkatli yönetmek, public şemasındaki varsayılan izinleri kısıtlamak ve veritabanı bağlantılarını SSL/TLS ile şifrelemek, veritabanı güvenliğinizin temel taşlarıdır. Ancak unutmayın ki siber güvenlik, tek seferlik bir işlem değil, sürekli bir süreçtir. Kullanıcı ihtiyaçları değiştikçe, uygulamalarınız geliştikçe veya yeni güvenlik tehditleri ortaya çıktıkça, rol ve izin yapılandırmalarınızı düzenli olarak gözden geçirmeli ve güncellemelisiniz. Logları izlemek ve denetim kayıtlarını analiz etmek, anormallikleri erken aşamada tespit etmenize olanak tanır.

VPS ortamında, işletim sistemi güncellemelerini düzenli yapmak, güvenlik duvarlarını yapılandırmak ve gereksiz portları kapatmak gibi sunucu güvenliği önlemleri de PostgreSQL güvenliğinizi tamamlayıcı unsurlardır. Bu rehberdeki bilgileri uygulayarak, PostgreSQL veritabanınız için sağlam, esnek ve sürdürülebilir bir güvenlik altyapısı oluşturabilirsiniz. Verilerinizin güvende olması, hem sizin hem de kullanıcılarınızın huzuru için kritik öneme sahiptir. Bu stratejileri benimsemek, dijital varlıklarınızın uzun vadeli korunmasını garanti altına alacaktır.

Sıkça Sorulan Sorular (SSS)

S1: SUPERUSER rolü ne anlama gelir ve ne zaman kullanılmalıdır?
C1: SUPERUSER rolü, PostgreSQL veritabanı üzerinde sınırsız yetkiye sahip olan bir roldür. Veritabanı yapılandırmasını değiştirebilir, tüm nesnelere erişebilir ve diğer rollere yetki verebilir/geri alabilir. Bu rol, yalnızca veritabanı yöneticileri tarafından, acil durumlar veya kapsamlı yönetim görevleri için kullanılmalı, günlük operasyonlarda veya uygulama bağlantılarında kesinlikle kullanılmamalıdır. En iyi uygulama, SUPERUSER rolünü sadece gerektiğinde kullanmak ve diğer tüm yönetim görevleri için daha az yetkili özel roller oluşturmaktır. Bu, güvenlik risklerini minimize eder.
S2: Bir rolün tüm izinlerini nasıl görebilirim?
C2: PostgreSQL’de bir rolün tüm izinlerini doğrudan tek bir komutla görmek biraz karmaşık olabilir, çünkü izinler farklı nesneler (tablolar, şemalar, veritabanları vb.) üzerinde verilir. Ancak, psql komut satırı arayüzünde \dp (veya \z) komutu ile tablolar, görünümler ve dizinler üzerindeki izinleri, \dn+ ile şema izinlerini ve \l+ ile veritabanı bağlantı izinlerini görebilirsiniz. Belirli bir rolün tüm izinlerini detaylıca listelemek için information_schema.role_table_grants veya pg_catalog.pg_class gibi sistem tablolarını sorgulamanız gerekebilir. Örneğin:
SELECT * FROM information_schema.role_table_grants WHERE grantee = 'rol_adi';

Bu sorgu, belirli bir role verilen tablo izinlerini gösterir.

S3: Yanlışlıkla fazla izin verdiğimde ne yapmalıyım?
C3: Eğer yanlışlıkla bir role fazla izin verdiyseniz, bu izinleri REVOKE komutuyla hemen geri almalısınız. Örneğin, bir kullanıcıya tüm tablolarda DELETE izni verdiyseniz ve bu bir hataysa:
REVOKE DELETE ON ALL TABLES IN SCHEMA public FROM webapp_user;

İzinleri geri aldıktan sonra, ilgili rolün yetkilerini test etmek için SET ROLE komutunu kullanarak o rol gibi davranabilir ve erişimini kontrol edebilirsiniz. Bu, yanlış yapılandırmaların hızlıca düzeltilmesini sağlar.

S4: Bir kullanıcının şifresini nasıl değiştiririm?
C4: Bir rolün (kullanıcının) şifresini değiştirmek için ALTER ROLE komutunu kullanabilirsiniz:
ALTER ROLE webapp_user WITH PASSWORD 'YeniGucluSifre!';

Şifreleri düzenli olarak değiştirmek ve güçlü, tahmin edilmesi zor şifreler kullanmak, ayrıca şifrelerin tekrar kullanılmasını önlemek iyi bir güvenlik uygulamasıdır. VALID UNTIL niteliğini kullanarak şifrelerin belirli bir süre sonra geçerliliğini yitirmesini de sağlayabilirsiniz.

S5: public şemasındaki varsayılan izinleri nasıl yönetmeliyim?
C5: public şeması, PostgreSQL’de varsayılan olarak tüm kullanıcılara belirli izinler veren özel bir şemadır. Güvenlik açısından, genellikle public şemasındaki CREATE iznini tüm kullanıcılardan (PUBLIC) kaldırmak iyi bir uygulamadır. Bu, yetkisiz kullanıcıların bu şemada nesneler oluşturmasını engeller:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Bu işlemden sonra, belirli rollere ihtiyaç duydukları CREATE veya USAGE izinlerini manuel olarak verebilirsiniz. Bu, veritabanı üzerinde daha sıkı bir kontrol sağlar ve varsayılan güvenlik açıklarını ortadan kaldırır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version