Compartir a través de


Protección de elementos web en SharePoint Foundation

Última modificación: martes, 02 de noviembre de 2010

Hace referencia a: SharePoint Foundation 2010

En este artículo
Seguridad de acceso a código
Configuración de seguridad integrada
Creación de una directiva de seguridad de acceso a código

Los elementos web de Microsoft SharePoint Foundation constituyen una forma eficaz para que los usuarios interactúen con otros sistemas. SharePoint Foundation tiene la configuración de seguridad integrada para restringir el acceso que tiene un elemento web a sistemas subyacentes. Un desarrollador puede crear archivos de directivas de seguridad personalizados para proporcionar un acceso mayor de los elementos web al sistema subyacente.

Los elementos web también se pueden crear en una solución de espacio aislado. De forma predeterminada, una solución de espacio aislado tiene acceso restringido al sistema subyacente. Esto proporciona mayor seguridad y supervisión del elemento web. Para obtener más información acerca de las soluciones de espacio aislado, vea Soluciones de espacio aislado.

Seguridad de acceso a código

La seguridad de acceso a código (CAS) es una directiva de restricción de recursos que limita el acceso que un ensamblado tiene a los recursos y operaciones de sistemas protegidos. SharePoint Foundation dispone de directivas de seguridad integradas basadas en las directivas de seguridad integradas de ASP.NET. De forma predeterminada, SharePoint Foundation usa un conjunto mínimo de permisos para proteger al servidor y a la infraestructura subyacente de código malintencionado.

Si el elemento web necesita mayor acceso del que se proporciona en la configuración mínima, hay varios modos de aumentar los permisos del elemento web, pero se recomienda solo uno. Puede crear una directiva CAS personalizada para el elemento web o aumentar el nivel de confianza global del conjunto o granja de servidores en el archivo web.config. Este método supone un riesgo para la seguridad y no se recomienda. Para obtener más información acerca de la implementación, vea Implementación de elementos web en SharePoint Foundation.

Configuración de seguridad integrada

SharePoint Foundation es una aplicación de confianza parcial de forma predeterminada. SharePoint Foundation puede usar los niveles de confianza integrados de ASP.NET pero define dos niveles de confianza propios:

  • WSS_UserCode

  • WSS_Minimal

  • WSS_Medium

Los niveles de confianza amplían los niveles de confianza de ASP.NET que se usan con SharePoint Foundation. Los niveles de confianza se definen en los archivos de directivas que se encuentran en el sistema de archivos de cada servidor web.

Importante   De forma predeterminada, los archivos de directivas integrados de SharePoint Foundation en SharePoint Foundation, denominados wss_usercode.config, wss_minimaltrust.config y wss_mediumtrust.config, se encuentran en el directorio CONFIG de %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\.

De forma predeterminada, SharePoint Foundation aplica el nivel de confianza WSS_Minimal para el servidor virtual. Este nivel de confianza concede todos los permisos en la confianza Minimal de ASP.NET, así como las conexiones de elementos web. La directiva WSS_Minimal restringe el acceso del elemento web a muchos recursos para las operaciones avanzadas, incluidas las operaciones de archivo y modelo de objetos.

El nivel de confianza WSS_Medium concede un nivel de acceso mayor al entorno. Además, el nivel WSS_Medium permite el acceso a las operaciones de archivo y de modelo de objetos de SharePoint Foundation incluidas las de lectura, escritura, anexo y descubrimiento de la ruta de acceso. Este nivel de confianza también permite el acceso a las variables de entorno.

En la siguiente tabla se muestran los permisos específicos concedidos con los archivos de directivas WSS_Medium, WSS_Minimal y WSS_UserCode en el entorno de ASP.NET 2.0.

Permiso

WSS_Medium

Nivel de confianza

WSS_Minimal

Nivel de confianza

WSS_UserCode (soluciones de espacio aislado)

Nivel de confianza

System.Web.AspNetHostingPermission

Medio

Mínimo

Mínimo

System.Net.DnsPermission

Unrestricted=”True”

Ninguno

Ninguno

System.Security.Permissions.EnvironmentPermission

Read=”TEMP; TMP;USERNAME;OS;COMPUTERNAME”

Ninguno

Ninguno

System.Security.Permissions.FileIOPermission

