伺服器組態:CLR 嚴格安全性
適用於:SQL Server
控制 SQL Server 中 SAFE
、EXTERNAL_ACCESS
或 UNSAFE
權限的解譯。 如需有關組件權限集合的詳細資訊,請參閱設計組件。
值 | Description |
---|---|
0 |
Disabled。 提供這個項目的目的,是為了與舊版相容。 不建議將 0 設定為一個小的值。 |
1 |
Enabled。 讓資料庫引擎忽略組件的 PERMISSION_SET 資訊,而且一律解譯為 UNSAFE 。 在 SQL Server 2017 (14.x) 和更新版本中,1 是預設值。 |
不再支援程式碼存取安全性
CLR 使用 .NET Framework 中的程式碼存取安全性 (CAS),而這不再作為安全性界限受支援。 使用 PERMISSION_SET = SAFE
所建立的 CLR 組件可以存取外部系統資源、呼叫非受控程式碼,以及取得系統管理員權限。 在 SQL Server 2017 (14.x) 和更新版本中, clr strict security
會將 SAFE
和 EXTERNAL_ACCESS
元件視為標記為 UNSAFE
。
我們建議透過具有已獲授與資料庫中 UNSAFE ASSEMBLY
權限master
之對應登入的憑證或非對稱金鑰簽署所有組件。 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
權限的登入擁有資料庫。 不建議使用此選項。
範例
下列範例會先顯示 clr strict security
選項的目前設定,然後將選項值設定為 1
來啟用選項。
EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO