sql >> Database teknologi >  >> RDS >> Access

Indstilling af databaseadgangstilladelser

Serversikkerhed afhænger hovedsageligt af, hvor korrekt du kan konfigurere adgangstilladelser på objekter. At give en bruger for mange tilladelser kan forårsage mange problemer. Nej, en bruger vil ikke bruge dine fejl. I stedet vil enhver hacker eller jeg gøre dette. I dette tilfælde kan du glemme dine tabeller med data eller hele databasen.

Af en eller anden grund er databasens sikkerhed beskyttelse udefra, såsom en hacker. Dette sker dog meget sjældent. Jeg er programmør i en stor virksomhed og en administrator tænker ikke engang på at beskytte serverportene, hvor alt er åbent. Der er en masse databaser, programmer og endda en FTP-server på en enkelt server, og den er aldrig blevet hacket i løbet af de sidste 5 år. Heldigvis fik jeg overtalt administratoren til at installere WEB-serveren på en separat hardware. Ellers, hvis nogen kendte IP-adressen på vores hovedserver, ville enhver slacker være i stand til at hacke den. Hverken databasen eller Windows har været rettet i flere år.

Der opstår dog interne problemer hver dag på grund af en forkert sikkerhedspolitik. Alle brugere logger ind med administratorrettigheder og kan oprette hvad de vil. Dette er et reelt problem, fordi de overdrevne tilladelser tillader slackere at vise deres fuldstændige analfabetisme. Derfor vil vi overveje sikkerhed, uanset hvor truslen kommer fra – fra en hacker eller fra en bruger.

I denne artikel vil vi overveje alt det nødvendige grundlæggende i sikkerhedsbeskyttelse fra både hackere og brugere. Jeg valgte MS SQL Server som et eksempel, fordi den indeholder alt tilgængeligt i andre databaser (Oracle, MySQL osv.) og har yderligere sikkerhedsstyringsmuligheder. Nogen vil måske mene, at dette gør MS stejlere. Nogle gange kan yderligere funktioner dog være overdrevne og forårsage problemer.

Serverroller

I Windows og andre operativsystemer er der grupper og brugere til at administrere tilladelser. Vi kan kombinere brugere i en gruppe og give rettigheder til dem alle på én gang, hvilket er meget nemmere end at tildele rettigheder til hver bruger individuelt. Til disse formål er der i databaser begrebet "rolle".

Antag, at 100 brugere skal have tilladelser til at læse data fra en bestemt tabel. Det er en besvær at give hver bruger denne tilladelse. Det er meget nemmere at oprette en rolle, der har tilladelse til at læse, og derefter tilføje alle de nødvendige brugere til den. Resultatet ligner gruppering.

I SQL Server er der to typer roller:server og database. Serverroller er foruddefinerede og kan ikke ændres.

Åbn Sikkerhed/Server-rollegrenen i Enterprise Manager, så du kan se en liste over tilgængelige roller i højre del af vinduet. Beskrivelsen definerer, hvad brugeren kan gøre med den tilsvarende rolle.

Serverroller i MS SQL Server og rollestyringsvinduet

For at tilføje en eksisterende bruger til en rolle skal du dobbeltklikke på rollerækken. I det vindue, der vises, kan du tilføje brugere til rollen eller slette dem. Tilladelsesfanen beskriver i detaljer, hvad hver bruger kan gøre.

Brugere

For at administrere brugere skal du åbne grenen Sikkerhed/Login i Enterprise Manager. I højre del vil du se en liste over alle serverbrugere. Som standard gives adgangen til domæneadministratorer og indbyggede login-konti såsom sa.

For at tilføje en ny bruger skal du højreklikke hvor som helst i den tomme højre del af vinduet og vælge Nyt login i menuen, der vises. Helt øverst i vinduet skal du vælge et brugernavn. Hvis du har brug for at vælge et eksisterende domæne eller en computerbruger, skal du klikke på knappen (...) til højre for inputfeltet, og du vil se brugersøgefeltet i domænet.

Tilføjelse af en ny bruger

Nedenfor kan du vælge typen af ​​godkendelse – Windows eller SQL Server. Hvis du vælger Windows, behøver du ikke angive en adgangskode, fordi serveren vil hente den fra systemet. Du kan dog slå enten Giv adgang (tillad adgang) eller nægte adgang (forbyd). I sidstnævnte tilfælde vil brugeren blive registreret i databasen, men de vil ikke være i stand til at oprette forbindelse – det er forbudt.

Hvis du vælger SQL Server-godkendelse, skal du angive en adgangskode, fordi den i dette tilfælde vil blive gemt i databaseserverens systemtabeller. Bemærk venligst, at selvom kun Windows-godkendelsen er angivet i serverindstillingerne, kan du oprette SQL-serverposter, men du vil ikke være i stand til at logge ind på systemet med disse poster.

På fanen Serverroller kan du angive, hvilken serverrolle der skal tildeles en bruger. Derfor kan du selv på oprettelsesstadiet tilføje brugere til de nødvendige roller.

Brugeradgang til databaser

På fanen Databaseadgang skal du angive de databaser, som brugeren kan arbejde med. Her er vinduet opdelt i to dele:I den øverste halvdel kan du vælge den database, der er adgang til, og i den nederste liste kan du vælge databaserollen. Denne rolle i databasen vil definere brugertilladelserne. Flere roller kan tildeles én bruger.

Opret en konto qq, som vil have adgang til Northwind-databasen. Dette er en standard testdatabase, der oprettes, når serveren implementeres.

Gem ændringerne.

Åbn nu grenen Databaser/Northwind/Users og se listen over brugere, der har tilladelse til at få adgang til den valgte database. Bemærk venligst, at der er qq-kontoen her. Der er ingen konto i andre databaser, fordi adgang til dem for vores nye bruger er forbudt.

Databaseroller

Hver database kan have sine egne roller, som definerer adgangstilladelserne til objekter. Mange administratorer kan ikke lide at genere disse tilladelser. Således installerer de den indbyggede standard public, som tillader næsten alt. Hvis der mangler tilladelser til den offentlige rolle, skal du blot tilføje en bruger til Systemadministrator-serverrollen. I dette tilfælde bliver databasen sårbar.

Hver bruger skal have deres egne og nødvendige tilladelser. Hvad der ikke er tilladt, skal forbydes. Roller, der allerede findes på serveren, må ikke bruges, fordi deres tilladelser er åbne for alle. Det anbefales endda at slette dem alle, især den offentlige.

Oprettelse af en rolle

For at oprette en ny databaserolle skal du højreklikke på grenen Databaser/Databasenavn/Roller. I menuen, der vises, skal du vælge Ny databaserolle. Vinduet Databaserolleegenskaber – Ny rolle åbnes. Indtast rollenavnet i den øverste del af vinduet.

For eksempel vil vi skabe en rolle for revisorer. For at gøre dette skal du skrive Buh i feltet Navn.

Oprettelse af en databaserolle

Nedenfor skal du vælge en rolletype, for eksempel en standard standard. I midten af ​​vinduet er der en liste over brugere, som vil blive føjet til rollen. Indtil videre er listen tom. Men hvis vi klikker på Tilføj, tilføjer vi f.eks. brugere til den tidligere oprettede qq-konto. Der er ikke andet at gøre på scenen med at skabe en rolle. Gem ændringerne ved at klikke på OK.

Adgangstilladelser

Nu skal vi se, hvordan vi kan indstille tilladelser. Dobbeltklik på den oprettede Buh-rolle for at åbne vinduet til redigering. Bemærk venligst, at knappen Tilladelse er tilgængelig nu. Først når rollen er registreret i databasen, kan vi ændre dens rettigheder. Klik på denne knap for at åbne vinduet Database-rolleegenskaber.

Indstilling af adgangstilladelser for roller

Øverst i vinduet er der en liste over databaseroller, så du hurtigt kan skifte mellem dem. Nu er Buh-rollen valgt. I midten af ​​vinduet er der et stort gitter med følgende kolonner:

  • Objekt – navne på objekter;
  • Ejer – en ejer af et objekt;
  • SELECT – tilladelse til at se data eller udføre SELECT-sætningen. Den er kun tilgængelig for tabeller og visninger;
  • INSERT – tilladelse til at tilføje data eller udføre INSERT-sætningen. Den er kun tilgængelig for tabeller og visninger;
  • OPDATERING – tilladelse til at ændre data eller udføre UPDATE-sætningen. Den er kun tilgængelig for tabeller og visninger;
  • DELETE-tilladelse til at slette data eller udføre DELETE-sætningen. Den er kun tilgængelig for tabeller og visninger;
  • EXEC – tilladelse til at udføre lagrede procedurer og funktioner. Den er kun tilgængelig for lagrede procedurer og funktioner;
  • DRI (deklarativ referentiel integritet). Den er kun tilgængelig for tabeller, visninger og funktioner.

Der er ingen tilladelser til den nye rolle. For at kunne se en tabel, f.eks. Kategorier, skal du markere afkrydsningsfeltet ved skæringspunktet mellem rækken Kategorier og kolonnen VÆLG. Du vil se et grønt flueben i feltet, hvilket betyder en tilladelse. Det andet klik ændrer fluebenet til det røde kryds og betyder forbud. Dette kan være nødvendigt, hvis du giver en tilladelse til brugeren og tilføjer vedkommende til en anden rolle, hvor adgang til den valgte handling er tilladt. Det tredje klik fjerner alle tilladelser til handlingen og efterlader boksen tom. Det betyder, at der ikke er adgang; det kan dog delegeres, hvis brugeren føjes til en anden rolle med tilladelserne til objektet, eller tilladelserne er eksplicit angivet.

Hvis du vælger en række med objektet i tabellen eller visningen, bliver knappen Kolonner tilgængelig nederst i vinduet. Antag, at du valgte tabellen og klikkede på denne knap. Vinduet åbnes, hvor du kan indstille tilladelser til individuelle tabelkolonner.

Indstilling af kolonnetilladelser

Dette er faktisk en stor mulighed, fordi nogle kolonner, der er ansvarlige for databasens integritet, ikke må ændres af brugere eller hackere. Det er bedre at forbyde OPDATERING eller VÆLG operationer (hvis muligt) for disse kolonner.

Individualisme

Roller er praktiske at bruge, når det er nødvendigt at kombinere lignende brugere. For eksempel skal adskillige revisorer have adgang til økonomiske tabeller. Det er tidskrævende at give tilladelser til hver enkelt revisor. Det er meget nemmere at oprette en rolle for revisoren, give tilladelser til den og derefter tilføje alle regnskabskonti til denne rolle.

Der er dog tilfælde, hvor tilladelser skal være unikke for en bruger, eller ud over tilladelserne givet af rollen, er det nødvendigt at give yderligere tilladelser. For eksempel skal en af ​​revisorerne have adgang til tabeller for personaleafdelingen. I dette tilfælde er det bedre at tilføje tilladelser direkte til revisoren i stedet for at oprette en ny rolle.

Vi udforskede rollerne først for at vænne os til dem. I de fleste tilfælde er der en separat konto for revisorer, en separat konto for økonomer osv. I dette tilfælde forbinder de fleste sig med serveren ved hjælp af én konto. Det er således umuligt at kontrollere, hvem der gør hvad. Det er bedre at bruge individuelle tilladelser, hvor det er nødvendigt, mens hver bruger skal have sin egen konto.

Tilladelser på tabeller

Lad os se, hvordan vi kan give tilladelser til bestemte objekter, for eksempel på tabeller.

Vælg grenen Databaser/Northwind/Tables i objekttræet. I højre del åbnes en liste over alle tabeller. Højreklik på en tabel, og vælg Alle opgaver/Administrer tilladelser. Vinduet Tilladelsesegenskaber åbnes, som ligner vinduet Database-rolleegenskaber med listen over brugere i stedet for listen over objekter. Objektet er en tabel, vi klikkede på, og dens navn vil blive vist i rullemenuen i vinduet. Nu skal vi indstille tilladelser til dette objekt for forskellige brugere.

Indstilling af tilladelser på en tabel

Listen over tilladelser er som følger:se, opdater, tilføje, slet, eksekver og administrer. Hvis du klikker på knappen Kolonner, åbnes vinduet for indstilling af tilladelser til objektet på niveau med tabelfelter for en bestemt bruger.

Visninger

Vi har to borde. En af dem gemmer listen over ansatte, mens en anden tabel indeholder oplysninger om antallet af arbejdstimer pr. måned og den modtagne løn (officiel og skjult løn).

Antag, at en skattemedarbejder kommer til dig og beder om at vise arbejdernes lønninger. Derudover spørger de, om du har betalt alle skatterne. Hvilke handlinger skal du udføre på din side?

Det første forslag kom fra tredje række – at oprette en ny bruger, som har tilladelse til at læse tabeller inklusiv en liste over medarbejdere og lønninger. Derudover skal du ikke glemme at lukke kolonnen med den skjulte løn. Faktisk er løsningen korrekt, men absolut ineffektiv.

Den bedste mulighed er at oprette en visning, en SQL-forespørgsel, der udvælger data. I databasen ligner det en tabel. Du kan vælge SQL-data ved hjælp af forespørgsler og give tilladelser. Det viser sig, at forespørgslen vil blive udført mod forespørgslen.

For at oprette en visning skal du køre følgende forespørgsel:

CREATE VIEW salary AS
SELECT fields for a tax official
FROM Employees, Wages
WHERE joins

Nu er der et nyt lønobjekt i grenen Databaser/Nordvind/Visninger. Hvis du højreklikker på den og vælger Alle opgaver/Administrer tilladelser, åbnes vinduet for tildeling af tilladelser. Indstil en tilladelse til skattemyndigheden, og gem den. For at gennemgå indholdet af visningen skal du køre forespørgslen:

SELECT *
FROM salary

Som du kan se, er der adgang til et simpelt bord. Skattemyndigheden vil også tro, at de ser faktiske data. Men faktisk vil denne forespørgsel kun indeholde de data, vi har brug for.

