Professional Documents
Culture Documents
Apstrakt: U radu su prikazane mogućnosti Microsoft SQL Ako dođe do upada u servis, napadač stiče prava na sistemu
Server platforme u oblastima bezbednosti, kriptografije koja ima servis čime mu olakšavamo posao.
podataka, praćenja aktivnosti i automatizacije
administrativnih zadataka. Sve mogućnosti su
Prilikom instalacije SQL Servera automatski se nude novi
demonstrirane kroz primere TSQL koda.
različiti nalozi za svaki od njih, a sama instalaciona
Ključne reči: Microsoft SQL Server, bezbednost, procedura će napraviti naloge i podesiti minimalni set
kriptografija, administracija potrebnih prava kako bi servisi ispravno funkcionisali.
Da bi iskoristili ovu mogućnost instalacionog programa,
Abstract: This paper presents the capabilities of Microsoft moramo ga pokrenuti u bezbednosnom kontekstu lokalnog
SQL Server platform in the areas of security, ili domenskog administratora ako želimo da napravi
cryptography, monitoring activities and administrative
domenske naloge.
tasks automating. All features are demonstrated through
TSQL code examples.
U slučaju da ima potrebe da se nalozi ručno kreiraju i
Keywords: Microsoft SQL Server, security, cryptography, podese potrebna prava pre instalacije SQL Servera,
administration informacije o neophodnim pravima svakog naloga se
nalaze na MSDN sajtu „Configure Windows Service
1. UVOD Accounts and Permissions“ [link].
Rad je nastao kao rezultat više projekata instalacije,
Nalozi koje koriste servisi se mogu naknadno promeniti
administracije i održavanja Microsft SQL Servera, sa
preko “Sql Server Configuration Manager” alata koji
posebnim naglaskom na verziju 2012. Namena rada je da
dolazi uz SQL Server ili pomoću Services apleta u okviru
administratorima i programerima pruži uvid u mogućnosti
Administrative tools grupe na Windows računaru:
platforme i dobru praksu u oblastima bezbednosti servisa,
podataka i automatskih notifikacija.
Pre svega treba se upoznati sa ključnim MS SQL Server
Slika 1: Sql Server Configuration Manager
platformom i servisima koji je čine:
Autorizacija je proces dodele prava autentifikovanom Autorizacija, odnosno dodela prava autentifikovanim
korisniku. Određuje koje resurse može koristiti i na koji korisnicima se kasnije odvija nezavisno od načina
način. autentifikacije i nije predmet ovog rada.
SQL Server poznaje dva načina autentifikacije:
1. SQL Server autentifikacija gde SQL Server vrši
autentifikaciju korisnika korišćenjem user Preporuke:
name/password para. Mora se koristiti u mrežama bez
domena ili za pristup serveru koji je publikovan na Instalirati samo potrebne servise i time smanjiti
javnom Webu direktno preko TCP/IP protokola. Može potencijalnu površinu za napad
se naravno koristiti i u mrežama koje imaju domen ali Posle instalacije zaustaviti servise koji se još uvek ne
tada je bolje koristiti drugi način autentifikacije. koriste u produkciji
2. Windows autentifikacija (takođe od ranije poznata
Gde god je moguće koristiti Windows autentifikaciju
po imenima Trusted i Integrated), gde autentifikaciju
Ako se mora koristiti SQL Server autentifikacija
vrši Windows domain. SQL server administrator
postaviti polise za kompleksnost šifre
određuje koje domenske grupe i korisnici mogu da se
Izbrisati ili onemogućiti (disable) guest korisnika u
autentifikuju na SQL server, pa na taj način SQL
svakoj bazi:
Server „veruje“ (trust) Windows sistemu
autentifikacije. Ovo je preporučljiv vid autentifikacije
USE ImeBaze
na SQL Server jer se koriste napredni Windows
REVOKE CONNECT FROM [guest]
mehanizmi, smart kartice, domenske polise i slično.
Sql Server poseduje sve potrebne opcije vezane za Slika 3: Rezultat poslednjeg HashByte primera gde se
kriptografiju koje su jednostavne za korišćenje. Takođe je prikazuje digest šifre korisnika u drugoj koloni
moguće proširiti postojeće mogućnosti korišćenjem
extended stored procedura pisanih u C++ programskom
jeziku, ali ova opcija će biti uklonjena u sledećim
verzijama Sql Servera. Najbolje je ovo uraditi pomoću
CLR (Common Language Runtime) integracije, odnosno
integracije sa .NET platformom i .NET programskim
jezicima.
HASH funkcija
SELECT HashBytes ('MD5', 'SQL server 2012') Backup ovakve “TDE enabled” baze je takođe kriptovan i
GO ako želimo da uradimo njen Restore na drugom serveru
SELECT HashBytes ('SHA2_512', 'SQL server 2012') moramo preneti i sertifikat sa originalnog servera. Ako se
GO kreira Mirror TDE baze, on je takođe kriptovan. Isto važi
ukoliko se uspostavi Log Shipping TDE baze ka jednom ili
više target servera.
USE AdventureWorks2012
GO Na sledećem primeru je prikazan postupak postavljanja
SELECT Transparent Data Encryption mehanizma baze podataka
LoginID, AdventureWorks2012:
HashBytes ('SHA2_512', password) AS PwdHash
FROM
HumanResources.Employee
USE master USE AdventureWorks2012
GO GO
-- kreiranje master ključa za enkripciju -- ako ne postoji master ključ, kreirati ga
CREATE MASTER KEY ENCRYPTION BY IF NOT EXISTS
PASSWORD = '<Ovde koristiti jaku šifru>' (SELECT * FROM sys.symmetric_keys WHERE
GO symmetric_key_id = 101)
-- kreiranje sertifikata koga štiti master ključ CREATE MASTER KEY ENCRYPTION BY
CREATE CERTIFICATE MyServerCert WITH PASSWORD =
SUBJECT = 'My DEK Certificate' '23987hxJKL95QYV4369#ghf0%lekjg5k3fd117r$$#194
GO 6kcj$n44ncjhdlj'
GO
USE AdventureWorks2012 -- kreiranje sertifikata za ovu namenu
GO CREATE CERTIFICATE Sales09
-- kreira se database ključ za enkripciju WITH SUBJECT = 'Customer Credit Card Numbers';
-- koga štiti sertifikat GO
CREATE DATABASE ENCRYPTION KEY WITH -- kreiramo simetrični ključ koji se štiti prethodno
ALGORITHM = AES_128 ENCRYPTION BY SERVER -- kreiranim sertifikatom
CERTIFICATE MyServerCert CREATE SYMMETRIC KEY CreditCards_Key11
GO WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Sales09;
-- postavlja se baza da koristi TDE GO
ALTER DATABASE AdventureWorks2012 SET -- kreiramo varbinary kolonu za čuvanje kriptovanog
ENCRYPTION ON -- podatka u postojećoj tabeli Sales.CreditCard
GO ALTER TABLE Sales.CreditCard
ADD CardNumber_Encrypted varbinary(128);
GO
-- otvaramo simetrični ključ za kriptovanje podataka
Kriptovanje pojedinačnih kolona (podataka) u tabeli OPEN SYMMETRIC KEY CreditCards_Key11
DECRYPTION BY CERTIFICATE Sales09;
Ovaj mehanizam omogućava kriptovanje podataka na -- enkriptujemo podatke u koloni CardNumber
nivou kolone u tabeli Sql Server baze podataka. -- korišćenjem ključa CreditCards_Key11
Fizički, podaci se skladište u kriptovanom obliku u data -- čuvamo rezultat u koloni CardNumber_Encrypted.
fajlu baze podataka. UPDATE Sales.CreditCard
Mehanizam je procesno manje zahtevan od predhodnog SET CardNumber_Encrypted =
TDE jer se ne kriptuje cela baza (odnosno data i log fajlovi) EncryptByKey(Key_GUID('CreditCards_Key11')
već tipično samo njen mali deo. , CardNumber, 1, HashBytes ('SHA1',
Izuzetno je korisno ako treba zaštiti samo određene CONVERT( varbinary, CreditCardID)));
informacije – lične podatke, brojeve platnih kartica i tome GO
slično.
Postupak je malo složeniji u odnosu na TDE jer se podaci -- čitanje kriptovanih podataka
moraju eksplicitno dekriptovati i enkriptovati – -- otvaramo simetrični ključ za dekriptovanje
respektivno funkcije ENCRYPTBYKEY [link] i OPEN SYMMETRIC KEY CreditCards_Key11
DECRYPTBYKEY [link]. DECRYPTION BY CERTIFICATE Sales09;
Obe funkcije zbog potrebe za brzinom koriste simetrične GO
ključeve, odnosno algoritme: RC2, RC4, DES, 3DES, -- prikazujemo podatke
DESX, AES_128, AES_192, AES_256 SELECT CardNumber, CardNumber_Encrypted
AS 'Encrypted card number', CONVERT(nvarchar,
Kriptovani podatak se u tabeli čuva u varbinary formatu. DecryptByKey(CardNumber_Encrypted, 1 ,
Sledi pseudo primer postavljanja i korišćenja ovog HashBytes('SHA1', CONVERT(varbinary,
mehanizma: CreditCardID)))) AS 'Decrypted card number'
FROM Sales.CreditCard;
GO
4. SQL SERVER AUDIT
Slika 4: Šema audit mehanizma -- Kreiranje server audit specifikacije za BACKUP &
-- RESTORE operacije na serveru
USE master
GO
CREATE SERVER AUDIT SPECIFICATION
ServerAuditSpecifikacija
FOR SERVER AUDIT TestAudit
ADD (BACKUP_RESTORE_GROUP)
GO
Za praćenje aktivnosti korisnika se na osnovnom nivou Automatskim notifikacijama upravlja servis Sql Server
koriste events i extended events mehanizmi. Oni se Agent. Zadužen je za automatizaciju poslova, praćenje
postavljaju preko TSQL naredbi i slično audit sistemu događaja i notifikacije administratorima. Omogućava
mogu događaje upisivati u datoteku, Sql tabelu ili sistemski proaktivnu administraciju, odnosno uočavanje
log. potencijalnih problema i pokušaja upada u sistem pre nego
Zarad lakše administracije i korišćenja postoji aplikacija što se zaista dogode.
SQL Server Profiler koja nudi GUI jednostavan za Koristi Database mail sistem kako bi preko SMTP email
upotrebu, a oslanja se na pomenute mehanizme. servera slao notifikacije. Notifikacije mogu biti rezultat
Profiler se postavlja između Sql Servera i klijenata koji mu definisanih događaja na Sql Serveru ili rezultat izvršavanja
pristupaju. Kreira se trace u kome se definiše koji događaji automatizovanih job-ova kao što su Backup, ETL i slični.
se prate i filteri. Na primer, želimo pratiti sve pozive stored Konfiguracija i metapodaci ovog servisa se čuvaju u
procedura nad određenom bazom pod uslovom da njihovo sistemskoj bazi podataka MSDB.
izvršavanje traje više od 10 sekundi.
Zahvaljujući velikom broju ponuđenih događaja i filtera Konfiguracija ovog servisa se može postaviti preko SQL
moguće je precizno podesiti trace i dobiti potrebne Server Management studija.
informacije vezane za performanse, bezbednost ili bilo šta
drugo što treba ispratiti na Sql Serveru. Slika 7: Konfiguracija Sql Server Agent servisa
Treba računati na dodatno opterećenje servera koga
pratimo, te je preporuka da informacije o praćenju ne
snimamo na njega već na neki drugi server u mreži, kao što
je prikazano na sledećoj slici: