SSL TDS alá, avagy az SQL kapcsolat titkosítása

Ha az SQL klienseink (például a fejlesztők Management Studioi) és az SQL szervereink nem egymás közelében helyezkednek el, akkor praktikus, ha az SQL Server által használt tabular data stream (TDS) protokoll alá SSL-t teszünk.

Első lépésként természetesen egy érvényes tanúsítványra lesz szükségünk. Fontos, hogy a tanúsítványon szereplő névnek pontosan meg kell egyeznie a szerver nevével. Az egyezést az SQL Server DNS lekérdezéssel ellenőrzi, ezért lehetőleg ne bonyolítsuk az életünket DNS aliasokkal vagy DNS utótag bűvészkedéssel. A másik fontos dolog, hogy a tanúsítvány megbízható kiadótól származzon, amiben a szerver és a kliens is megbízik.

A kész tanúsítványt importáljuk be a Local Computer account Personal Certificates tárába. Ezt legegyszerűbben úgy tehetjük meg, ha elindítjuk az MMC-t, hozzáadjuk a Certificates snap-int és a hozzáadáskor kapott kérdésre azt választjuk, hogy a Computer account érdekel minket. Ezek után a Personal\Certificates ágon a helyi menüben találjuk az Import menüpontot (katt a teljes képért):

sql-ssl-import

A következő lépés, hogy az SQL Servert futtató felhasználói fióknak jogot adunk a tanúsítvány elérésére. Ehhez a jobb oldali panelen jelöljük ki a tanúsítványt, majd a helyi menüben válasszuk a All Tasks –> Manage Private Keys… menüpontot:

sql-ssl-acl

Eredményül egy szokásos ACL konfiguráló ablakot kapunk. Kattintsunk az Add gombra és válasszuk ki azt a fiókot, akinek a nevében az SQL Server instance-ünk fut. Az SQL Server 2012 már alapértelmezés szerint saját service account nevében fut, ezt NT Service\MSSQL$instanceneve formában adhatjuk meg, majd adjunk neki Read jogot (nem kell Full control!):

sql-ssl-ace

Indítsuk el az SQL Server Configuration Managert és navigáljunk el az SQL Server Network Configuration –> Protocols for [instance neve] ágig, majd nyissuk meg a hozzá tartozó Properties ablakot:

sql-ssl-properties

Kattintsunk át a második, Certificate fülre és válasszuk ki a használni kívánt tanúsítványt:

sql-ssl-properties-certificate

Ha nem jelenik meg a tanúsítvány a listában, akkor gond van, ellenőrizzük a tanúsítványt, a névfeloldást és a jogosultságokat.

Visszalépve az első, Flags fülre, a Force Enryption kapcsoló Yes-re állításával kikényszeríthetjük a titkosítást:

sql-ssl-properties-force-encryption

Ebben az esetben csak azok a kliensek tudnak majd a szerverhez kapcsolódni, akiknél a connection stringben szerepel az Encrypt=True; beállítás. Amennyiben a kliens SQL Server Management Studio, a titkosítást a Connection Properties fülön az Encrypt connection kapcsoló bejelölésével engedélyezhetjük:

sql-ssl-ssms-encrypt

A titkosítás működését ellenőrizhetjük Wiresharkkal, de akár az SQL Servertől is megkérdezhetjük, hogy melyik kapcsolat van titkosítva. Ehhez a sys.dm_exec_connections view encrypt_option oszlopa a hiteles forrás. Ezzel a lekérdezéssel a kapcsolat legfontosabb paramétereit tekinthetjük át:

SELECT session_id, net_transport, client_net_address, local_net_address, 
       local_tcp_port, auth_scheme, encrypt_option 
FROM sys.dm_exec_connections

Ha az encrypt_option oszlopban TRUE-t látunk, megnyugodhatunk.

 

Technorati-címkék: ,,,

One thought on “SSL TDS alá, avagy az SQL kapcsolat titkosítása

  1. laci hornyacsek

    Fejlesztőként nem szereti az ember, ha a drága költségen kifejlesztett, üzleti logikát megtestesítő tárolteljárások, triggerek, stb. a pór nép (felhasználók) kezébe kerülne.

    Ezért nem tanácsos titkosítatlan csatornán átlőni ezeket az ügyfélnél futó adatbázisba…

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s