sql >> Database teknologi >  >> RDS >> Sqlserver

Forståelse af SQL Server Always Encrypted

Sikkerhed er et af de vigtigste krav til et datadrevet system. Kryptering er en af ​​måderne at sikre data på. Wikipedia definerer kryptering som:

Kryptering er processen med at kode en besked eller information på en sådan måde, at kun autoriserede parter kan få adgang til den, og de, der ikke er autoriserede, ikke kan.

I SQL Server 2016 introducerede Microsoft en krypteringsfunktion kaldet Altid krypteret . I denne artikel vil vi se, hvad Altid krypteret er, og hvordan det kan bruges til at kryptere og dekryptere data ved hjælp af simple eksempler.

Hvad er SQL Server Always Encrypted?

Altid krypteret er en sikkerhedsfunktion, der gør det muligt for klientapplikationen at administrere krypterings- og dekrypteringsnøglerne og dermed sikre, at kun klientapplikationen kan dekryptere og bruge følsomme data.

Der findes adskillige krypteringsteknikker, men de er ikke så sikre som Altid krypteret . For eksempel bruges symmetrisk nøglekryptering til at kryptere data på databasesiden. En ulempe ved denne tilgang er, at hvis en anden databaseadministrator har dekrypteringsnøglen, kan han få adgang til dataene.

På den anden side, i tilfælde af Altid krypteret , dataene krypteres på klientsiden, og databaseserveren modtager en krypteret version af dataene. Derfor kan dataene ikke dechifreres i databaseenden. Kun den klient, der krypterede dataene, kan dekryptere dem.

Nøgletyper

SQL Server Always Encrypted-funktion bruger to typer nøgler:

  • Kolonnekrypteringsnøgle (CEK)

Det er altid placeret på databaseserveren. Dataene er faktisk krypteret ved hjælp af kolonne CEK. Men hvis nogen på databasesiden har adgang til CEK, kan han dekryptere dataene.

  • Column Master Key (CMK)

Denne nøgle er placeret på klientsiden eller enhver tredjeparts lagerplads. CMK bruges til at beskytte CEK, hvilket tilføjer et ekstra lag af sikkerhed. Den, der har adgang til CMK, kan faktisk dekryptere CEK'en, som derefter kan bruges til at dechifrere de faktiske data.

Krypteringstyper

  • Deterministisk

Denne type kryptering vil altid generere lignende krypteret tekst for den samme type data. Hvis du vil implementere søgning og gruppering i en tabelkolonne, skal du bruge deterministisk kryptering for den kolonne.

  • Randomiseret

Randomiseret kryptering vil generere forskellig krypteret tekst for den samme type data, hver gang du forsøger at kryptere dataene. Brug randomiseret kryptering, hvis kolonnen ikke bruges til gruppering og søgning.

Konfigurerer Altid krypteret Brug af SSMS

Vi kan konfigurere SQL Server Always Encrypted via SSMS. Men før det skal vi oprette en database og tilføje en tabel til databasen. Udfør følgende script for at gøre det:

CREATE DATABASE School

Use School
CREATE TABLE Student  
(  
   StudentId int identity(1,1) primary key,  
   Name varchar(100),  
   Password varchar(100) COLLATE Latin1_General_BIN2 not null,  
   SSN varchar(20)  COLLATE Latin1_General_BIN2 not null
)
>

I scriptet ovenfor opretter vi en ny database ved navn Skole . Databasen har fire kolonner:StudentId , Navn , Adgangskode og SSN . Du kan se, at kolonnerne Password og SSN har en COLLATE. Det er nødvendigt at angive COLLATE for den kolonne, du ønsker Altid krypteret . Krypteringstypen er angivet som "Latin1_General_BIN2".

Lad os nu først prøve at tilføje to poster til elevtabellen.

insert into Student ( Name, Password, SSN)
VALUES ('John','abc123', '451236521478'),
('Mike','xyz123', '789541239654')

På dette tidspunkt har vi ikke konfigureret Altid krypteret på en af ​​kolonnerne i elevtabellen, så hvis du prøver at vælge posterne fra elevtabellen, vil du se de faktiske dataværdier i stedet for de krypterede værdier. Udfør følgende forespørgsel for at vælge poster:

SELECT * FROM Student

Outputtet ser således ud:

Lad os nu konfigurere SSMS for at aktivere Altid krypteret . Som vi sagde tidligere, Altid krypteret opretter kolonnekrypteringsnøgler og kolonnemasternøgler.

For at se de eksisterende kolonnekrypteringsnøgler og kolonnemasternøgler til Skoledatabasen skal du gå til Databaser -> Skole -> Sikkerhed -> Altid krypterede nøgler som vist i følgende figur:

Da du ikke har nogen krypteret post i datasættet, vil du ikke se nogen CEK eller CMK på listen.

Lad os nu aktivere kryptering i kolonnerne Adgangskode og SSN i ​​elevtabellen. For at gøre det skal du højreklikke på Databaser -> Skole. Fra rullemenuen skal du vælge Krypter kolonner mulighed som vist i figuren nedenfor:

Klik på Næste knappen på Introduktion vindue. Fra Kolonnevalg vinduet, tjek kolonnerne Adgangskode og SSN. For kolonnen Adgangskode skal du vælge krypteringstypen som Randomiseret . For SSN-kolonnen skal du vælge Deterministisk . Dette vises på følgende skærmbillede:

Klik på Næste knappen på Master Key Configuration vindue. Som standard er hovednøglen gemt på klientmaskinen som vist nedenfor:

Klik på Næste knappen på Kør indstillinger og Oversigt vinduer. Hvis alt går fint, bør du se følgende Resultater vindue.

Nu, hvis du igen går til Databaser -> Skole -> Sikkerhed -> Altid krypterede nøgler, bør du se den nyoprettede CEK og CMK som vist i følgende figur:

Prøv nu at vælge poster fra elevtabellen.

SELECT * FROM Student

Outputtet ser sådan ud.

Fra outputtet kan du se, at kolonnerne Password og SSN er blevet krypteret.

Hentning af dekrypterede data

SELECT-forespørgslen returnerede krypterede data. Hvad hvis du vil hente data i dekrypteret form? For at gøre det skal du oprette et nyt forespørgselsvindue i SSMS og derefter klikke på Skift forbindelse ikonet øverst i Objekt Explorer som vist i følgende figur:

SQL Server-forbindelsesvinduet vises. Vælg Indstillinger knap fra nederst til højre som vist nedenfor:

I vinduet, der vises, skal du klikke på Yderligere forbindelsesparametre fanen fra øverst til venstre og indtast "Kolonnekrypteringsindstilling =Aktiveret" i tekstboksen som vist på det følgende skærmbillede. Til sidst skal du klikke på Forbind knap.

Udfør nu igen følgende SELECT-forespørgsel:

SELECT * FROM Student

I resultaterne vil du se posterne returneret i dekrypteret form som vist nedenfor:

Konklusion

Altid E krypteret er en af ​​de nyeste sikkerhedsfunktioner i SQL Server. I denne artikel har vi kort gennemgået hvad Altid E krypteret er, og hvordan man aktiverer det ved hjælp af SQL Server Management Studio. Vi så også et grundlæggende eksempel på kryptering og dekryptering af data ved hjælp af Altid E krypteret funktion.


  1. Hvad er MySQL Workbench?

  2. fejl:ORA-65096:ugyldigt fælles bruger- eller rollenavn i oracle

  3. SQL-referencetabel:Sådan oprettes og skrives grundlæggende forespørgsler

  4. Forstå Oracles Java på Mac