Arhitektūra

PostgreSQL drošības stiprināšana: praktisks kontrolsaraksts ražošanai

Lielākā daļa PostgreSQL drošības incidentu nav saistīti ar viltīgiem uzbrukumiem. Tie ir saistīti ar datubāzi, kas sasniedzama no interneta, kopīgu superlietotāja paroli vai neaizsargātu rezerves kopiju. Lūk, kontrolsaraksts, ar kuru mēs šīs nepilnības novēršam.

· 8 min lasīšanai · AG Data komanda

Kad datubāze tiek uzlauzta, incidenta analīzē reti aprakstīta sarežģīta nulles dienas ievainojamība. Daudz biežāk tajā aprakstīts PostgreSQL ports, kas atvērts internetam, lietotne, kas pieslēdzas kā superlietotājs, parole, kas kopīga piecām sistēmām, vai rezerves kopija, kas nešifrēta glabājas krātuvē. Šīs nepilnības ir garlaicīgas — un tieši tāpēc tās pastāv gadiem. Šis ir kontrolsaraksts, ko izmantojam drošības pārskatā, sakārtots no biežākajām problēmām līdz sarežģītākajām.

1. Ierobežojiet, kas vispār var sasniegt datubāzi

Lētākā drošības kontrole ir nebūt sasniedzamam. PostgreSQL jāklausās tikai tajās saskarnēs, kuras tai vajag (listen_addresses), bet ugunsmūrim vai mākoņa drošības grupai jāatļauj savienojumi tikai no lietotņu serveriem, savienojumu pūliem un administrēšanas datoriem.

2. Padariet pg_hba.conf stingru un nepārprotamu

pg_hba.conf fails nosaka, kuri lietotāji drīkst pieslēgties kurām datubāzēm, no kurienes un kā viņiem jāautentificējas. Izlasiet to rindu pa rindai — noteikumi tiek pārbaudīti no augšas uz leju, un uzvar pirmais atbilstošais.

3. Piemērojiet lomām minimālo tiesību principu

Lietotnēm nevajadzētu pieslēgties kā postgres vai jebkuram citam superlietotājam. Praktisks lomu modelis:

Pārbaudiet arī shēmu public. Kopš PostgreSQL 15 parastie lietotāji tajā pēc noklusējuma vairs nevar veidot objektus, taču datubāzes, kas jauninātas no vecākām versijām, saglabā vecās, plašākās tiesības, ja vien tās neatsaucat: REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Ātrs tests: izpildiet SELECT rolname FROM pg_roles WHERE rolsuper;. Vairumā ražošanas sistēmu atbildei jābūt vienai vai divām lomām. Mēs regulāri šajā sarakstā atrodam lietotņu kontus, bijušos darbiniekus un monitoringa lietotājus.

4. Šifrējiet datus pārsūtīšanā un glabāšanā

5. Reģistrējiet un auditējiet svarīgo

Bez žurnāliem nevar atbildēt uz pirmo jautājumu pēc incidenta: kas notika un kad? Kā minimums ieslēdziet log_connections un log_disconnections, un reģistrējiet DDL ar log_statement = 'ddl'. Regulētām vidēm pgAudit paplašinājums nodrošina detalizētu, strukturētu audita žurnālu par lasīšanu un rakstīšanu jutīgās tabulās. Sūtiet žurnālus prom no datubāzes servera, lai uzbrucējs ar piekļuvi serverim nevarētu tos klusi izdzēst.

6. Aizsargājiet rezerves kopijas tikpat rūpīgi kā datubāzi

Rezerves kopija ir pilna jūsu datu kopija, bieži ar vājāku aizsardzību nekā oriģināls. Ierobežojiet, kas var lasīt rezerves kopiju krātuvi, šifrējiet to, glabājiet vismaz vienu kopiju, ko nevar izdzēst vai pārrakstīt no ražošanas vides, un — kā aprakstām ceļvedī par atjaunošanas testēšanu — regulāri pierādiet, ka to patiešām var atjaunot.

7. Uzturiet PostgreSQL atjauninātu un atbalstītu

Labojumu laidienos ir drošības labojumi, un tie paredzēti uzstādīšanai ar vienkāršu restartu. Uzstādiet tos nedēļu, nevis gadu laikā. Un pārliecinieties, ka katra datubāze darbojas ar atbalstītu galveno versiju: piemēram, PostgreSQL 14 pēdējo atjauninājumu saņems 2026. gada novembrī — skatiet, ko darīt saistībā ar PostgreSQL 14 atbalsta beigām.

Kāpēc tas ir svarīgi atbilstībai

Daudzām organizācijām Latvijā un visā ES NIS2 direktīva un to ieviešošie nacionālie likumi pārvērš šīs prakses no "labas idejas" par pienākumu: piekļuves kontrole, šifrēšana, žurnalēšana, rezerves kopēšana un ievainojamību pārvaldība ir skaidri sagaidāma. Dokumentēts, ieviests un pārskatīts drošības kontrolsaraksts ir arī tieši tas pierādījums, ko pieprasīs auditors.

Galvenās atziņas

PostgreSQL Drošība Atbilstība NIS2
Sadarbība ar mums

Neesat pārliecināti, cik atvērta ir jūsu datubāze?

Mēs veicam fiksēta apjoma PostgreSQL drošības pārskatu un sagatavojam prioritizētu labojumu sarakstu — lielāko daļu no tiem var ieviest bez dīkstāves.

Sazināties Vairāk no emuāra