I det virkelige liv kan skattemyndigheden ikke snydes så let, fordi de ikke er fjols. Dette eksempel viser dog, at udsigten kan være en perfekt sikkerhedsmetode. Vi kan vise de data, brugerne har brug for og intet andet. Samtidig har vi alle værktøjerne til at administrere tilladelser på visningen uden at påvirke adgangstilladelserne på tabellerne.

Således kan forskellige visninger af de samme tabeller vise forskellige data. Hvis du vil vise en ekstra kolonne, skal du tilføje visningerne til forespørgslen. I dette tilfælde er der ikke behov for at ændre tilladelser.

Systemvisninger

I hver database kan der være systemvisninger oprettet af serveren automatisk. Jeg anbefaler ikke at give tilladelse til dem, fordi de kan vise nogle yderligere oplysninger, som kan hjælpe en hacker med at angive tilladelser eller blot ødelægge data. Systemvisningerne starter med sys-præfikset, og System er angivet i kolonnen Type på listen.

Procedurer og funktioner

Moderne databaseservere understøtter lagrede procedurer og funktioner. Dette er en PL/SQL- eller Transact-SQL-kode afhængigt af databasen, der udføres på databaseserveren. Ved at bruge disse procedurer kan vi udføre enhver handling på serveren eller blot vælge data, som i visningen. Vi kan indstille tilladelser til hver procedure.

Når vi gennemgår roller, har vi allerede set procedurerne på listen over objekter, som du kan indstille tilladelser til, og kun EXEC-kolonnen er tilgængelig i disse rækker, fordi procedurerne kun kan udføres.

Lagrede procedurer og funktioner gemmes i en bestemt database. For at se procedurer for Northwind-databasen skal du vælge grenen Databaser/Northwind/Stored Procedures. Der er mange systemprocedurer, hvis navne starter med dt_-præfikset, og System er angivet i kolonnen Type. Det anbefales ikke at give adgang til disse procedurer, hvis det er muligt. Du kan se funktioner i grenen Databaser/Nordvind/Brugerdefineret funktion.

For at ændre tilladelser til procedurer og funktioner skal du højreklikke på dets navn og vælge Alle opgaver/Administrer tilladelser i menuen. I det vindue, der vises, kan du kun ændre EXEC-kolonnen for procedurer og EXEC- og DRI-kolonnerne for funktioner.

Tilladelsespolitik

Nogle administratorer angiver tilladelser baseret på den eksisterende rolle, for eksempel offentlig. Dette er ikke sandt, fordi der i denne rolle kan være tilladelser, som brugerne ikke har brug for. Prøv derfor at indstille en helt ny tilladelse.

Hvad mig angår, opretter jeg altid en ny rolle og giver et minimumssæt af tilladelser. Hvis brugere beder om flere tilladelser, og de faktisk er nødvendige, tilføjer jeg flere tilladelser. Hvis du tillader alt som standard, er der ingen garanti for, at unødvendige og farlige rettigheder i fremtiden vil blive slettet.

Et andet problem med at angive færre tilladelser er en vane. Brugere kan vænne sig til, at der gives mange tilladelser til dem, og så vil forbuddet forårsage en alvorlig skandale. Ingen kan lide, når deres rettigheder krænkes.

Tabeller/databaser

Databaser gemmer deres indstillinger og skjulte egenskaber i systemtabeller og databaser. De adskiller sig ikke fra andre databaseobjekter, og tilladelser kan indstilles på dem. Tillad under ingen omstændigheder brugere at få adgang til disse tabeller uden et særligt behov.

I SQL Server lagres vigtige systemdata i master- og msdb-databaserne. Disse databaser skal derfor beskyttes. I Oracle eksisterer hver database som et separat objekt, og systemtabeller gemmes sammen med brugernes.

Næsten alle databaseservere tilbyder at installere testdatabaser, der kan bruges til at lære eller teste systemet. Hvis du har dem, så slet – fordi der er sat offentlig adgang til disse databaser. Hvis en hacker kender navne eller egenskaber for et eksisterende objekt i systemet, vil det i høj grad forenkle deres opgave.

Når du opretter forbindelse til en testdatabase, kan du udføre nogle kommandoer på serveren og beskadige operativsystemet eller en fungerende database. Der bør ikke være yderligere ting i systemet. Desuden har sådanne tabeller/databaser ret høje tilladelser selv for en gæst.

Oversigt

På trods af at vi brugte MS SQL Server som eksempel, findes begreberne tilladelser, roller og godkendelse i alle databaser.

Når du kender alle de regler, vi overvejede, er det eneste, du behøver, at udforske det særlige ved deres brug i din database.


  1. Dataanalyseguide:Det er tid til at udmærke sig ved at bruge Excel!

  2. MySQL-ydelse:MyISAM vs InnoDB

  3. MariaDB JSON_MERGE() Forklaret

  4. Statisk vs dynamisk sql