configuration de serveur : clr strict security (sécurité clr stricte)

S’applique à : SQL Server

Contrôle l’interprétation de l’autorisation SAFE, EXTERNAL_ACCESS ou UNSAFE dans SQL Server. Pour plus d’informations sur ces autorisations, consultez Conception d’assemblys.

Valeur Description
0 Désactivé. Fourni pour la compatibilité ascendante. Définir cette valeur sur 0 n’est pas recommandé.
1 Activé. Le moteur de base de données ignore les informations PERMISSION_SET sur les assemblys et les interprète toujours comme UNSAFE. Dans SQL Server 2017 (14.x) et versions ultérieures, 1 est la valeur par défaut.

La sécurité d’accès du code n’est plus prise en charge

CLR utilise la sécurité d’accès du code (CAS) dans le .NET Framework, qui n’est plus pris en charge comme limite de sécurité. Un assembly CLR créé avec PERMISSION_SET = SAFE pourrait être en mesure d’accéder à des ressources système externes, d’appeler du code non managé et d’acquérir des privilèges sysadmin. Dans SQL Server 2017 (14.x) et versions ultérieures, clr strict security traite les assemblys SAFE et EXTERNAL_ACCESS comme s’ils sont marqués UNSAFE.

Nous recommandons que tous les assemblys soient signés par un certificat ou une clé asymétrique avec une connexion correspondante à laquelle a été accordée l’autorisation UNSAFE ASSEMBLY dans la base de données master. Les administrateurs SQL Server peuvent également ajouter des assemblys à une liste d’assemblys, que le moteur de base de données doit approuver. Pour plus d’informations, consultez sys.sp_add_trusted_assembly.

Notes

Quand elle est activée, l’option PERMISSION_SET dans les instructions CREATE ASSEMBLY et ALTER ASSEMBLY est ignorée au moment de l’exécution, mais les options PERMISSION_SET sont conservées dans les métadonnées. Ignorer cette option réduit les risques de rupture des instructions de code existantes.

CLR strict security est une advanced option.

Une fois que vous avez activé la sécurité stricte, le chargement des assemblys non signés échoue. Vous devez modifier, ou bien supprimer et recréer, chaque assembly, de façon à ce qu’il soit signé avec un certificat ou une clé asymétrique qui a une connexion correspondante avec l’autorisation UNSAFE ASSEMBLY sur le serveur.

Autorisations

Changer cette option

Requiert l’autorisation CONTROL SERVER ou l’appartenance au rôle serveur fixe sysadmin (administrateur système).

Créer un assembly CLR

Les autorisations suivantes sont requises pour créer un assembly CLR quand CLR strict security est activée :

  • L’utilisateur doit avoir l’autorisation CREATE ASSEMBLY

  • L’une des conditions suivantes doit également être remplie :

    • L’assembly est signé avec un certificat ou une clé asymétrique qui a une connexion correspondante avec l’autorisation UNSAFE ASSEMBLY sur le serveur. Signer l’assembly est recommandé.

    • La base de données a la propriété TRUSTWORTHY définie sur ON, et elle est détenue par une connexion qui a l’autorisation UNSAFE ASSEMBLY sur le serveur. Cette option n’est pas recommandée.

Exemples

L'exemple suivant affiche tout d'abord le paramètre actuel de l'option clr strict security, puis définit la valeur de l'option sur 1 (activée).

EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO