CLR 嚴格安全性
適用於:SQL Server
控制 SQL Server 中 SAFE
、EXTERNAL ACCESS
、UNSAFE
權限的解譯。
值 | 描述 |
---|---|
0 | Disabled - 針對回溯相容性所提供。 不建議使用 Disabled 值。 |
1 | 啟用 - 讓資料庫引擎忽略組件的 PERMISSION_SET 資訊,而且一律解譯為 UNSAFE 。 Enabled 是預設值,從 SQL Server 2017 (14.x) 開始。 |
警告
CLR 使用 .NET Framework 中的程式碼存取安全性 (CAS),而這不再作為安全性界限受支援。 使用 PERMISSION_SET = SAFE
所建立的 CLR 組件可以存取外部系統資源、呼叫 Unmanaged 程式碼,以及取得系統管理員權限。 從 SQL Server 2017 (14.x) 開始,引進稱為 clr strict security
的 sp_configure
選項來增強 CLR 組件的安全性。 clr strict security
會依預設啟用,且將 SAFE
與 EXTERNAL_ACCESS
組件視作已標記為 UNSAFE
一樣。 可以基於回溯相容性停用 clr strict security
選項,但不建議這麼做。 Microsoft 建議透過具有已獲授與 master 資料庫中 UNSAFE ASSEMBLY
權限之對應登入的憑證或非對稱金鑰簽署所有組件。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly。
備註
啟用時,會在執行階段忽略 CREATE ASSEMBLY
和 ALTER ASSEMBLY
陳述式中的 PERMISSION_SET
選項,但在中繼資料中會保留 PERMISSION_SET
選項。 忽略此選項可將中斷現有程式碼陳述式最小化。
CLR strict security
是 advanced 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 已啟用伺服器組態選項
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應