適用於:SQL Server
控制 SQL Server 中 SAFE、EXTERNAL_ACCESS 或 UNSAFE 權限的解譯。 如需這些權限的詳細資訊,請參閱 設計元件。
| 值 | 說明 |
|---|---|
0 |
已停用 為了回溯相容而提供。 不建議將此值設為 , 0 因為可能會造成安全漏洞。 |
1 |
已啟用。 讓資料庫引擎忽略組件的 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。
我們建議您使用憑證或非對稱金鑰來簽署所有組件,並使用其對應的登入;該登入在 master 資料庫中已被授與 UNSAFE ASSEMBLY 權限。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly。
備註
啟用時,會在執行階段忽略 PERMISSION_SET 和 CREATE ASSEMBLY 陳述式中的 ALTER ASSEMBLY 選項,但在中繼資料中會保留 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 來啟用選項。
EXECUTE sp_configure 'clr strict security';
GO
EXECUTE sp_configure 'clr strict security', '1';
RECONFIGURE;
GO