您可以使用 TRUST 資料庫設定來指出 Microsoft SQL Server 實例是否信任資料庫和資料庫中的內容。 根據預設,此設定會設定為 OFF。 不過,您可以使用 ALTER DATABASE 語句將它設定為 ON。 建議您將此設定設為 OFF,以降低資料庫附加至伺服器時,以及下列條件為 True 時可能呈現的某些威脅:

  • 資料庫包含惡意程式集,這些程式集具有 EXTERNAL_ACCESS或 UNSAFE 許可權設定。 詳細資訊,請流覽下列 Microsoft Developer Network (MSDN

    ) :CLR 整合安全性
     

  • 資料庫包含惡意模組,這些模組定義為使用者,其為具有系統管理許可權之群組的成員。 詳細資訊,請流覽下列 MSDN 網站:使用 EXECUTE AS 延伸

    資料庫類比

附註: 根據預設,MSDB 資料庫的可信任設定設為 ON。 從預設值變更此設定可能會導致使用 MSDB 資料庫的 SQL Server 元件發生非預期的行為。

如果信任設定設為 ON,而且資料庫擁有者是具有系統管理認證 #B0 例如 sysadmin 群組 #B0 例如 sysadmin #A1 群組的群組成員,則資料庫擁有者可能會建立及執行可能會破壞 SQL Server 實例的不安全程式集。

其他相關資訊

在網際網路服務提供者 (ISP) 環境中 (例如,在 Web 主機服務) 中,每位客戶都允許管理自己的資料庫,且禁止存取系統資料庫和其他使用者資料庫。 例如,兩家相互競爭公司的資料庫可能由同一個 ISP 託管,並存在於同一個 SQL Server 實例中。 當資料庫附加至其原始實例時,可能會將危險代碼新加到使用者資料庫,而資料庫部署時,ISP 實例上就會啟用該代碼。 這種情況使得控制跨資料庫存取變得至關重要。

如果相同的一般實體擁有並管理每一個資料庫,除非需要應用程式特定功能 ,例如跨資料庫 Service Broker 通訊,否則與資料庫建立「信任關係」仍不是個好作法。 您可以啟用跨資料庫擁有鏈,或使用 TRUST 屬性將資料庫標示為實例信任,以建立資料庫之間的信任關係。 Theis_trustworthy_on sys.database 目錄檢視的第一欄,指出資料庫是否設定了可信任的位。

資料庫擁有權和信任的最佳作法包括:

• 為資料庫擁有不同的擁有者。 並非所有資料庫都應該由系統管理員擁有。
• 限制每個資料庫的擁有者數目。
• 選擇性地授與信任。
• 除非在單一單元部署多個資料庫,否則將跨資料庫擁有權鏈式設定設為 OFF。
• 將使用量遷移到選擇性信任,而不是使用 TRUST 屬性。

下列程式碼範例可用來取得具有可信任位 ON 且其資料庫擁有者屬於 sysadmin 伺服器角色的資料庫清單。

選取 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

內部連接 sys.databases d suser_sname (d.owner_sid) = p.name

WHERE is_trustworthy_on = 1 AND d.name NOT IN ('MSDB') 和 r.type = 'R',r.name = N'sysadmin'

您可以執行下列查詢來判斷 MSDB 資料庫的 TRUSTWORTHY 屬性:

選取名稱,TrustSettingSetting =
case is_trustworthy_on
當 1 時,則 "MSDB 的 Trust值得設定為 ON"
ELSE 'Trust值得設定為 MSDB 的關閉'
END
從 sys.databases,database_id = 4 

如果此查詢顯示可信任屬性設為 OFF,您可以執行下列查詢,將 TRUSTWORTHY 屬性設為預設值。

ALTER DATABASE MSDB SET 信任的 ON

下表提供有關在 SQL Server 實例上自動檢查此狀況的產品或工具,以及規則所評估之 SQL Server 產品版本的資訊。

規則軟體

規則標題

規則描述

評估規則的產品版本

System Center Advisor

SQL Server msdb 系統資料庫有可信賴的選項設定為 OFF

System Center Advisor 會針對此 SQL Server 實例的 msdb 系統資料庫檢查資料庫選項信任是否設為 OFF。 如果設為 OFF,則建議程式會產生通知。 請閱閱顧問警示中「收集的資訊」區段所提供的資訊,並遵循本文所提供的解決方案。

SQL Server 2008
SQL Server 2008
R2

SQL Server 2008 R2 最佳做法分析 (SQL Server 2008 R2 BPA

值得信任的位

SQL Server 2008 R2 最佳做法分析程式 (SQL Server 2008 R2 BPA) 提供規則,以偵測資料庫何時將 TRUSTWORTHY 屬性設為 ON,以及資料庫擁有者是否為 sysadmin 伺服器群組的成員。 如果您執行 BPA 工具,並收到標題為「引擎 - 可信任的位」的警告,建議您執行上一節所列的查詢,以識別已設定可信任位的資料庫,並考慮將設定變更為 OFF。

SQL Server 2008
SQL Server 2008
R2

SQL Server 2012 最佳做法分析 (SQL Server 2012 BPA)

值得信任的位

SQL Server 2012 最佳做法分析程式 (SQL Server 2012 BPA) 提供規則,以偵測資料庫何時將 TRUSTWORTHY 屬性設定為 ON,以及資料庫擁有者是否為 sysadmin 伺服器群組的成員。 如果您執行 BPA 工具,並收到標題為「引擎 - 可信任的位」的警告,建議您執行上一節所列的查詢,以識別已設定可信任位的資料庫,並考慮將設定變更為 OFF。

SQL Server 2012

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×