Подаци су кључна имовина сваке компаније, посебно подаци о трансакцијама који садрже пословне тајне као што су финансијске или здравствене евиденције. Подаци су најрањивији у транзиту између сервера који их складишти и клијента који их захтева.
Стандардни приступ осигурању сигурности је шифровање података на серверу и коришћење протокола ХТТПС са омогућеним ССЛ-ом за заштиту података у транспорту. Међутим, шта ако бисмо могли још више да повећамо ниво заштите употребом ХТТПС-а и слањем података у шифрованом формату преко комуникационе линије, само да бисмо дешифровали податке о клијентима који имају важеће сертификате? Такав приступ би знатно отежао традиционални напад на човека у средини (МИТМ).
Мицрософтово решење овог проблема је Увек шифровано , начин слања шифрованих података преко цевовода и дешифровање само од корисника који имају приступ важећим сертификатима. Дакле, чак и ако нападач добије податке, без одговарајућег сертификата ускладиштеног на клијентској машини, подаци би били бескорисни.
Овај чланак описује како се поставља и користи увек шифровано и препоручује се читање свима који шаљу важне податке преко јавних комуникационих линија, чак и ако су заштићени ССЛ-ом.
Алваис Енцриптед је технологија шифровања на страни клијента коју је Мицрософт увео са СКЛ Сервером 2016. Алваис Енцриптед аутоматски чува податке, не само када су написани, већ и када их чита одобрена апликација. за разлику од Транспарентно шифровање података , који шифрира податке и датотеке евиденције на диску у реалном времену, али омогућава читање података било којој апликацији која их пита, Алваис Енцриптед захтева да ваша клијентска апликација користи комуникациони управљачки програм који омогућава Алваис Енцриптед за комуникацију са базом података. Коришћењем овог управљачког програма апликација безбедно преноси шифроване податке у базу података које касније може дешифровати само апликација која има приступ кључу за шифровање. Било која друга апликација која тражи податке такође може да преузме шифроване вредности, али та апликација не може да користи податке без кључа за шифровање, чинећи тако податке бескорисним. Због ове архитектуре шифровања, инстанца СКЛ Сервера никада не види нешифровану верзију података.
Тренутно су једини покретачки програми који увек омогућавају шифровање добављач података .НЕТ Фрамеворк за СКЛ Сервер, који захтева инсталацију .НЕТ Фрамеворк верзија 4.6 на клијентском рачунару и ЈДБЦ 6.0 управљачки програм . То ће се вероватно променити временом, али ово су званични захтеви Увек шифровани од априла 2017. године.
Али зашто нам је потребна ова технологија? Постоји неколико добрих разлога због којих треба користити Увек шифровано:
Коришћење Алваис Енцриптед захтева малу количину припреме унутар сервера базе података за чување шифрованих табела. Припрема је процес у два корака:
Па, шта је главни кључ колоне?
Главни кључ колоне је сертификат који се чува у Складиште Виндовс сертификата (која се користи као демонстрација као опција складиштења сертификата), независна страна хардверски сигурносни модул (генерички назив за решења независних произвођача за инсталирање, управљање и употребу сертификата) или Трезор Азуре кључева (Мицрософтово решење засновано на облаку за управљање сертификатима).
Апликација која шифрира податке користи главни кључ колоне за заштиту различитих кључева шифровања ступаца који рукују шифровањем података унутар колона табеле базе података. Коришћење складишта сертификата из СКЛ Сервера, које се понекад називају Ентерприсе Кеи Манагер , захтева употребу СКЛ Сервер Ентерприсе Едитион.
Веллс Фарго неетичке пословне праксе
У овом чланку описујемо употребу самопотписаног сертификата који чувате у Мицрософт продавници сертификата оперативног система Виндовс. Иако овај приступ није оптимална конфигурација, он демонстрира концепт увек шифрованог - али такође треба навести да је овај приступ није прихватљиво за производна окружења , при чему се управљање сертификатима мора обављати са одвојеним, заштићеним корисничким рачунима и, по могућности, на одвојеним серверима.
Дефиницију главног кључа колоне можете да креирате помоћу графичког интерфејса у оквиру СКЛ Сервер Манагемент Студио (ССМС) или помоћу Т-СКЛ. У ССМС-у се повежите са инстанцом базе података СКЛ Сервер 2016 у којој желите да користите Алваис Енцриптед за заштиту табеле базе података.
квантни хеџ фондови са најбољим учинком
У Објецт Екплорер-у прво дођите до базе података, а затим до Сецурити, а затим проширите фасциклу Алваис Енцриптед Кеис да бисте приказали њене две подмапе, као што је приказано на следећим сликама:
Направите кључ у ССМС-у.
Да бисте креирали главни кључ колоне, кликните десним тастером миша на Column Master Keys
директоријум и изаберите New Column Master Key
. У New Column Master Key
У дијалошки оквир унесите име главног кључа колоне, наведите да ли желите да га сачувате у складишту сертификата тренутног корисника или локалног рачунара или у Азуре кључу трезора, а затим на списку изаберите сертификат. Ако нема сертификата или ако желите да користите нови самопотписани сертификат, кликните на Generate Certificate
дугме, а затим кликните OK
. Овај корак креира самопотписани сертификат и учитава га у складиште сертификата тренутног корисничког налога на којем је покренут ССМС.
Белешка: Ове кораке би требало да изводите на поузданом рачунару, али не и на рачунару који хостује инстанцу СКЛ Сервера. На тај начин подаци остају заштићени у СКЛ Серверу чак и ако је главни рачунар угрожен.
Дакле, након што створите сертификат и конфигуришете га као главни кључ колоне, морате га извести и дистрибуирати на свим рачунарима који хостују клијенте којима је потребан приступ подацима. Ако је клијентска апликација заснована на Интернету, морате да учитате сертификат на веб сервер. Ако се ради о апликацији инсталираној на рачунарима корисника, морате да примените сертификат на рачунар сваког корисника појединачно.
Применљива упутства за извоз и увоз сертификата за ваш оперативни систем можете пронаћи на следећим УРЛ-овима:
Када увезете сертификате у складиште сертификата на рачунарима са апликацијом која шифрира и дешифрује податке, морате да увезете цертификате у машинско складиште сертификата или у складиште сертификата налога домена на којем је покренута апликација.
Након креирања матичног кључа колоне, спремни сте за креирање кључева шифровања за одређене колоне. Управљачки програм СКЛ Сервер 2016 АДО.НЕТ користи кључеве за шифровање колоне за шифровање података пре слања на СКЛ сервер и за дешифровање података након преузимања из инстанце СКЛ Сервер 2016. Као и код главног кључа колоне, кључеве за шифровање колоне можете да креирате помоћу Т-СКЛ или ССМС. Док је главне кључеве ступаца лакше креирати помоћу Т-СКЛ-а, кључеве за шифровање ступаца лакше је креирати помоћу ССМС-а.
Да бисте креирали кључ за шифровање колоне, користите Object Explorer
да бисте се повезали са инстанцом базе података, идите до базе података, затим до Security
и проширите Always Encrypted Keys
директоријум. Кликните десним тастером миша Column Encryption Keys
, а затим изаберите New Column Encryption Key
. У New Column Encryption Key
у дијалошки оквир унесите име за нови кључ за шифровање, одаберите Column Master Key Definition
у падајућој листи, а затим кликните OK
. Сада можете да користите кључ за шифровање колоне у дефиницији нове табеле.
Након креирања дефиниције главног кључа колоне и кључева за шифровање колоне, можете створити табелу која ће садржати шифроване вредности.
Пре него што то урадите, морате да одлучите који тип шифрирања ћете користити, које колоне за шифровање и да ли можете да индексујете ове колоне. Са Увек шифровано Функцијом нормално дефинишете величине колона, а СКЛ Сервер прилагођава величину меморије колоне на основу поставки шифровања. Након што креирате табелу, можда ћете морати да промените апликацију да извршава наредбе на овој табели помоћу Увек шифровано .
Пре него што креирате табелу која садржи шифроване вредности, морате да одлучите да ли треба да шифрира сваки ступац.
Прво, да ли ће се овај ступац користити за тражење вредности или само за враћање тих вредности?
респонзивни веб дизајн за мобилне уређаје
Ако ће се колона користити за претраживања, колона мора користити а детерминистички тип шифровања , који омогућава операције једнакости. Међутим, постоје ограничења у претраживању података који су шифровани помоћу Увек шифровано одлика. СКЛ Сервер 2016 подржава само операције једнакости, које укључују equal to
, not equal to
, joins
(који користе једнакост), и користећи вредност у GROUP BY
клаузула. Било која претрага помоћу LIKE
није подржан. Поред тога, сортирање података који су шифровани помоћу Увек шифровано мора се извршити на нивоу апликације, јер ће СКЛ Сервер сортирати на основу шифроване вредности, а не дешифроване вредности.
Ако се колона неће користити за лоцирање записа, онда би колона требало да користи случајни тип шифровања. Ова врста шифровања је сигурнија, али не подржава операције претраживања, спајања или груписања.
Када креирате табеле, користите уобичајени CREATE TABLE
синтакса са неким додатним параметрима унутар дефиниције колоне. У оквиру ENCRYPTED WITH
се користе три параметра синтакса за CREATE TABLE
изјава.
Први од њих је ENCRYPTION_TYPE
параметар, који прихвата вредност RANDOMIZED
или DETERMINISTIC
. Други је ALGORITHM
параметар, који прихвата само вредност RAEAD_AES_256_CBC_HMAC_SHA_256
. Трећи параметар је COLUMN_ENCRYPTION_KEY
, што је кључ за шифровање који користите за шифровање вредности.
CREATE TABLE [dbo].[Customers] ( [CustomerId] [int] IDENTITY(1,1), [TaxId] [varchar](11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = YOUR_COLUMN_ENCRYPTION_KEY) NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [MiddleName] [nvarchar](50) NULL, [Address1] [nvarchar](50) NULL, [Address2] [nvarchar](50) NULL, [Address3] [nvarchar](50) NULL, [City] [nvarchar](50) NULL, [PostalCode] [nvarchar](10) NULL, [State] [char](2) NULL, [BirthDate] [date] ENCRYPTED WITH (ENCRYPTION_TYPE = RANDOMIZED, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = YOUR_COLUMN_ENCRYPTION_KEY) NOT NULL PRIMARY KEY CLUSTERED ([CustomerId] ASC) ON [PRIMARY] ); GO
Колоне које садрже шифроване податке могу се користити као кључне колоне у индексима, под условом да су те колоне шифроване помоћу DETERMINISTIC
врста шифровања. Колоне шифроване помоћу RANDOMIZED
тип шифровања враћа поруку о грешци када покушате да креирате индекс на тим колонама. Колоне шифроване коришћењем било ког типа шифровања могу се користити као INCLUDE
колоне унутар некластерисаних индекса.
Будући да шифроване вредности могу бити индекси, нису потребне додатне мере за подешавање перформанси за вредности шифроване Алваис Енцриптед изван индексирања и подешавања које обично изводите. Додатни мрежни опсег и већи И / О једини су нежељени ефекти који су резултат повећане величине вредности које се враћају.
Перформансе су увек кључни фактор, посебно у овом случају, када уобичајеном промету базе података додајемо опсег кодирања. Најбоље место за тестирање перформанси је СКЛ перформансе , који је тестирао извршавање упита и употребу диска у различитим сценаријима:
Увек шифровани тестови резултата перформанси СКЛ Сервера.
Како постоји рад на ЦПУ-у и чврстом диску који треба обавити са процесима шифровања и дешифровања, очигледан је утицај на количину коришћеног простора за складиштење и трајање упита. Како ово утиче на ваше окружење - ЦПУ, РАМ и функције диска - требали бисте тестирати да ли ће ово представљати проблем у производњи.
Белешка: У случају да желите да сазнате више о оптимизацији перформанси Мицрософт СКЛ Север, погледајте један од наших претходних чланака, Како подесити Мицрософт СКЛ Сервер за перформансе .
Шта треба да урадите да бисте правилно применили Алваис Енцриптед у старом коду?
Једна од лепих ствари у вези са Алваис Енцриптед особином СКЛ Сервера 2016 је да апликације које већ користе ускладиштене процедуре, ОРМ-ове или параметризоване Т-СКЛ наредбе треба да захтевају нема промена у апликацији да користите Алваис Енцриптед, осим ако се операције неједнакости већ користе. Апликације које граде СКЛ изразе као динамички СКЛ у апликацији и извршавају те наредбе директно према бази података морају се модификовати тако да користе параметризацију својих упита, препоручену најбољу безбедносну праксу за све апликације, пре него што могу да искористе предност функције Алваис Енцриптед.
Још једна промена потребна да би Алваис Енцриптед радила је додавање атрибута низа везе везном низу апликације која се повезује са базом података: Column Encryption Setting=enabled
.
да ли треба да научим Ц или Ц++
Када је ова поставка додата у низ везе, управљачки програм АДО.НЕТ пита СКЛ Сервер да ли извршна наредба укључује било које шифроване колоне и ако јесу, који су ступци шифровани. За апликације са великим оптерећењем употреба ове поставке можда није најбоља пракса, посебно ако велики проценат извршавања наредби не укључује шифроване вредности.
Због тога .НЕТ Фрамеворк пружа нову методу на објекту СклЦоннецтион под називом SqlCommandColumnEncryptionSetting
, која има три могуће вредности:
Disabled
- Не постоје увек шифроване колоне или параметри који се користе за упите који се извршавају помоћу овог објекта везе.Enabled
- Увек се користе шифроване колоне и / или параметри који се користе за упите који се извршавају помоћу овог објекта везе.ResultSet
- Не постоје увек шифровани параметри. Међутим, извршавање упита помоћу овог објекта везе враћа колоне шифроване помоћу Алваис Енцриптед.Белешка: Имајте на уму да употреба ове методе може потенцијално захтевати значајну промену кода ваше апликације. Алтернативни приступ је рефакторизација ваше апликације да би користила различите везе.
За најбоље перформансе СКЛ Сервера, паметно је тражити само метаподатке о Алваис Енцриптед за оне упите који користе Алваис Енцриптед. То значи да у апликацијама за које велики проценат упита користи Увек шифровано треба да буде омогућен низ везе и да одређени упити у апликацији наведу SqlCommandColumnEncryptionSetting
као Disabled
. За апликације за које већина упита не користи Увек шифроване вредности, низ везе не би требало да буде омогућен и SqlCommandColumnEncryptionSetting
треба поставити за Enabled
или ResultSet
по потреби за оне упите који користе увек шифроване колоне. У већини случајева апликације могу једноставно да омогуће атрибут низа везе, а перформансе апликације остаће непромењене док користе шифроване податке.
Кратак одговор? Да дефинитивно!
Не само да помаже у спречавању многих потенцијалних забринутости и безбедности СКЛ програмери са додатним безбедносним функцијама, али такође чини ваш систем компатибилнијим, што је витално у више индустрија, од телекома до банкарства и осигурања. Такође је важно напоменути да с обзиром на техничке предуслове поменуте у чланку, Алваис Енцриптед се може применити уз минималне промене апликација на постојећим системима .
Иако бисте могли да користите прилагођена решења да бисте постигли исти ефекат, ова технологија је у пакету са новом верзијом СКЛ Сервера и може се користити одмах. Такође је важно напоменути, јер је ово нова технологија, још увек их има ограничења на његову употребу и додаје неке додатне хардверске деменаде.
Међутим, уколико они не прекидају посао за ваше окружење и ако имате апликацију која се дистрибуира изван интранета ваше компаније, практично нема разлога да не користите Алваис Енцриптед.