Lectura, Escritura, Anexo, PathDiscovery, Directorio de aplicación

Ninguno

Ninguno

System.Security.Permissions.IsolatedStorageFilePermission

AssemblyIsolationByUser, UserQuota sin restricciones

Ninguno

Ninguno

PrintingPermission

Impresión predeterminada

Ninguno

Ninguno

System.Security.Permissions.SecurityPermission

Aserción, Ejecución, ControlThread, ControlPrincipal, RemotingConfiguration

Ejecución

Ejecución

Microsoft.SharePoint.Security.SharePointPermission

ObjectModel=”True”

Ninguno

ObjectModel=”True”, UnsafeSaveOnGet=”True”

System.Net.Mail.SmtpPermission

Access=”Connect”

Ninguno

Ninguno

SqlClientPermission

Unrestricted=”true”

Ninguno

Ninguno

WebPartPermission

Connections=”True”

Connections=”True”

Ninguno

WebPermission

Conectar al host de origen (si está configurado)

Ninguno

Ninguno

Nota

Para obtener más información acerca de la seguridad de acceso a código, vea el tema sobre el uso de la seguridad de acceso a código con ASP.NET y la documentación sobre directrices de seguridad para .NET Framework 2.0.

Creación de una directiva de seguridad de acceso a código

SharePoint Foundation tiene la posibilidad de implementar un archivo de directivas CAS con una solución. Se recomienda usar los permisos para las soluciones de espacio aislado como se detalla en el archivo wss_usercode.config, pero puede crear permisos personalizados para los elementos web y usar SharePoint Foundation para administrar la implementación.

En el ejemplo de código siguiente se muestra la estructura básica de un archivo de directivas CAS en un paquete de soluciones de SharePoint Foundation.

<CodeAccessSecurity>
   <PolicyItem>
     <PermissionSet 
      class="NamedPermissionSet" 
      version="1"
      Description="Permission set for custom test WebParts">

        <IPermission 
          class="AspNetHostingPermission" 
          version="1" 
          Level="Minimal" 
        />

        <IPermission 
          class="SecurityPermission" 
          version="1" 
          Flags="Execution" 
        />

        <IPermission 
          class="Microsoft.SharePoint.Security.SharePointPermission, 
            Microsoft.SharePoint.Security, version=11.0.0.0, 
            Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
          version="1" 
          ObjectModel="True" 
         />

        <IPermission 
          class="System.Net.WebPermission, System, 
            version=1.0.5000.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089" version="1">
          <ConnectAccess>
            <URI uri="https?://.*" />
          </ConnectAccess>
        </IPermission>

        <IPermission 
          class="System.Security.Permissions.SecurityPermission, 
            mscorlib, version=1.0.5000.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089" 
          version="1" 
          Flags="ControlThread, UnmanagedCode" 
        />

        <IPermission 
          class="System.Security.Permissions.EnvironmentPermission, 
            mscorlib, version=1.0.5000.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089" 
          version="1" 
          Read="UserName" 
        />

     </PermissionSet>
     <Assemblies>
       <Assembly PublicKeyBlob=PublicKeyBlob />
     </Assemblies>
   </PolicyItem>
</CodeAccessSecurity>

La siguiente lista incluye algunas instrucciones generales que se aplican cuando se usa una sección <CodeAccessSecurity> en el manifiesto de la solución.

  • Sólo puede haber una <CodeAccessSecurity> por manifiesto de solución.

  • Puede haber varios nodos <PolicyItem>.

  • Cada nodo <PolicyItem> sólo puede contener un nodo <PermissionSet>.

  • Cada nodo <PolicyItem> sólo puede contener un nodo <Assemblies>.

  • Cada nodo <PermissionSet> puede contener varios nodos <IPermission>.

  • Puede haber varios nodos <Assembly> situados bajo el nodo <Assemblies>.

Para obtener más información acerca del esquema del área <CodeAccessSecurity>, vea Elemento CodeAccessSecurity (Solution).

Al implementar el ensamblado mediante una directiva CAS personalizada, deberá usar la opción -CASPolicies con la Consola de administración de SharePoint. El comando es el siguiente:
Install-SPSolution –Identity <insert name> -CASPolicies <true/false>

Vea también

Otros recursos

Uso de la seguridad de acceso a código con ASP.NET