PostgreSQL Row Level Sikkerhetseksempler

PostgreSQL Row Level Sikkerhetseksempler

PostgreSql har vært et mye brukt databasesystem over hele kloden og er høyt sikret. PostgreSql har kommet over med de to typene verdipapirer, e.g. Kolonnivå og radnivå. Hovedemnet vårt er sikkerhet på radnivå i PostgreSql. Sikkerhet på radnivå sies å være et enkelt og sårt tiltrengt verktøy i PostgreSQL Security. Det har blitt brukt til å kontrollere brukerens tilgang til visse tabeller og poster basert på noen retningslinjer. Ved å bruke sikkerhet på radnivå, vil vi begrense brukerne til bare å se eller manipulere tabellpostene som inneholder dataene angående dem i stedet for å gjøre endringer i andre brukerens poster.

Du må åpne SQL -skallet for PostgreSQL 13 fra startlinjen til Windows 10. Etter å ha åpnet den, vil du få den svarte skjermen til SQL -skallet. Legg til servernavnet, databasenavn, portnummer, brukernavn og passord når du blir spurt en etter en. SQL -skallet vil være klart for din videre bruk.

Databasebrukeren “Postgres”Er allerede en superbruker av systemet ditt. Hvis du ikke er logget inn fra en superbruker, må du logge inn fra den. Metoden for å logge inn fra en superbrukerkonto er ved å bruke den oppgitte kommandoen nedenfor i skallet som har "\ c" -skilt med navnet på en database som skal brukes, e.g. Postgres, sammen med navnet på en superbruker, e.g. Postgres. Det kan kreve passord for en konto hvis ikke allerede er logget inn.

Lag tabell:

Du må opprette en ny tabell i superbruker og database "Postgres". Så vi har brukt Lag tabell spørring for å lage en tabell “test”Med noen kolonner som vist.

Etter å ha opprettet et bord “test”, Vi har satt inn tre poster i den for 3 forskjellige brukere, e.g. Aqsa, Raza og Rimsha, via “Sett inn i”Instruksjon i skallet.

Tabellen og dens poster kan sees på SQL Shell -skjermen ved hjelp av PLUKKE UT spørsmål.

Opprett brukere:

Vi har jobbet i SQL Shell på bordprøven med superbrukeren “Postgres”, Men vi må opprette noen andre brukere som nevnt i tabellen, e.g. Aqsa, Raza og Rimsha. Så vi har brukt OPPRETT BRUKER kommando om å gjøre det mens du tildeler passordet. Etter det har vi gitt PLUKKE UT privilegier på alle disse brukerne etter opprettelse.

Når vi har brukt de nyopprettede brukerne til å hente postene til en tabell “test”Utgangen viser at en bruker enkelt kan få tilgang til alle radene fra en tabell i stedet for en rad med navn. Utgangen nedenfor viser utgangen for tilgang til tabelltest med en bruker “AQSA”.

Underutgangen viser utdataene for tilgang til tabelltest med en bruker “Raza”.

Utgangen nedenfor er for en tabelltest med en bruker “Rimsha”.

Opprett policy:

Hensikten med sikkerhet på radnivå er å begrense brukerne bare for å hente postene som har informasjonen om seg selv. Vi ønsker sikkerhet på radnivå for brukere for ikke å hente postene til andre brukere. La oss starte med å logge inn fra superbrukeren “Postgres”I SQL -skallet.

Etter innlogging har vi brukt CREATE Policy Instruction vist nedenfor for å opprette en policy som heter “ny" på bordet "test”. Vi har brukt “ALLE”Nøkkelord her som representerer alle privilegier, e.g. Sett inn, oppdater, endre osv. Du kan gjøre det spesielt ved å legge til et innlegg, velg, oppdatere eller et hvilket som helst nøkkelord. Den offentlige rollen har indikert alle rollene. Du kan spesifisere brukeren eller rollen også her. Vi har brukt “VED HJELP AV”Uttrykk her. Dette vil sammenligne det for øyeblikket innloggede brukernavnet med tabellen "Test" i kolonnen "Navn".

Aktiver sikkerhet på radnivå:

