Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Kezelt Példány
A TRUSTWORTHY adatbázistulajdonság jelzi, hogy az SQL Server példánya megbízik-e az adatbázisban és a benne lévő tartalomban. Ez a beállítás alapértelmezés szerint ki van kapcsolva, de a ALTER DATABASE utasítással be van kapcsolva. Például: ALTER DATABASE AdventureWorks2022 SET TRUSTWORTHY ON;.
Jegyzet
A beállítás beállításához CONTROL SERVER engedéllyel kell rendelkeznie, vagy a sysadmin rögzített kiszolgálói szerepkör tagjának kell lennie.
Javasoljuk, hogy hagyja kikapcsolva az TRUSTWORTHY adatbázistulajdonságot, hogy elhárítsa azokat a fenyegetéseket, amelyek az alábbi objektumok egyikét tartalmazó adatbázis csatolása miatt előfordulhatnak:
Rosszindulatú szerelvények EXTERNAL_ACCESS (külső hozzáférés) vagy UNSAFE (nem biztonságos) engedélybeállítással. További információért lásd: CLR Integration Security.
Rosszindulatú modulok, amelyek magas jogosultsági szintű felhasználókként való végrehajtásra vannak definiálva. További információ: „EXECUTE AS” záradék (Transact-SQL).
Mindkét helyzet bizonyos szintű jogosultságot igényel, és megfelelő mechanizmusok védik őket, amikor olyan adatbázis kontextusában használják őket, amely már az SQL Server egy példányához van csatolva. Ha azonban az adatbázis offline állapotban van, ha rendelkezik hozzáféréssel az adatbázisfájlhoz, csatolhatja azt egy tetszőleges SQL Server-példányhoz, és rosszindulatú tartalmat adhat hozzá az adatbázishoz. Ha az adatbázisok le vannak választva és csatolva vannak az SQL Serverben, bizonyos engedélyek vannak beállítva az adatokon és naplófájlokon, amelyek korlátozzák az adatbázisfájlokhoz való hozzáférést.
Mivel egy SQL Server-példányhoz csatolt adatbázis nem megbízható azonnal, az adatbázis csak akkor férhet hozzá az adatbázis hatókörén túli erőforrásokhoz, ha az adatbázis kifejezetten megbízhatóként van megjelölve. Ezért ha olyan adatbázisról készít biztonsági másolatot vagy leválaszt egy adatbázist, amely be van kapcsolva a TRUSTWORTHY lehetőséggel, és ugyanahhoz vagy egy másik SQL Server-példányhoz csatolja vagy állítja vissza az adatbázist, a TRUSTWORTHY tulajdonság ki van kapcsolva a csatolás vagy a visszaállítás befejezésekor. Emellett az adatbázison kívüli erőforrások elérésére tervezett moduloknak, valamint a EXTERNAL_ACCESS és a NEM BIZTONSÁGOS engedélyekkel rendelkező szerelvényeknek további követelményekkel kell rendelkezniük a sikeres futtatáshoz.
Jegyzet
Alapértelmezés szerint a TRUSTWORTHY beállítás be van kapcsolva az msdb adatbázishoz. Ha ezt a beállítást az alapértelmezett értékről módosítja, az a msdb adatbázist használó SQL Server-összetevők váratlan viselkedését eredményezheti.
Ha a TRUSTWORTHY beállítás BE értékre van állítva, és ha az adatbázis tulajdonosa olyan csoport tagja, amely rendszergazdai hitelesítő adatokkal (például a sysadmin csoport) rendelkezik, az adatbázis tulajdonosa létrehozhat és futtathat olyan nem biztonságos szerelvényeket, amelyek veszélyeztethetik az SQL Server példányát.
További információ
Internetszolgáltatói (ISP-) környezetben (például egy webszolgáltatói szolgáltatásban) minden ügyfél kezelheti saját adatbázisát, és nem férhet hozzá a rendszeradatbázisokhoz és más felhasználói adatbázisokhoz. Két versengő vállalat adatbázisait például ugyanaz az internetszolgáltató üzemeltetheti, és az SQL Server ugyanazon példányában léteznek. Veszélyes kódot lehet hozzáadni egy felhasználói adatbázishoz, ha az adatbázis az eredeti példányához van csatolva, és a kód engedélyezve lesz az internetszolgáltató példányán az adatbázis üzembe helyezésekor. Ez a helyzet kritikus fontosságúvá teszi az adatbázisok közötti hozzáférés szabályozását.
Ha ugyanaz az általános entitás birtokolja és kezeli az egyes adatbázisokat, akkor sem ajánlott megbízhatósági kapcsolatot létesíteni egy adatbázissal, kivéve, ha alkalmazásspecifikus funkcióra, például adatbázisközi szolgáltatásközvetítői kommunikációra van szükség. Az adatbázisok közötti megbízhatósági kapcsolat az adatbázis-tulajdonjogok közötti láncolás engedélyezésével vagy egy adatbázisnak a példány által megbízhatóként való megjelölésével hozható létre a TRUSTWORTHY tulajdonság használatával. A sys.databases katalógusnézet is_trustworthy_on oszlopa jelzi, hogy egy adatbázis rendelkezik-e TRUSTWORTHY tulajdonságkészlettel.
Az adatbázis tulajdonjogával és megbízhatóságával kapcsolatos ajánlott eljárások a következők:
- Legyenek különálló tulajdonosai az adatbázisoknak. Nem minden adatbázisnak kell a rendszergazda tulajdonában lennie.
- Korlátozza az egyes adatbázisok tulajdonosainak számát.
- Bizalmat szelektíven adjon.
- Hagyja kikapcsolva a több adatbázis tulajdonjogi láncolásának beállítását, kivéve, ha egyetlen egységben több adatbázis van üzembe helyezve.
- A használatot a
TRUSTWORTHYtulajdonság használata helyett szelektív megbízhatóságba migrálhatja.
Az alábbi kódmintával lekérjük azon adatbázisok listáját, amelyek TRUSTWORTHY tulajdonsága ON értékre van állítva, és amelyek adatbázis-tulajdonosa a sysadmin kiszolgálói szerepkörhöz tartozik.
SELECT SUSER_SNAME(owner_sid) AS DBOWNER,
d.name AS DATABASENAME
FROM sys.server_principals r
INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
INNER JOIN sys.server_principals p ON p.principal_id = m.member_principal_id
INNER JOIN sys.databases d ON suser_sname(d.owner_sid) = p.name
WHERE is_trustworthy_on = 1
AND d.name NOT IN ('msdb')
AND r.type = 'R'
AND r.name = N'sysadmin';
GO
A msdb adatbázis TRUSTWORTHY tulajdonságának meghatározásához futtassa a következő lekérdezést:
SELECT name,
trustworthy_setting = CASE is_trustworthy_on
WHEN 1 THEN 'Trustworthy setting is ON for msdb'
ELSE 'Trustworthy setting is OFF for msdb'
END
FROM sys.databases
WHERE database_id = 4;
GO
Ha ez a lekérdezés azt mutatja, hogy a TRUSTWORTHY tulajdonság KI értékre van állítva, a következő lekérdezést futtatva bekapcsolhatja a TRUSTWORTHY tulajdonságot.
ALTER DATABASE msdb SET TRUSTWORTHY ON;
GO
Figyelmeztetés
Többféle módja van annak, hogy a db_owner szerepkörrel rendelkező felhasználókat sysadmin szerepkörűvé emelje, ha a TRUSTWORTHY BE értékre van állítva. Óvatosan használja a TRUSTWORTHY tulajdonságot. Az alábbi SQL-kóddal lekérjük az adatbázis felhasználóinak listáját az db_owner szerepkörrel rendelkező adatbázisokban.
SELECT roles.principal_id AS RolePrincipalID
, roles.name AS RolePrincipalName
, database_role_members.member_principal_id AS MemberPrincipalID
, members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
JOIN sys.database_principals AS roles
ON database_role_members.role_principal_id = roles.principal_id
JOIN sys.database_principals AS members
ON database_role_members.member_principal_id = members.principal_id where roles.name='db_owner' and members.name <>'dbo'
GO