CLR 嚴格安全性

適用於:SQL Server

控制 SQL Server 中 SAFEEXTERNAL ACCESSUNSAFE 權限的解譯。

描述
0 Disabled - 針對回溯相容性所提供。 不建議使用 Disabled 值。
1 啟用 - 讓資料庫引擎忽略組件的 PERMISSION_SET 資訊,而且一律解譯為 UNSAFEEnabled 是預設值,從 SQL Server 2017 (14.x) 開始。

警告

CLR 使用 .NET Framework 中的程式碼存取安全性 (CAS),而這不再作為安全性界限受支援。 使用 PERMISSION_SET = SAFE 所建立的 CLR 組件可以存取外部系統資源、呼叫 Unmanaged 程式碼,以及取得系統管理員權限。 從 SQL Server 2017 (14.x) 開始,引進稱為 clr strict securitysp_configure 選項來增強 CLR 組件的安全性。 clr strict security 會依預設啟用,且將 SAFEEXTERNAL_ACCESS 組件視作已標記為 UNSAFE 一樣。 可以基於回溯相容性停用 clr strict security 選項,但不建議這麼做。 Microsoft 建議透過具有已獲授與 master 資料庫中 UNSAFE ASSEMBLY 權限之對應登入的憑證或非對稱金鑰簽署所有組件。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly

備註

啟用時,會在執行階段忽略 CREATE ASSEMBLYALTER ASSEMBLY 陳述式中的 PERMISSION_SET 選項,但在中繼資料中會保留 PERMISSION_SET 選項。 忽略此選項可將中斷現有程式碼陳述式最小化。

CLR strict securityadvanced option

重要

啟用嚴格安全性之後,將無法載入任何未簽署的組件。 您必須改變或置放並重新建立每個組件,以使用憑證或非對稱金鑰進行簽署,該金鑰有具有伺服器 UNSAFE ASSEMBLY 權限的對應登入。

權限

變更此選項

需要 CONTROL SERVER 權限或系統管理員 sysadmin 固定伺服器角色中的成員資格。

建立 CLR 組件

啟用 CLR strict security 時,需要有下列權限才能建立 CLR 組件:

  • 使用者必須具有 CREATE ASSEMBLY 權限
  • 而且,下列其中一個條件也必須成立:
    • 組件是使用憑證或非對稱金鑰進行簽署,該金鑰有具有伺服器 UNSAFE ASSEMBLY 權限的對應登入。 建議簽署組件。
    • 資料庫的 TRUSTWORTHY 屬性設定為 ON,而且具有伺服器之 UNSAFE ASSEMBLY 權限的登入擁有資料庫。 不建議使用此選項。

另請參閱

伺服器組態選項 (SQL Server)
sp_configure (Transact-SQL)
CLR 已啟用伺服器組態選項