Megosztás a következőn keresztül:


Ajánlott biztonsági eljárások a tartalmazott adatbázisokkal

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példány

A tartalmazott adatbázisok egyedi fenyegetésekkel rendelkeznek, amelyeket az SQL Server adatbázismotor-rendszergazdáinak kell értelmezniük és enyhítenie. A fenyegetések többsége a FELHASZNÁLÓ JELSZÓVAL hitelesítési folyamathoz kapcsolódik, amely a hitelesítési határt az adatbázismotor szintjéről az adatbázis szintjére helyezi át.

A ALTER ANY USER engedéllyel rendelkező felhasználók, mint például a db_owner és a db_accessadmin rögzített adatbázisszerepkörök tagjai, az SQL Server rendszergazdája tudta vagy engedélye nélkül is hozzáférést biztosíthatnak az adatbázishoz. Ha hozzáférést ad a felhasználóknak egy tartalmazott adatbázishoz, az növeli a támadási felületet a teljes SQL Server-példány ellen. A rendszergazdáknak meg kell érteniük a hozzáférés-vezérlés ezen delegációját, és különös figyelmet kell fordítaniuk arra, hogy megadják-e a felhasználóknak a zárt adatbázisban az ALTER ANY USER engedélyt. Minden adatbázis-tulajdonos rendelkezik ALTER ANY USER engedéllyel. Az SQL Server rendszergazdáinak rendszeresen naplózniuk kell a felhasználókat egy tárolt adatbázisban.

Más adatbázisok elérése a vendégfiók használatával

Az adatbázis-tulajdonosok és a ALTER ANY USER engedéllyel rendelkező adatbázis-felhasználók tartalmazott adatbázis-felhasználókat hozhatnak létre. Miután egy SQL Server-példányon egy tárolt adatbázishoz csatlakozott, a tárolt adatbázis-felhasználó hozzáférhet az adatbázismotor más adatbázisaihoz, ha a többi adatbázis engedélyezte a vendég-fiókot.

Duplikált felhasználó létrehozása egy másik adatbázisban

Egyes alkalmazások megkövetelik, hogy egy felhasználó több adatbázishoz is hozzáférhessen. Ezt úgy teheti meg, hogy minden adatbázisban azonos, tartalmazott adatbázis-felhasználókat hoz létre. Használja a SID-beállítást a második felhasználó jelszóval való létrehozásakor. Az alábbi példa két azonos felhasználót hoz létre két adatbázisban.

USE DB1;  
GO  
CREATE USER Carlo WITH PASSWORD = '<strong password>';   
-- Return the SID of the user  
SELECT SID FROM sys.database_principals WHERE name = 'Carlo';  
  
-- Change to the second database  
USE DB2;  
GO  
CREATE USER Carlo WITH PASSWORD = '<same password>', SID = <SID from DB1>;  
GO  

Adatbázisközi lekérdezés végrehajtásához be kell állítania a TRUSTWORTHY beállítást a hívó adatbázisban. Ha például a fent definiált felhasználó (Carlo) DB1-ben van, a SELECT * FROM db2.dbo.Table1; végrehajtásához a MEGBÍZHATÓ beállításnak be kell kapcsolva lennie a DB1 adatbázisban. Hajtsa végre a következő kódot a TRUSTWORTHY beállítás bekapcsolásához.

ALTER DATABASE DB1 SET TRUSTWORTHY ON;  

Bejelentkezést duplikáló felhasználó létrehozása

Ha egy jelszóval rendelkező, tartalmazott adatbázis felhasználót hoz létre ugyanazzal a névvel, mint egy SQL Server felhasználói fiók, és az SQL Server felhasználói fiók a tartalmazott adatbázist jelöli meg kezdeti katalógusként, akkor az SQL Server felhasználói fiók nem fog tudni csatlakozni. A kapcsolatot a SQL Server bejelentkezésen alapuló felhasználó helyett a tartalmazott adatbázisban jelszóval rendelkező adatbázis-felhasználóként értékelik ki. Ez szándékos vagy véletlen szolgáltatásmegtagadást okozhat az SQL Server-bejelentkezéshez.

  • Ajánlott eljárásként a sysadmin rögzített kiszolgálói szerepkör tagjainak érdemes megfontolni a csatlakozást a kezdeti katalógusbeállítás használata nélkül. Ez összekapcsolja a bejelentkezést a fő adatbázissal, és elkerüli, hogy az adatbázis tulajdonosa megkíséreljen visszaélni a bejelentkezési kísérlettel. Ezután a rendszergazda a USE<adatbázis-> utasítással válthat a tárolt adatbázisra. Az alapértelmezett adatbázist a bejelentkezéshez beállíthatja a tartalmazott adatbázisra. Ez a művelet befejezi a bejelentkezést a masteradatbázisba, majd átadja a bejelentkezést a tartalmazott adatbázisnak.

  • Ajánlott eljárásként ne hozzon létre olyan tárolt adatbázis-felhasználókat, akiknek a jelszavai megegyeznek az SQL Server-bejelentkezésekkel.

  • Ha a duplikált bejelentkezés létezik, csatlakozzon a adatbázishoz kezdeti katalógus megadása nélkül, majd futtassa a USE parancsot a tárolt adatbázisra való váltáshoz.

  • Ha tartalmazott adatbázisok vannak jelen, a nem tartalmazott adatbázisok felhasználóinak a kezdeti katalógus használata nélkül vagy a nem tartalmazott adatbázisok adatbázisnevének kezdeti katalógusként való megadásával kell csatlakozniuk az adatbázismotorhoz. Így elkerülhető a csatlakozás a tartalmazott adatbázishoz, amely kevésbé áll közvetlen irányítás alatt az adatbázismotor rendszergazdái által.

