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.
Cualquier código ejecutado por un servidor de informes debe formar parte de una directiva de seguridad de acceso de código específica. Estas directivas de seguridad constan de grupos de código que asignan evidencia a un conjunto de conjuntos de permisos con nombre. A menudo, los grupos de código están asociados a un conjunto de permisos con nombre que especifica los permisos permitidos para el código de ese grupo. El tiempo de ejecución usa evidencias proporcionadas por un host de confianza o por el cargador para determinar a qué grupos de código pertenece el código y, por lo tanto, a qué permisos conceder el código. Reporting Services se adhiere a esta arquitectura de directiva de seguridad tal como se define en Common Language Runtime (CLR) de Microsoft .NET Framework. En las secciones siguientes se describen los distintos tipos de código de Reporting Services y las reglas de directiva asociadas a ellos.
Ensamblados del servidor de informes
Los ensamblados del servidor de informes son aquellos que contienen código que forma parte del producto Reporting Services. Reporting Services se escribe mediante ensamblados de código administrado; todos estos ensamblados tienen un nombre seguro (es decir, firmado digitalmente). Los grupos de código de estos ensamblados se definen mediante StrongNameMembershipCondition, que proporciona evidencia basada en información de clave pública para el nombre seguro del ensamblado. Al grupo de código se le concede el conjunto de permisos FullTrust .
Extensiones del servidor de informes (representación, datos, entrega y seguridad)
Las extensiones del servidor de informes son datos personalizados, entrega, representación y extensiones de seguridad que usted u otros terceros crean para ampliar la funcionalidad de Reporting Services. Debe conceder FullTrust a estas extensiones o código de ensamblado en los archivos de configuración de directiva asociados al componente de Reporting Services que va a extender. Las extensiones enviadas como parte de Reporting Services se firman con la clave pública del servidor de informes y reciben el conjunto de permisos FullTrust .
Importante
Debe modificar los archivos de configuración de directivas de Reporting Services para permitir FullTrust para cualquier extensión de terceros. Si no agrega un grupo de código con FullTrust para las extensiones personalizadas, el servidor de informes no los puede usar.
Para obtener más información sobre los archivos de configuración de directivas en Reporting Services, vea Uso de archivos de directiva de seguridad de Reporting Services.
Expresiones usadas en informes
Las expresiones de informe son expresiones de código insertadas o métodos definidos por el usuario incluidos en el elemento Code de un archivo de lenguaje de definición de informe. Hay un grupo de código que ya está configurado en los archivos de directiva que concede a estas expresiones el conjunto de permisos ejecución de forma predeterminada. El grupo de código tiene el siguiente aspecto:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="Execution"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element. ">
<IMembershipCondition
class="StrongNameMembershipCondition"
version="1"
PublicKeyBlob="002400..."
/>
</CodeGroup>
El permiso de ejecución permite ejecutar código (ejecutar), pero no usar recursos protegidos. Todas las expresiones que se encuentran dentro de un informe se compilan en un ensamblado (denominado ensamblado "host de expresión") que se almacena como parte del informe compilado. Cuando se ejecuta el informe, el servidor de informes carga el ensamblado host de expresiones y realiza llamadas a ese ensamblado para ejecutar expresiones. Los ensamblados del host de expresión se firman con una clave específica que se usa para definir el grupo de código para todos los hosts de expresiones.
Las expresiones de informe hacen referencia a colecciones de modelos de objetos de informe (campos, parámetros, etc.) y realizan tareas sencillas como operaciones aritméticas y de cadena. El código que realiza estas operaciones simples solo requiere el permiso Ejecución . De forma predeterminada, los métodos definidos por el usuario en el elemento Code y a los ensamblados personalizados se les concede permiso de ejecución en Reporting Services. Por lo tanto, para la mayoría de las expresiones, la configuración actual no requiere que modifique ningún archivo de directiva de seguridad. Para conceder permisos adicionales a los ensamblados host de expresiones, un administrador debe modificar los archivos de configuración de directivas del servidor de informes y el Diseñador de informes y cambiar el grupo de código de expresiones de informe. Dado que es una configuración global, cambiar los permisos predeterminados para los hosts de expresión afecta a todos los informes. Por este motivo, se recomienda encarecidamente colocar todo el código que requiera seguridad adicional en un ensamblado personalizado. Solo a este ensamblado se le concederán los permisos que necesita.
Importante
El código que llama a ensamblados externos o recursos protegidos debe incorporarse a un ensamblado personalizado para su uso en informes. Si lo hace, tendrá más control sobre los permisos solicitados y declarados por el código. No debe realizar llamadas a métodos seguros dentro del elemento Code . Para ello, es necesario conceder FullTrust al host de expresiones de informe y conceder acceso completo a todo el código personalizado a CLR.
Precaución
No conceda FullTrust al grupo de código para un host de expresión de informe. Si lo hace, habilitará todas las expresiones de informe para realizar llamadas del sistema protegidas.
Ensamblados personalizados a los que se hace referencia en informes
Algunas expresiones de informe pueden llamar a ensamblados de código de terceros, también conocidos en Reporting Services como ensamblados personalizados. El servidor de informes espera que estos ensamblados tengan al menos permiso de ejecución en los archivos de configuración de directivas. De forma predeterminada, los archivos de directiva que se incluyen con Reporting Services conceden permiso de ejecución a todos los ensamblados a partir de la zona "Mi equipo". Puede conceder permisos adicionales a ensamblados personalizados según sea necesario.
En algunos casos, es posible que tenga que realizar una operación que requiera permisos de código específicos en una expresión de informe. Normalmente, esto significa que una expresión de informe debe realizar una llamada a un método de biblioteca CLR protegido (por ejemplo, uno que tenga acceso a los archivos o al registro del sistema). En la documentación de .NET Framework se describen los permisos de código necesarios para realizar esta llamada segura; para ejecutar la llamada, al código de llamada se le deben conceder estos permisos seguros específicos. Si realiza la llamada desde una expresión de informe o el elemento Code , se debe conceder al ensamblado host de expresión los permisos adecuados. Sin embargo, una vez que conceda a la expresión los permisos, ahora se concede a ese permiso específico todo el código que se ejecuta en cualquier expresión de cualquier informe. Es mucho más seguro realizar la llamada desde un ensamblado personalizado y conceder a ese ensamblado personalizado los permisos específicos.
Véase también
Seguridad de acceso del código en Reporting Services
Desarrollo seguro (Reporting Services)