Bare å lage policyen og blitt brukt på roller og tabeller er ikke nok til å få en endring. Du må aktivere sikkerhet på radnivå på tabellen "Test" som har et policy-sett rett før. Så vi har brukt superbrukeren “Postgres”For å aktivere sikkerhet på radnivå på et bord”test" med Endre tabellen Kommando vist på skjermbildet vedlagt.

Som vi for øyeblikket har logget inn fra superbrukeren “Postgres”, Kommandoen”PLUKKE UT”Sammen med nøkkelordet”nåværende bruker”Viser brukernavnet i utgangen. Når du får tilgang til tabellen med SELECT -kommando mens du er logget inn fra superbrukeren, viser den alle postene til en tabell "Test". Dette betyr at politikken og sikkerhet på radnivå ikke påvirker superbruker.

Nå skal vi logge inn fra de nye rollene som er opprettet for en stund siden. Vi har logget inn fra brukeren “Aqsa”Og sjekket den for øyeblikket innloggede brukeren. Det kommer tilbake “Aqsa”Som en nåværende bruker. Når du henter bordet "test”Registreringer av en valgt kommando, den returnerer radene bare tilhørte brukernavnet"Aqsa”Tilpasset en kolonne“ Navn ”i tabellen. Alle de andre radene er sikret og kan ikke sees av en bruker "Aqsa”.

La oss logge inn fra den andre brukeren, "Raza”Fra terminalen og sjekk den nåværende brukeren. Det kom tilbake “Raza”Som en nåværende bruker. Utgangen for SELECT -kommandoen viser bare posten for en bruker “Raza”Fra bordet“test”.

Sikkerheten på radnivå har fungert det samme på brukeren “Rimsha”I henhold til utgangsbildet nedenfor.

Bypass radnivå sikkerhet:

Omgangen til forbigående tillatelser kan brukes til å overskride raden på radnivå av noen superbrukere og andre privilegerte brukere. Brukeren som har privilegier av bypass radnivåsikkerhet kan også overskride sikkerhet på radnivå for alle tabeller og få tilgang til andre brukernes poster. Så vi har logget inn fra Superuser -kontoen innen terminalen først.

Etter det har vi endret en brukers rettigheter “Raza”Av en alter -brukerkommando brukt på den. Vi har tildelt brukeren “Raza”, privilegiene ved å omgå radnivåsikkerheten av “Omkjøringsrl”Nevnt i Alter -brukerforespørselen som vist.

Logg inn fra brukeren “Raza”Fra skallet. Du kan se at brukeren “Raza” nå kan overgå sikkerhetspolitikken på radnivå og enkelt kan se og endre postene til alle andre brukere fra tabellen "test”Via SELECT -spørringen.

Drop Policy:

La oss logge inn fra superbrukeren igjen for å slippe en policy "ny”Det er blitt brukt på tabellen“ Test ”.

Drop Policy -kommandoen har blitt brukt i skallet for å slippe en policy som heter “ny”Fra tabellen“ Test ”.

Etter å ha droppet en policy, har vi logget inn fra en av brukerne for å sjekke om den fortsatt fungerer eller ikke. Vi har funnet ut at drypping av en policy ikke kunne endre brukeren “Aqsa”Eller andre for å hente postene til en tabell”test”. Dette er fordi vi ikke har deaktivert sikkerhet på radnivå på bordet ennå.

Deaktiver sikkerhet på radnivå:

For å deaktivere sikkerhet på radnivå på et bord “test”, Logg inn som en superbruker og bruk spørringen som vises i SNAP nedenfor.

Etter innlogging fra den andre brukeren, vil du kunne se og endre postene enkelt.

Konklusjon:

Denne opplæringen inneholder en kort demonstrasjon av sikkerhet på radnivå som brukes til å begrense brukerne etter tilgang til data til sikkerhetsformål. Sikkerhet på radnivå er oppnådd ved å opprette brukere, retningslinjer og deretter muliggjøre sikkerhet. Artikkelen inneholder også implementeringen om å slippe en policy og deaktivere sikkerhet på radnivå. Derfor er denne artikkelen en bonuspakke for våre brukere å gjøre alt fra å mulig.