Hozzáférés növelése egy adatbázis elszigetelési állapotának módosításával

Azok a bejelentkezések, amelyeknek ALTER ANY DATABASE engedélyük van, például a dbcreator fix kiszolgálói szerepkör tagjai, valamint a nem tartományi adatbázisokban CONTROL DATABASE engedéllyel rendelkező felhasználók, mint például a db_owner fix adatbázis-szerepkör tagjai, módosíthatják az adatbázis tartományi beállítását. Ha egy adatbázis elszigetelési beállítása NONERÉSZLEGES vagy FULLértékre változik, akkor a felhasználói hozzáférés a jelszóval rendelkező, tartalmazott adatbázis-felhasználók létrehozásával biztosítható. Ez hozzáférést biztosíthat az SQL Server rendszergazdáinak tudta vagy beleegyezése nélkül. Annak érdekében, hogy egyetlen adatbázis se legyen benne, állítsa az Adatbázis motortartalmazott adatbázis-hitelesítés beállítását 0-ra. Ha meg szeretné akadályozni, hogy a tárolt adatbázis felhasználói jelszavakkal csatlakozjanak a kijelölt tárolt adatbázisokhoz, a bejelentkezési eseményindítók használatával megszakíthatja a jelszóval rendelkező, tartalmazott adatbázis-felhasználók bejelentkezési kísérleteit.

Tartalmazott adatbázis csatolása

Egy tartalmazott adatbázis csatolásával a rendszergazda hozzáférést adhat a nemkívánatos felhasználóknak az adatbázismotor példányához. A kockázattal foglalkozó rendszergazdák RESTRICTED_USER módban online állapotba helyezhetik az adatbázist, ami megakadályozza a jelszavakkal rendelkező, tárolt adatbázis-felhasználók hitelesítését. Csak a bejelentkezésekkel felhatalmazott felhasználók férhetnek hozzá az adatbázismotorhoz.

A felhasználók a létrehozásukkor hatályos jelszókövetelmények alapján jönnek létre, és a jelszavak nem lesznek újra ellenőrizve az adatbázis csatolásakor. Ha olyan tartalmazott adatbázist csatol, amely gyenge jelszavakat engedélyezett egy szigorúbb jelszószabályzattal rendelkező rendszerhez, a rendszergazda engedélyezheti azokat a jelszavakat, amelyek nem felelnek meg az aktuális jelszóházirendnek a csatolási adatbázismotoron. A rendszergazdák elkerülhetik a gyenge jelszavak megőrzését azáltal, hogy minden jelszót alaphelyzetbe kell állítani a csatolt adatbázishoz.

Jelszószabályzatok

Az adatbázisok jelszavainak erős jelszavaknak kell lenniük, de nem védhetők robusztus jelszószabályzatokkal. Amikor csak lehetséges, használja a Windows-hitelesítést a Windowsban elérhető szélesebb körű jelszószabályzatok kihasználásához.

Kerberos-hitelesítés

A jelszóval rendelkező tárolt adatbázis-felhasználók nem használhatják a Kerberos-hitelesítést. Ha lehetséges, használja a Windows-hitelesítést a Windows olyan funkcióinak kihasználásához, mint a Kerberos.

Offline szótártámadás

A jelszóval rendelkező, tárolt adatbázis-felhasználók jelszavas kivonatai a tárolt adatbázisban vannak tárolva. Az adatbázisfájlokhoz hozzáféréssel rendelkező felhasználók szótári támadást hajthatnak végre a tárolt adatbázis felhasználói ellen jelszóval egy nem hitelesített rendszeren. A fenyegetés mérséklése érdekében korlátozza az adatbázisfájlokhoz való hozzáférést, vagy csak a Windows-hitelesítés használatával engedélyezze a kapcsolatot a tárolt adatbázisokhoz.

Tartalmazott adatbázis szökése

Ha egy adatbázis részben van tárolva, az SQL Server rendszergazdáinak rendszeresen ellenőriznie kell a felhasználók és modulok képességeit a tárolt adatbázisokban.

Szolgáltatásmegtagadás az AUTO_CLOSE miatt

Ne konfigurálja a tárolt adatbázisokat az automatikus bezáráshoz. Ha bezárul, az adatbázis megnyitása a felhasználó hitelesítéséhez további erőforrásokat használ fel, és hozzájárulhat a szolgáltatásmegtagadási támadáshoz.

Lásd még:

Tartalmazott adatbázisok
Részlegesen tartalmazott adatbázisra történő áttelepítés