TRUSTWORTHY-Datenbankeigenschaft

Gilt für: SQL Server (alle unterstützten Versionen)

Mit der Datenbankeigenschaft „TRUSTWORTHY“ wird angegeben, ob die SQL Server-Instanz die Datenbank und ihre Inhalte als vertrauenswürdig einstuft. Diese Einstellung ist standardmäßig DEAKTIVIERT, kann jedoch mithilfe der ALTER DATABASE Anweisung auf "EIN" festgelegt werden. Beispiel: ALTER DATABASE AdventureWorks2012 SET TRUSTWORTHY ON;.

Hinweis

Um diese Option festlegen zu können, müssen Sie Mitglied der festen Serverrolle sysadmin sein.

Es wird empfohlen, die VERTRAUENSWÜRDIGe Datenbankeigenschaft auf OFF festzulegen, um bestimmte Bedrohungen zu mindern, die aufgrund der Anfügung einer Datenbank mit einem der folgenden Objekte vorhanden sein können:

  • Bösartige Assemblys mit einer EXTERNAL_ACCESS- oder UNSAFE-Berechtigungseinstellung. Weitere Informationen finden Sie unter CLR Integration Security.

  • Bösartige Module, die für die Ausführung als Benutzer mit hohen Privilegien definiert wurden. Weitere Informationen finden Sie unter EXECUTE AS-Klausel (Transact-SQL).

Beide Situationen erfordern ein bestimmtes Maß an Berechtigungen und sind durch geeignete Mechanismen geschützt, wenn sie im Kontext einer Datenbank verwendet werden, die bereits an eine Instanz von SQL Server angefügt ist. Wenn die Datenbank jedoch offline genommen wird, können Sie sie potenziell an eine Instanz von SQL Server Ihrer Wahl anfügen und der Datenbank schädliche Inhalte hinzufügen. Wenn Datenbanken in SQL Server getrennt und angefügt werden, werden bestimmte Berechtigungen für die Daten- und Protokolldateien festgelegt, die den Zugriff auf die Datenbankdateien einschränken.

Da eine Datenbank, die an eine Instanz von SQL Server angefügt ist, nicht sofort vertrauenswürdig sein kann, darf die Datenbank nicht über den Bereich der Datenbank hinaus auf Ressourcen zugreifen, bis die Datenbank explizit als vertrauenswürdig gekennzeichnet ist. Wenn Sie daher eine Datenbank sichern oder trennen, die die VERTRAUENSWÜRDIGe Option AKTIVIERT hat, und Sie die Datenbank an die gleiche oder eine andere SQL Server Instanz wiederherstellen, wird die VERTRAUENSWÜRDIGe Eigenschaft beim Abschluss der Anfügung oder Wiederherstellung auf "OFF" festgelegt. Darüber hinaus verfügen Module, die für den Zugriff auf Ressourcen außerhalb der Datenbank konzipiert sind, und Assemblys mit der Einstellung EXTERNAL_ACCESS und UNSAFE-Berechtigungseinstellung, über zusätzliche Anforderungen zum erfolgreichen Ausführen verfügen.

Hinweis

Standardmäßig ist die VERTRAUENSWÜRDIGe Einstellung für die msdb Datenbank auf "EIN" festgelegt. Wenn Sie diese Einstellung aus dem Standardwert ändern, kann dies zu unerwartetem Verhalten führen, indem SQL Server Komponenten, die die msdb Datenbank verwenden, verwendet werden.

Wenn die VERTRAUENSWÜRDIGe Einstellung auf "EIN" festgelegt ist und der Besitzer der Datenbank Mitglied einer Gruppe ist, die über administrative Anmeldeinformationen verfügt, z. B. die Sysadmin-Gruppe, kann der Datenbankbesitzer in der Lage sein, unsichere Assemblys zu erstellen und auszuführen, die die Instanz der SQL Server kompromittieren können.

Weitere Informationen

In einer Internetdienstanbieter(ISP)-Umgebung (z. B. in einem Webhostingdienst) darf jeder Kunde seine eigene Datenbank verwalten und ist auf den Zugriff auf Systemdatenbanken und andere Benutzerdatenbanken beschränkt. So könnten beispielsweise die Datenbanken zweier konkurrierender Unternehmen von demselben ISP gehostet werden und in derselben Instanz von SQL Server vorhanden sein. Gefährlicher Code könnte einer Benutzerdatenbank hinzugefügt werden, wenn die Datenbank an die ursprüngliche Instanz angefügt wird, und der Code wird auf der ISP-Instanz aktiviert, wenn die Datenbank bereitgestellt wird. Diese Situation macht die Steuerung des datenbankübergreifenden Zugriffs entscheidend.

Wenn dieselbe allgemeine Entität jede Datenbank besitzt und verwaltet, empfiehlt es sich weiterhin, eine Vertrauensstellung mit einer Datenbank einzurichten, es sei denn, ein anwendungsspezifisches Feature, z. B. eine datenbankübergreifende ServiceBroker-Kommunikation, ist erforderlich. Eine Vertrauensstellung zwischen Datenbanken kann hergestellt werden, indem eine datenbankübergreifende Besitzkette aktiviert oder eine Datenbank mithilfe der VERTRAUENSWÜRDIGen Eigenschaft als vertrauenswürdig gekennzeichnet wird. Die is_trustworthy_on Spalte der sys.databases Katalogansicht gibt an, ob eine Datenbank ihren VERTRAUENSWÜRDIGen Eigenschaftssatz hat.

Die bewährten Methoden für den Datenbankbesitz und die Vertrauensstellung umfassen Folgendes:

  • Haben Sie unterschiedliche Besitzer für Datenbanken. Nicht alle Datenbanken sollten dem Systemadministrator gehören.
  • Beschränken Sie die Anzahl der Besitzer für jede Datenbank.
  • Vertrauen Sie selektiv.
  • Lassen Sie die Einstellung für die cross db-Besitzerkette auf OFF festgelegt, es sei denn, mehrere Datenbanken werden in einer einzelnen Einheit bereitgestellt.
  • Migrieren Sie die Verwendung zu selektiver Vertrauensstellung, anstatt die VERTRAUENSWÜRDIGe Eigenschaft zu verwenden.

Das folgende Codebeispiel kann verwendet werden, um eine Liste von Datenbanken abzurufen, die die VERTRAUENSWÜRDIGe Eigenschaft auf ON festgelegt haben und deren Datenbankbesitzer zur Sysadmin-Serverrolle gehört.

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' 

Sie können die folgende Abfrage ausführen, um die VERTRAUENSWÜRDIGe Eigenschaft der msdb Datenbank zu ermitteln:

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

Wenn diese Abfrage zeigt, dass die VERTRAUENSWÜRDIGe Eigenschaft auf OFF festgelegt ist, können Sie die folgende Abfrage ausführen, um die VERTRAUENSWÜRDIGe Eigenschaft auf ON festzulegen.

ALTER DATABASE msdb SET TRUSTWORTHY ON;
GO 

Nächste Schritte