Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server Linux rendszeren
Ha Ön linuxos felhasználó, aki még nem ismeri az SQL Servert, az alábbi feladatok végigvezetik a biztonsági feladatok némelyikén. Ezek nem egyediek vagy a Linuxra jellemzőek, de segít ötleteket adni a további vizsgálatra szolgáló területekről. Minden példában egy hivatkozás található az adott terület részletes dokumentációjában.
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
Bejelentkezés és adatbázis-felhasználó létrehozása
Adjon hozzáférést másoknak az SQL Serverhez úgy, hogy létrehoz egy bejelentkezést az master adatbázisban a CREATE LOGIN utasítással. Például:
CREATE LOGIN Larry
WITH PASSWORD = '<password>';
Caution
A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.
A bejelentkezések csatlakozhatnak az SQL Serverhez, és hozzáféréssel (korlátozott engedélyekkel) rendelkeznek az master adatbázishoz. A felhasználói adatbázishoz való csatlakozáshoz a bejelentkezéshez az adatbázis szintjén egy megfelelő identitásra van szükség, amelyet adatbázis-felhasználónak hívunk. A felhasználók az egyes adatbázisokra vonatkoznak, és külön létre kell hozni őket az egyes adatbázisokban a hozzáférés biztosításához. Az alábbi példa beviszi az AdventureWorks2025 adatbázisba, majd a CREATE USER utasítással létrehoz egy Larry nevű felhasználót, aki a névvel ellátott bejelentkezéshez van társítva Larry. Bár a bejelentkezés és a felhasználó kapcsolatban állnak (egymáshoz vannak rendelve), ezek különböző objektumok. A bejelentkezés egy szerver szintű főszereplő. A felhasználó adatbázisszintű főszereplő.
USE AdventureWorks2022;
GO
CREATE USER Larry;
GO
- Az SQL Server-rendszergazdai fiókok bármilyen adatbázishoz csatlakozhatnak, és bármilyen adatbázisban több bejelentkezést és felhasználót hozhatnak létre.
- Amikor valaki létrehoz egy adatbázist, az adatbázis tulajdonosa lesz, amely csatlakozhat az adatbázishoz. Az adatbázis-tulajdonosok több felhasználót is létrehozhatnak.
Később engedélyezheti a többi bejelentkezést, hogy további bejelentkezéseket hozzon létre az ALTER ANY LOGIN engedély megadásával. Az adatbázison belül engedélyezheti más felhasználók számára, hogy további felhasználókat hozzanak létre az ALTER ANY USER engedély megadásával. Például:
GRANT ALTER ANY LOGIN TO Larry;
GO
USE AdventureWorks2022;
GO
GRANT ALTER ANY USER TO Jerry;
GO
Most a bejelentkezési Larry több bejelentkezést hozhat létre, és a felhasználó Jerry több felhasználót is létrehozhat.
Hozzáférés biztosítása a legkisebb jogosultságokkal
A felhasználói adatbázishoz elsőként a rendszergazdai és az adatbázis-tulajdonosi fiókok csatlakozhatnak. Ezek a felhasználók azonban rendelkeznek az adatbázisban elérhető összes engedéllyel. Ez több engedély, mint a legtöbb felhasználónak rendelkeznie kell.
Első lépésként a beépített rögzített adatbázis-szerepkörök használatával hozzárendelhet néhány általános engedélykategóriát. A db_datareader rögzített adatbázis-szerepkör például képes beolvasni az adatbázis összes táblázatát, de nem hajthat végre módosításokat. Adjon tagságot egy rögzített adatbázis-szerepkörben az ALTER ROLE utasítás használatával. Az alábbi példa hozzáadja a felhasználót Jerry a db_datareader rögzített adatbázis-szerepkörhöz.
USE AdventureWorks2022;
GO
ALTER ROLE db_datareader ADD MEMBER Jerry;
A rögzített adatbázis-szerepkörök listáját az Adatbázisszintű szerepkörök című témakörben találja.
Később, amikor készen áll arra, hogy pontosabb hozzáférést konfiguráljon az adatokhoz (erősen ajánlott), hozzon létre saját, felhasználó által definiált adatbázis-szerepköröket a CREATE ROLE utasítással. Ezután rendeljen hozzá konkrét részletes engedélyeket az egyéni szerepkörökhöz.
Az alábbi utasítások például létrehoznak egy adatbázis-szerepkört, Salesamely lehetővé teszi a Sales csoport számára a sorok megtekintését, frissítését és törlését a Orders táblából, majd hozzáadja a felhasználót Jerry a Sales szerepkörhöz.
CREATE ROLE Sales;
GRANT SELECT ON OBJECT::Sales TO Orders;
GRANT UPDATE ON OBJECT::Sales TO Orders;
GRANT DELETE ON OBJECT::Sales TO Orders;
ALTER ROLE Sales ADD MEMBER Jerry;
Az engedélyrendszerrel kapcsolatos további információkért tekintse meg az adatbázismotor engedélyeinek első lépéseit.
Sorszintű biztonság konfigurálása
A sorszintű biztonság lehetővé teszi, hogy a lekérdezést végrehajtó felhasználó alapján korlátozza az adatbázis soraihoz való hozzáférést. Ez a funkció olyan helyzetekben hasznos, mint például annak biztosítása, hogy az ügyfelek csak a saját adataikhoz férhessenek hozzá, vagy hogy a dolgozók csak a részlegükhöz kapcsolódó adatokhoz férhessenek hozzá.
Az alábbi lépések végigvezetik a táblázathoz különböző sorszintű hozzáféréssel rendelkező két felhasználó beállításán Sales.SalesOrderHeader .
Hozzon létre két felhasználói fiókot a sorszintű biztonság teszteléséhez:
USE AdventureWorks2022;
GO
CREATE USER Manager WITHOUT LOGIN;
CREATE USER SalesPerson280 WITHOUT LOGIN;
Olvasási hozzáférés biztosítása a Sales.SalesOrderHeader táblán mindkét felhasználó számára:
GRANT SELECT ON Sales.SalesOrderHeader TO Manager;
GRANT SELECT ON Sales.SalesOrderHeader TO SalesPerson280;
Hozzon létre egy új sémát és egy beágyazott táblaértékű függvényt. A függvény 1 értéket ad vissza, ha az SalesPersonID oszlop egyik sora megegyezik egy SalesPerson bejelentkezési azonosítóval, vagy ha a lekérdezést végrehajtó felhasználó a Manager-felhasználó.
CREATE SCHEMA Security;
GO
CREATE FUNCTION Security.fn_securitypredicate
(@SalesPersonID INT)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
SELECT 1 AS fn_securitypredicate_result
WHERE ('SalesPerson' + CAST (@SalesPersonId AS VARCHAR (16)) = USER_NAME())
OR (USER_NAME() = 'Manager')
Hozzon létre egy biztonsági szabályzatot, amely szűrőként és blokk predikátumként is hozzáadja a függvényt a táblához:
CREATE SECURITY POLICY SalesFilter
ADD FILTER PREDICATE Security.fn_securitypredicate(SalesPersonID) ON Sales.SalesOrderHeader,
ADD BLOCK PREDICATE Security.fn_securitypredicate(SalesPersonID) ON Sales.SalesOrderHeader
WITH (STATE = ON);
Hajtsa végre a következő lépéseket, hogy felhasználóként lekérdezze a SalesOrderHeader táblát. Ellenőrizze, hogy SalesPerson280 csak a 95 sort látja-e a saját értékesítéséből, és hogy az Manager összes sor látható-e a táblában.
EXECUTE AS USER = 'SalesPerson280';
SELECT *
FROM Sales.SalesOrderHeader;
REVERT;
EXECUTE AS USER = 'Manager';
SELECT *
FROM Sales.SalesOrderHeader;
REVERT;
Módosítsa a biztonsági szabályzatot a szabályzat letiltásához. Most már mindkét felhasználó hozzáférhet az összes sorhoz.
ALTER SECURITY POLICY SalesFilter
WITH (STATE = OFF);
Dinamikus adatmaszkolás engedélyezése
A dinamikus adatmaszkolás lehetővé teszi, hogy bizonyos oszlopok teljes vagy részleges maszkolásával korlátozza a bizalmas adatoknak az alkalmazás felhasználóinak való kitettségét.
ALTER TABLE Utasítással egy maszkoló függvényt adhat hozzá a EmailAddress oszlopához a Person.EmailAddress táblában:
USE AdventureWorks2022;
GO
ALTER TABLE Person.EmailAddress
ALTER COLUMN EmailAddress
ADD MASKED WITH (FUNCTION = 'email()');
Hozzon létre egy új felhasználót TestUser a táblán SELECT engedéllyel, majd hajtsa végre a lekérdezést TestUser-ként a maszkolt adatok megtekintéséhez:
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT
ON Person.EmailAddress TO TestUser;
EXECUTE AS USER = 'TestUser';
SELECT EmailAddressID,
EmailAddress
FROM Person.EmailAddress;
REVERT;
Ellenőrizze, hogy a maszkoló függvény módosítja-e az e-mail-címet az első rekordban:
| EmailAddressID | E-mail cím |
|---|---|
| 1 | ken0@adventure-works.com |
ba
| EmailAddressID | E-mail cím |
|---|---|
| 1 | kXXX@XXXX.com |
Transzparens adattitkosítás engedélyezése
Az adatbázis egyik fenyegetése, hogy valaki ellopja az adatbázisfájlokat a merevlemezről. Ez történhet olyan behatolással, amely emelt szintű hozzáférést kap a rendszerhez egy problémás alkalmazott műveletein keresztül, vagy a fájlokat tartalmazó számítógép (például laptop) ellopásával.
A transzparens adattitkosítás (TDE) a merevlemezen tárolt adatfájlokat titkosítja. Az master SQL Server adatbázismotor adatbázisa rendelkezik a titkosítási kulccsal, hogy az adatbázismotor manipulálhassa az adatokat. Az adatbázisfájlok nem olvashatók a kulcs elérése nélkül. A magas szintű rendszergazdák kezelhetik, biztonsági másolatot készíthetnek és újra létrehozhatják a kulcsot, így az adatbázis áthelyezhető, de csak a kijelölt személyek. A TDE konfigurálásakor az tempdb adatbázis is automatikusan titkosítva lesz.
Mivel az adatbázismotor képes olvasni az adatokat, a TDE nem véd a számítógép rendszergazdáinak jogosulatlan hozzáférése ellen, akik közvetlenül olvashatják a memóriát, vagy rendszergazdai fiókon keresztül férhetnek hozzá az SQL Serverhez.
TDE konfigurálása
- Létrehoz egy mesterkulcsot
- Főkulcs által védett tanúsítvány létrehozása vagy beszerzése
- Adatbázistitkosítási kulcs létrehozása és védelme a tanúsítványsal
- Az adatbázis beállítása titkosítás használatára
A TDE konfigurálásához CONTROL engedély szükséges a master adatbázisra és CONTROL engedély a felhasználói adatbázisra. Általában egy rendszergazda konfigurálja a TDE-t.
Az alábbi példa bemutatja a AdventureWorks2025 adatbázis titkosítását és dekódolását egy a MyServerCert kiszolgálón telepített tanúsítvány használatával.
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
GO
CREATE CERTIFICATE MyServerCert
WITH SUBJECT = 'My Database Encryption Key Certificate';
GO
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;
A TDE eltávolításához futtassa a következő parancsot:
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION OFF;
A titkosítási és visszafejtési műveleteket az SQL Server háttérszálakra ütemezi. Ezeknek a műveleteknek az állapotát a jelen cikkben később megjelenő lista katalógusnézeteivel és dinamikus felügyeleti nézeteivel tekintheti meg.
Figyelmeztetés
A TDE-kompatibilis adatbázisok biztonsági mentési fájljait az adatbázis titkosítási kulcsával is titkosítja a rendszer. Ennek eredményeképpen ezeknek a biztonsági másolatoknak a visszaállításakor elérhetővé kell tenni az adatbázis titkosítási kulcsát védő tanúsítványt. Ez azt jelenti, hogy az adatbázis biztonsági mentése mellett gondoskodjon arról, hogy a kiszolgálótanúsítványok biztonsági másolatait is megőrizze az adatvesztés elkerülése érdekében. Az adatvesztés akkor következik be, ha a tanúsítvány már nem érhető el. További információ: SQL Server-tanúsítványok és aszimmetrikus kulcsok.
A TDE-ről további információt a Transzparens adattitkosítás (TDE) című témakörben talál.
Biztonsági mentés titkosításának konfigurálása
Az SQL Server képes titkosítani az adatokat biztonsági mentés létrehozásakor. A biztonsági mentés létrehozásakor a titkosítási algoritmus és a titkosító (tanúsítvány vagy aszimmetrikus kulcs) megadásával létrehozhat egy titkosított biztonsági mentési fájlt.
Figyelmeztetés
Mindig készítsen biztonsági másolatot a tanúsítványról vagy az aszimmetrikus kulcsról, lehetőleg a titkosításhoz használt biztonsági mentési fájltól eltérő helyre. A tanúsítvány vagy az aszimmetrikus kulcs nélkül nem állíthatja vissza a biztonsági másolatot, így a biztonsági mentési fájl használhatatlanná válik.
Az alábbi példa létrehoz egy tanúsítványt, majd létrehoz egy, a tanúsítvány által védett biztonsági másolatot.
USE master;
GO
CREATE CERTIFICATE BackupEncryptCert
WITH SUBJECT = 'Database backups';
GO
BACKUP DATABASE [AdventureWorks2022]
TO DISK = N'/var/opt/mssql/backups/AdventureWorks2022.bak'
WITH COMPRESSION,
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupEncryptCert),
STATS = 10;
GO
További információ: Biztonsági másolat titkosítása.