Yeni bir kullanıcı neden PostgreSQL'de tablo oluşturabilir?


13

Ben bir DB oluşturmak için iki öğretici izledi:

  1. tamamen ayrıcalıklı bir kullanıcı bağlantısı
  2. salt okunur bir kullanıcı bağlantısı

Daha sonra CJ Estel'in öğreticisinden " açık bir şekilde yeni kullanıcıya sunmamamıza rağmen tablo oluşturma yeteneğini devralmış olabilirsiniz" şeklinde bir ipucu aldım . Tabii ki, salt okunur kullanıcı tablolar oluşturabilir ve kendi tablolarını oluşturabilir!

CJ Estel, temel nedeni, yani bir şablon veritabanını çok iyi işaret etti. Ancak tablo oluşturma yeteneği , postgresql.org'da barındırılanlar da dahil olmak üzere "salt okunur kullanıcı postgres" i kullanarak aldığınız çoğu öğreticiyi zayıflatır . Kullanıcınız salt okunur ayrıcalıklara sahip!

Yeni bir kullanıcı neden bu yeteneğe sahip? Bu ayrıcalığı iptal ettikten sonra, veritabanı söz konusu kullanıcı için gerçekten salt okunur mu?

Yanıtlar:


13

TL; DR: Yeni kullanıcılar publicşemada tablolar oluşturabilir, çünkü insanlar yapamadıklarında çok zor olduğundan şikayet ettiler.

Varsayılanları beğenmediyseniz, muhtemelen ilk yapılandırmayı istediğiniz yeni bir şablon veritabanı oluşturmanız gerekir. Örneğin, şunları yapabilirsiniz:

DROP SCHEMA public;

veya

REVOKE ALL ON SCHEMA public FROM public;
GRANT USAGE ON SCHEMA public TO public;

ekleyin.

İsterseniz publicbir veritabanı üzerinde hakları yok kullanıcı, fazladan şunları yapmalıdır:

REVOKE ALL ON DATABASE mydbname FROM public;
GRANT CONNECT ON DATABASE mydbname TO public;

böylece publickullanıcı şema oluşturamaz veya geçici tablo kullanamaz.


Şahsen, bunu tasarlıyorsam, kullanıcılara TEMPvarsayılan olarak veritabanında doğru veriyorum , ancak CREATE(veritabanındaki şemalar) veya CREATE( publicşemadaki tablolar ) vermezdim . Bunları sahibi için ayırırdım.

Yine de uzun zaman önce yapılmış seçimler ve şimdi bunları değiştirmek oldukça zor.


Olduğu gibi, bir kullanıcı hesabı oluşturmanız ve genellikle de bir veritabanı oluşturmak istediğiniz için PostgreSQL'e başlamanın çok zor olduğu konusunda düzenli şikayetler vardır. Neden sadece otomatik olarak oluşturmuyoruz ve bunu kolaylaştırmak için kimlik doğrulama modu olarak 'güven' olarak ayarlıyoruz? postgresKullanıcı neden parolayı varsayılan olarak kullanmıyor postgres? Neden işletim sisteminde varsa kullanıcıları otomatik olarak oluşturmuyoruz? vb.

Yeni kullanıcılar için bazı gerçek kullanılabilirlik sorunları var - özellikle, çoğu insanın peeryetkinin ne olduğu veya psqlPostgreSQL'i kurduktan sonra neden çalıştıklarının, oturum açtıkları adla hiçbir kullanıcı olmadığını söyledi.

pg_hba.confBir yapılandırma dosyası da dağınık , ancak kullanıcılar SQL düzeyinde oluşturulur. Bu bölünme kullanıcıları karıştırır.

Bununla birlikte, birçok şey, güvenli varsayılanlar ile projenin herkesi mutlu edemeyeceği kolay varsayılanlar arasında uzlaşmalardır.


Yani, ben koşmak revoke create on database [databasename] from [username];ve DB şimdi sadece [kullanıcı adı] için gerçekten okunur. Sağ? İyi bir Postgres kitabı okuduğumda bu cevaba tekrar geleceğim :)
Jesvin Jose

2
Önceki yoruma yanıt olarak, onun bir hayır.
Jesvin Jose
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.