Linked server és a security

Ha SQL azonosításban választhatok, a Windows authentication-t preferálom, mert így egy gonddal kevesebb van az SQL vállán. Kezelje a jelszót, azonosítást, egyebet az oprendszer, sőt, ilyen módon akár csoportszintű jogosultságokat is kezelhetünk (ami nekem nagyon hiányzik az SQL Serverből). Ez azonban időnként érdekes problémákat vethet fel. Ilyen például, hogy az embernek tudnia kell, hogy milyen Windows felhasználóval kapcsolódik az SQL-hez. Ez addig, amíg SSMS-ből megy, nem kihívás, de mihelyt az ember gyermeke elindítja az első webalkalmazását, default IIS konfiggal, már kezdődhet a fejvakarás. (Persze az örök kényelmes megoldás itt is segít: bekapcsoljuk a failure login auditot, aztán megnézzük, hogy kinek a nevét találjuk benne.)
Az igazán vidám terület viszont a szerverek közötti kapcsolódás linked serverrel. Én a “használd az aktuális usert” megoldás híve vagyok: akinek van joga a másik gépen amúgy is, az hadd menjen a saját nevében, akinek nincs, az meg maradjon itt. Eme hozzáállásom és a Windows authentication iránti elkötelezettségem viszont érdekes gödörbe csalt: Azt tapasztaltam, hogy nem működik ez a linked serveres windows authentication-ös móka, login failed for user null hibával küld el. Mivel lánykoromban sokat kellett ügyeskednem Windows oldalon is, belogoltam remote desktoppal a szerverre, onnan kipróbáltam, és működött. A problémát tehát az oly biztonságtalannak minősített windóz biztonságossága okozza: amikor lokálisan beléptem az SQL-t futtató szerverre, akkor ott keletkezett egy tokenem, és ha arról a szerverről tovább akartam lépni, akkor ennek alapján azonosíthatott a linked server. Amikor viszont egy külső gépre logoltam be, és onnan kapcsolódtam az SQL-hez, az SQL azonosított az adminisztrációs gépen lévő tokenem alapján, de neki már nem állt rendelkezésére elegendő információ ahhoz, hogy rajta keresztül a linked szerverhez azonosítsam magam.
Ez így leírva roppan bonyolult, pedig ez a jéghegy csúcsa. A lényeg: ha ilyet akar valaki használni, mindig lépjen be a SQL alatt futó oprendszerber mstsc-vel. A másik megoldás az, hogy az Active Directory User and Computers snap-inben az SQL szervernél becsekkoljuk a trusted for delegation opciót, azaz feljogosítjuk arra, hogy “visszajátsszhassa” a megszerzett autentikációs információkat. Mivel ez az opció csak a DC-knek jár alapból, én inkább az előbbit javasolnám.

Leave a comment