Home
Projekti
Download
O meni
Lang
HR EN

phpPgAdmin.patch

IME
phpPgAdmin.patch - Patch za phpPgAdmin koji omogućava rad sa bolje osiguranim postgreSQL serverom

OPIS
phpPgAdmin je alat za web administraciju PostgreSQL baze. Pogodan je za PostgreSQL DB administratore, početnike i web hosting providere. Posjeduje svu funkcionalnost koju trebate za kompletnu administraciju PostgreSQL servera i/ili baze, uključujući mogućnost administracije viewova, sekvenci, stored procedura, i trigera. Omogućuje jednostavno kreiranje i dropanje bazi; kreiranje, kopiranje, dropanje, i alter tablica/viewova/sekvenci/funkcija/trigera itd. Za više detalja o phpPgAdminu posjetite njegov matični site.
Defaultna instalacija PostgreSQLa kod većine distribucija Linuxa dolazi sa konfiguracijom koja nije prihvatljiva po pitanju sigurnosti podataka koji se nalaze u bazi ili čak sigurnosti čitavog sustava. Defaultna instalacija pretpostavlja da postoji sistemski user postgres kao i postgreSQL user pod imenom postgres koji ima administracijske ovlasti nad bazom. U defaultnoj instalaciji se također zahtijeva da postgres user nema password ili ako ga ima da se lokalno može spojiti na bazu bez provjere passworda. To znači da se u slučaju pojave exploita koji omogućava izvršavanje naredbi pod ovlastima sistemskog uzera postgres mogu iz baze izvući povjerljivi podaci kao što su brojevi kreditnih kartica i slično. Također, ponekad u višekorisničkom okruženju nije prihvatljivo da jedan korisnik postgreSQL baze vidi postojanje drugih baza ili usera što je po defaultu također dozvoljeno.

Moguće je postići dizanje postgreSQL servera sa neprivilegiranim userom koji se bez passworda može lokalno spojiti na postgreSQL. Također je moguće konfigurirati postgreSQL server tako da useri vide samo sebe i svoju bazu ali ako se postgreSQL server konfigurira na taj način izgubit će se funkcionalnost jednog tako korisnog programa kao što je phpPgAdmin. Zato je tu ovaj patch koji phpPgAdmin čini kompatibilnim sa malo kompliciranijom konfiguracijom kod koje SELECT na pg_user tablicu običnom korisniku daje ispis samo unosa relevantnih za njega samoga i kod koje se pristup pg_database i pg_group tablicama vrši kroz pg_db i pg_grp viewove.
Patch je dosta pitom što će reči da je u već postojeći config fajl dodana opcija koja posve uključuje ili isključuje promjene nastale patchiranjem phpPgAdmin sourcea.

Konkretno, dodane su četiri opcije u konfiguracijski fajl:
$conf['servers'][0]['enhanced_security'] = false; - isključuje/uključuje sve ostale opcije, phpPgAdmin se ponaša kao da patch nije upotrijebljen
$conf['servers'][0]['pg_database_view'] = 'pg_db'; - ime viewa kroz koji će se pristupati pg_database tablici
$conf['servers'][0]['pg_group_view'] = 'pg_grp'; - ime viewa kroz koji će se pristupati pg_group tablici
$conf['show_system_admin'] = true; - čak i ako je opcija show_system isključena, privilegiranim korisnicima prikazat će se sistemske tablice
Dakle, ovaj patch je koristan onda kada neprivilegirani korisnici ne mogu pristupati tablicama pg_database i pg_group. Da bi phpPgAdmin ipak funkcionirao potrebno je napraviti viewove kroz koje će neprivilegirani korisnik dobiti podatke o svojim objektima.
Primjer za kreiranje viewova koji će zamijeniti pg_database i pg_group tablice:
create view pg_db as select oid, * from pg_database where datname=(select current_user);
grant select on pg_db to public;
revoke select on pg_database from public;
create view pg_grp as select * from pg_group where groname=(select current_user);
grant select on pg_grp to public;
revoke select on pg_group from public;
Neprivilegirani korisnik također prilikom slanja upita na view pg_user mora dobiti unose relevantne samo za njega. Slijedi primjer ali potrebno je uočiti da sam ja kao privilegiranog usera koristio usera root što ne mora nužno biti slučaj kod vas:
grant rule on pg_user to root;
create or replace view pg_user as select usename, usesysid, usecreatedb, usesuper, usecatupd, '********'::text as passwd, valuntil, useconfig FROM pg_shadow where usename=(select current_user);
revoke rule on pg_user from root;
grant select on pg_user to public;
grant select on public.pg_user to public;

INSTALACIJA
Prvo skinite odgovarajuću verziju phpPgAdmina sa njegovog matičnog sitea. Zatim ako već niste, skinite odgovarajuću verziju phpPgAdmin.patch paketa iz DOWNLOAD sekcije. Rapakirajte phpPgAdmin i uđite u direktorij dobiven raspakiravanjem te u njemu izdajte slijedeću naredbu:
patch -p 1 < ../phpPgAdmin.patch
Ovim ste postupkom dobili patchiranu verziju phpPgAdmina koju sada trebate satviti negdje gdje će ga web server moći dohvatiti i servirati klijentima.

SCREENSHOTS
phpPgAdmin.patch_screenshot1.png
phpPgAdmin.patch_screenshot2.png

DOWNLOAD
phpPgAdmin.patch download

BUGOVI
Trenutna verzija phpPgAdmin.patch paketa nema poznatih bugova.

DODATNA DOKUMENTACIJA
phpPgAdmin homepage, PostgreSQL homepage

AUTORI
Josip Deanović djosip@linuxpages.org