CLR strict securityCLR strict security

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Controla la interpretación del permiso SAFE, EXTERNAL ACCESS, UNSAFE en SQL ServerSQL Server.Controls the interpretation of the SAFE, EXTERNAL ACCESS, UNSAFE permission in SQL ServerSQL Server.

ValorValue DescripciónDescription
00 Deshabilitada: se proporciona para la compatibilidad con versiones anteriores.Disabled - Provided for backwards compatibility. El valor Disabled no es recomendable.Disabled value is not recommended.
11 Habilitada: hace que el Motor de base de datosDatabase Engine pase por alto la información de PERMISSION_SET relativa a los ensamblados y los interprete siempre como UNSAFE.Enabled - Causes the Motor de base de datosDatabase Engine to ignore the PERMISSION_SET information on the assemblies, and always interpret them as UNSAFE. Enabled es el valor predeterminado en SQL Server 2017 (14.x)SQL Server 2017 (14.x).Enabled is the default value for SQL Server 2017 (14.x)SQL Server 2017 (14.x).

Advertencia

CLR usa la seguridad de acceso del código (CAS) de .NET Framework, que ya no se admite como un límite de seguridad.CLR uses Code Access Security (CAS) in the .NET Framework, which is no longer supported as a security boundary. Un ensamblado CLR creado con la opción PERMISSION_SET = SAFE puede tener acceso a los recursos externos del sistema, llamar a código no administrado y adquirir privilegios sysadmin.A CLR assembly created with PERMISSION_SET = SAFE may be able to access external system resources, call unmanaged code, and acquire sysadmin privileges. A partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x), se incluye una opción de sp_configure denominada clr strict security para mejorar la seguridad de los ensamblados CLR.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x), an sp_configure option called clr strict security is introduced to enhance the security of CLR assemblies. La opción clr strict security está habilitada de forma predeterminada y trata los ensamblados SAFE y EXTERNAL_ACCESS como si estuvieran marcados con UNSAFE.clr strict security is enabled by default, and treats SAFE and EXTERNAL_ACCESS assemblies as if they were marked UNSAFE. La opción clr strict security se puede deshabilitar para permitir la compatibilidad con versiones anteriores, pero no se recomienda hacerlo.The clr strict security option can be disabled for backward compatibility, but this is not recommended. Microsoft recomienda que todos los ensamblados estén firmados con un certificado o clave asimétrica con el correspondiente inicio de sesión que tenga concedido el permiso UNSAFE ASSEMBLY en la base de datos maestra.Microsoft recommends that all assemblies be signed by a certificate or asymmetric key with a corresponding login that has been granted UNSAFE ASSEMBLY permission in the master database. Los administradores de SQL ServerSQL Server también pueden agregar ensamblados a una lista de los ensamblados en los que el motor de base de datos debe confiar.SQL ServerSQL Server administrators can also add assemblies to a list of assemblies, which the Database Engine should trust. Para más información, vea sys.sp_add_trusted_assembly.For more information, see sys.sp_add_trusted_assembly.

NotasRemarks

Cuando se habilita, la opción PERMISSION_SET en las instrucciones CREATE ASSEMBLY y ALTER ASSEMBLY se omite en tiempo de ejecución, pero las opciones PERMISSION_SET se conservan en los metadatos.When enabled, the PERMISSION_SET option in the CREATE ASSEMBLY and ALTER ASSEMBLY statements is ignored at run-time, but the PERMISSION_SET options are preserved in metadata. Si la opción se omite, se reduce el riesgo de romper las instrucciones de código existentes.Ignoring the option, minimizes breaking existing code statements.

CLR strict security es una advanced option.CLR strict security is an advanced option.

Importante

Después de habilitar la seguridad estricta, los ensamblados que no estén firmados no podrán cargarse.After enabling strict security, any assemblies that are not signed will fail to load. Debe modificar (o eliminar y volver a crear) cada ensamblado para que se firme con un certificado o clave asimétrica que tenga el inicio de sesión correspondiente con el permiso UNSAFE ASSEMBLY en el servidor.You must either alter or drop and recreate each assembly so that it is signed with a certificate or asymmetric key that has a corresponding login with the UNSAFE ASSEMBLY permission on the server.

PermisosPermissions

Para cambiar esta opciónTo change this option

Debe disponer del permiso CONTROL SERVER o pertenecer al rol fijo de servidor sysadmin.Requires CONTROL SERVER permission, or membership in the sysadmin fixed server role.

Para crear un ensamblado CLRTo create an CLR assembly

Los siguientes permisos son necesarios para crear un ensamblado CLR cuando la opción CLR strict security está habilitada:The following permissions required to create a CLR assembly when CLR strict security is enabled:

  • El usuario debe tener el permiso CREATE ASSEMBLY.The user must have the CREATE ASSEMBLY permission
  • Además, se debe dar una de las siguientes condiciones:And one of the following conditions must also be true:
    • El ensamblado debe estar firmado con un certificado o clave asimétrica que tenga el inicio de sesión correspondiente con el permiso UNSAFE ASSEMBLY en el servidor.The assembly is signed with a certificate or asymmetric key that has a corresponding login with the UNSAFE ASSEMBLY permission on the server. Se recomienda firmar el ensamblado.Signing the assembly is recommended.
    • La base de datos tiene la propiedad TRUSTWORTHY establecida en ON y pertenece a un inicio de sesión que tiene el permiso UNSAFE ASSEMBLY en el servidor.The database has the TRUSTWORTHY property set to ON, and the database is owned by a login that has the UNSAFE ASSEMBLY permission on the server. Esta opción no se recomienda.This option is not recommended.

Consulte tambiénSee Also

Opciones de configuración de servidor (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
clr enabled (opción de configuración del servidor)clr enabled Server Configuration Option