Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La seguridad de Windows permite proteger los recursos conforme a la función del usuario. Por ejemplo, un administrador tiene permisos sin restricciones, mientras que un invitado tiene un acceso muy restringido. .NET Framework incluye un mecanismo de seguridad denominado Seguridad de acceso a código que le permite proteger más la aplicación. Al utilizar la seguridad de acceso a código, se aplican distintos permisos en función del lugar de origen del código, que se identifica por la zona del ensamblado, y de los permisos identificados para dicha zona en la directiva de seguridad de acceso a código. Por ejemplo, el código que se encuentra en un equipo se identifica como perteneciente a la zona MyComputer. El código que se descarga desde otro equipo de la intranet local se identifica como perteneciente a la zona LocalIntranet. Puede aplicar distintos conjuntos de permisos para cada zona a fin de proporcionar una mayor seguridad al código externo en la zona LocalIntranet, mientras que la seguridad de la zona MyComputer tiene un número menor de restricciones.
Las restricciones de una zona determinada se identifican utilizando un conjunto de permisos. .NET Framework incluye diversos conjuntos de permisos predeterminados; además, puede crear su propio conjunto de permisos personalizado e identificarlo como el conjunto de permisos de una zona determinada.
Normalmente, los conjuntos de permisos se dividen en tres categorías: conjuntos de permisos de plena confianza, permisos de confianza parcial y permisos que no son de confianza. La confianza plena indica que el código no tiene restricciones y se utiliza, de forma predeterminada, para orígenes de nombre seguro y el equipo local. Se considera que las zonas carentes de conjuntos de permisos no son de confianza y sólo pueden utilizar características que no requieran permisos. Los conjuntos de permisos de confianza parcial contienen una combinación de permisos y restricciones adecuados para la zona concreta.
Se considera que la ejecución del proveedor de datos de .NET Framework para OLE DB, para ODBC y para Oracle sólo es segura si se realiza en una zona con permiso FullTrust. Si se intenta utilizar el proveedor de OLE DB o el proveedor de ODBC en una zona con un permiso inferior a FullTrust, se produce una excepción SecurityException. Los proveedores de datos para OLE DB, ODBC y Oracle solicitan un permiso FullTrust en tiempo de enlace y cuando se ejecuta el código. En la versión 1.0 de .NET Framework, los proveedores de datos para OLE DB, ODBC y Oracle solicitan un permiso FullTrust sólo en tiempo de enlace.
Nota Es preciso que el proveedor de datos de .NET Framework para SQL Server incluido con la versión 1.0 .NET Framework se ejecute con un permiso FullTrust. Si se intenta utilizar el proveedor de SQL Server en una zona con un permiso inferior a FullTrust se produce una excepción SecurityException.
El proveedor de datos de .NET Framework para SQL Server se puede ejecutar tanto en una zona con permiso FullTrust como en una zona con un conjunto de permisos que no sean de plena confianza. Una aplicación que no sea de plena confianza debe tener, como mínimo, los permisos Execution y SQL Client. En el caso de las zonas de confianza parcial, se pueden utilizar atributos de permiso SqlClient a fin de restringir aún más las capacidades disponibles para el proveedor de SQL Server.
Nota El proveedor de datos de .NET Framework para SQL Server requiere que el permiso de seguridad tenga la opción "Permitir llamadas a ensamblados no administrados" habilitada (SecurityPermission con UnmanagedCode SecurityPermissionFlag) para abrir una conexión SqlConnection con la depuración de SQL habilitada.
Para que el usuario pueda utilizar los permisos SqlClient para una zona concreta, un administrador debe crear un conjunto de permisos personalizados y establecerlo como el conjunto de permisos de una zona determinada. Los conjuntos de permisos predeterminados, como LocalIntranet, no se pueden modificar. Por ejemplo, si se desea incluir permisos SqlClient para un código cuya zona es LocalIntranet, el administrador puede copiar el conjunto de permisos de LocalIntranet, cambiarle el nombre a MyLocalIntranet, agregar los permisos SqlClient, importar el conjunto de permisos MyLocalIntranet utilizando la Herramienta Directiva de seguridad de acceso a código (Caspol.exe) y establecer el conjunto de permisos de LocalIntranet_Zone en MyLocalIntranet.
En la tabla siguiente se enumeran las propiedades de los atributos de permiso disponibles y su aplicación.
| SqlClientPermissionAttribute (Propiedad) |
Description |
|---|---|
| AllowBlankPassword | Se utiliza para habilitar o deshabilitar el uso de una contraseña en blanco en una cadena de conexión. Los valores válidos son true, para habilitar el uso de contraseñas en blanco, y false, para deshabilitarlo. |
| ConnectionString | Identifica una cadena de conexión admitida. Se pueden identificar varias cadenas de conexión. También puede proporcionar restricciones adicionales de cadenas de conexión mediante KeyRestrictions.
Es recomendable no incluir un Id. de usuario o una contraseña en la cadena de conexión. En esta versión no se pueden modificar las restricciones de las cadenas de conexión mediante la herramienta Configuración de .NET Framework. |
| KeyRestrictions | Identifica qué parámetros de las cadenas de conexión están permitidos o no lo están. Los parámetros de las cadenas de conexión se identifican con el formato <nombre de parámetro>=. Se pueden especificar varios parámetros, delimitados mediante punto y coma (;). Los parámetros de cadenas de conexión enumerados se pueden identificar como los únicos parámetros adicionales permitidos o como parámetros adicionales no permitidos mediante la propiedad KeyRestrictionBehavior.
Si no se especifican KeyRestrictions y la propiedad KeyRestrictionBehavior está establecida en AllowOnly, no se permiten parámetros de cadena de conexión adicionales. Si no se especifican KeyRestrictions y la propiedad KeyRestrictionBehavior está establecida en PreventUsage, no se permiten parámetros de cadena de conexión adicionales. |
| KeyRestrictionBehavior | Identifica si la lista de parámetros de cadena de conexión identificados por la propiedad KeyRestrictions sólo incluye los parámetros de cadenas de conexión adicionales permitidos (AllowOnly) o los no permitidos (PreventUsage). El valor predeterminado es AllowOnly. |
Por ejemplo, la siguiente configuración de propiedades sólo permite utilizar la cadena de conexión Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;.
<add ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
Para habilitar la misma cadena de conexión y habilitar también el uso de las opciones de cadena de conexión Cifrar y Tamaño comprimido, pero restringir el uso de cualquier otra opción de cadena de conexión, utilice el siguiente código.
<add ConnectionString=" Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
KeyRestrictions="Encrypt=;Packet Size=;"
KeyRestrictionBehavior="AllowOnly" />
Para habilitar la misma cadena de conexión y permitir el resto de parámetros de conexión, excepto Id. de usuario, Contraseña e Información de seguridad persistente, utilice el siguiente código.
<add ConnectionString=" Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
KeyRestrictions="User Id=;Password=;Persist Security Info=;"
KeyRestrictionBehavior="PreventUsage" />
Los siguientes permisos permiten realizar conexiones con localhost y MySqlServer utilizando la seguridad integrada. Las cadenas de conexión también pueden incluir los parámetros Catálogo original, Tiempo de espera de la conexión, Cifrar y Tamaño comprimido. El resto de los parámetros de cadenas de conexión están restringidos.
<add ConnectionString="Data Source=localhost;Integrated Security=SSPI;"
KeyRestrictions="Initial Catalog;Connection Timeout=;Encrypt=;Packet Size=;"
KeyRestrictionBehavior="AllowOnly" />
<add ConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;"
KeyRestrictions="Initial Catalog;Connection Timeout=;Encrypt=;Packet Size=;"
KeyRestrictionBehavior="AllowOnly" />
Conjunto de permisos de ejemplo
A continuación se muestra un ejemplo de un conjunto de permisos para el proveedor de datos de .NET Framework para SQL Server en un escenario que no es de plena confianza. Para obtener información sobre la forma de crear conjuntos de permisos personalizados, vea Configurar conjuntos de permisos mediante Caspol.exe.
<PermissionSet class="System.Security.NamedPermissionSet"
version="1"
Name="MyLocalIntranet"
Description="Custom permission set given to applications on the local intranet">
<IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
AllowBlankPassword="False">
<add ConnectionString="Data Source=localhost;Integrated Security=SSPI;"
KeyRestrictions="Initial Catalog;Connection Timeout=;Encrypt=;Packet Size=;"
KeyRestrictionBehavior="AllowOnly" />
</IPermission>
</PermissionSet>
Vea también
Escribir código de ADO.NET seguro | Seguridad de acceso a código | Herramienta Configuración de .NET Framework (Mscorcfg.msc)