Compartir a través de


Procedimiento para restringir permisos de seguridad de acceso del código UDF

Última modificación: miércoles, 30 de septiembre de 2009

Hace referencia a: SharePoint Server 2010

Si no desea que un ensamblado determinado de función definida por el usuario (UDF) se ejecute con confianza plena, debe restringir explícitamente los permisos de seguridad de acceso al código. Puede configurar los grupos de códigos y restringir los permisos mediante la herramienta Configuración de .NET Framework 2.0.

Por ejemplo, imagine un escenario donde dispone de un ensamblado de UDF que contiene varios métodos. Uno de los métodos de UDF realiza un cálculo personalizado y otro método de UDF del mismo ensamblado llama a un servicio web para obtener las cotizaciones en bolsa. Dado que los usuarios sólo usan libros de Excel que llaman al primer método (cálculo), es posible que desee deshabilitar el ensamblado para que no tenga acceso web y aumentar así la seguridad.

El ensamblado de UDF está instalado en una carpeta del servidor en C:\UdfAssemblies\CalcAndWebAccessUdf.dll. Dado que el ensamblado se encuentra en el mismo equipo que Microsoft SharePoint Server 2010, cuando Excel Calculation Services carga el ensamblado de UDF, se carga en la zona de Mi PC. De forma predeterminada, la zona de Mi PC es de confianza plena. Esto significa que al ensamblado de UDF se le conceden permisos de confianza plena.

Para bloquear el ensamblado de UDF para que no pueda tener acceso web, debe restringir explícitamente el conjunto de permisos que se conceden siguiendo estos pasos:

  1. Cree un nuevo grupo de códigos basado en direcciones URL en My_Computer_Zone en el nivel de equipo. Defina el ámbito del grupo de códigos para ese ensamblado específico y cree un conjunto de permisos personalizado.

  2. Configure las propiedades del grupo de códigos personalizado de modo que el nivel de directiva sólo tenga los permisos del conjunto de permisos asociado al grupo de códigos personalizado. Cuando Excel Calculation Services carga un ensamblado de UDF que reside en el mismo equipo, el ensamblado se carga en la zona de Mi PC. Esto significa que, de forma predeterminada, se concede confianza plena al ensamblado de UDF. Cuando el conjunto de permisos personalizado se cruza con el conjunto de permisos de confianza plena, el resultado es la confianza plena. Para conseguir que una directiva obtenga sólo el permiso del conjunto de permisos asociado al grupo de códigos personalizado, debe habilitar la propiedad Este nivel de directiva sólo tendrá los permisos del conjunto de permisos asociado a este grupo de códigos.

Para obtener más información acerca de cómo configurar los grupos de códigos, consulte los siguientes artículos en MSDN:

Para crear un nuevo grupo de códigos

  1. Haga clic en Inicio, seleccione Todos los programas, elija Herramientas administrativas y, a continuación, haga clic en Configuración de Microsoft .NET Framework 2.0.

    Se iniciará la herramienta Configuración de .NET 2.0 Framework.

  2. En el panel izquierdo, expanda el nodo Mi PC y, a continuación, expanda el nodo Directiva de seguridad en tiempo de ejecución.

  3. Expanda el nodo Equipo.

  4. Expanda el nodo Grupos de código.

  5. Expanda el nodo All_Code.

  6. Expanda el nodo My_Computer_Zone. Haga clic con el botón secundario en My_Computer_Zone y, a continuación, seleccione Nuevo para mostrar el cuadro de diálogo Identifique el nuevo grupo de códigos.

  7. Seleccione Crear un nuevo grupo de códigos.

  8. En el campo Nombre, escriba un nombre para el nuevo grupo de códigos, por ejemplo, RestrictWebAccessUdf.

  9. Haga clic en Siguiente.

  10. Para delimitar el grupo de códigos al ensamblado de UDF específico, seleccione Dirección URL en Elija el tipo de condición para este grupo de códigos.

    Se mostrará el campo Dirección URL.

  11. En el campo Dirección URL, escriba la ruta de acceso al ensamblado de UDF para el que quiere restringir el acceso web; por ejemplo, C:\UdfAssemblies\CalcAndWebAccessUdf.dll.

  12. Haga clic en Siguiente.

  13. Seleccione Crear un nuevo conjunto de permisos y a continuación, haga clic en Siguiente.

  14. En el campo Nombre, escriba un nombre para el conjunto de permisos, por ejemplo, AssemblyExecutionCustomPermissionSet.

  15. Haga clic en Siguiente.

  16. Para conceder permiso de ejecución de ensamblados al ensamblado de UDF, seleccione Seguridad en la lista de permisos de ensamblado y, a continuación, haga clic en Agregar.

    Se mostrará el cuadro de diálogo Configuración de los permisos.

  17. Seleccione Conceder a los ensamblados los siguientes permisos de seguridad.

  18. Seleccione Habilitar la ejecución de ensamblados.

  19. Haga clic en Aceptar y, a continuación, en Siguiente.

  20. Haga clic en Finalizar.

    El nuevo grupo de códigos personalizado deberá aparecer en el nodo My_Computer_Zone (en este ejemplo, RestrictWebAccessUdf ).

Para asegurarse de que que se ejecutan los conjuntos de permisos

  1. En el nodo My_Computer_Zone, haga clic con el botón secundario del mouse en el nuevo grupo de código personalizado (en este ejemplo, RestrictWebAccessUdf ) y, a continuación, seleccione Propiedades.

  2. En la ficha General, active la casilla de verificación Este nivel de directiva sólo tendrá los permisos del conjunto de permisos asociado a este grupo de códigos.

  3. Haga clic en Aplicar y, a continuación, haga clic en Aceptar.

    Nota

    Si el método de UDF produce una excepción porque que no puede realizar la llamada al servicio web, recibirá un error #VALUE! en la fórmula de Excel que llamó a UDF.

    Nota

    Si desea habilitar el acceso web para el ensamblado de UDF como prueba, debe agregar el permiso adecuado en el conjunto de permisos personalizado. Para ello, en el paso 11 del procedimiento "Para crear un nuevo grupo de códigos", seleccione Acceso al Web.

Vea también

Tareas

Procedimiento para crear una UDF que llame a un servicio web

Procedimiento para habilitar las UDF

Procedimiento para obtener acceso a orígenes de datos externos desde UDF

Procedimiento para implementar UDF mediante soluciones de SharePoint Foundation

Conceptos

Tutorial: Desarrollo de una UDF de código administrado

Preguntas más frecuentes sobre las UDF de Excel Services

Información sobre las UDF de Excel Services