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 |
---|---|---|---|
Medio |
Mínimo |
Mínimo |
|
Unrestricted=”True” |
Ninguno |
Ninguno |
|
Read=”TEMP; TMP;USERNAME;OS;COMPUTERNAME” |
Ninguno |
Ninguno |
|
Lectura, Escritura, Anexo, PathDiscovery, Directorio de aplicación |
Ninguno |
Ninguno |
|
AssemblyIsolationByUser, UserQuota sin restricciones |
Ninguno |
Ninguno |
|
Impresión predeterminada |
Ninguno |
Ninguno |
|
Aserción, Ejecución, ControlThread, ControlPrincipal, RemotingConfiguration |
Ejecución |
Ejecución |
|
ObjectModel=”True” |
Ninguno |
ObjectModel=”True”, UnsafeSaveOnGet=”True” |
|
Access=”Connect” |
Ninguno |
Ninguno |
|
Unrestricted=”true” |
Ninguno |
Ninguno |
|
Connections=”True” |
Connections=”True” |
Ninguno |
|
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>