Configuración de ACL mediante el archivo Manifest.xml en IIS |

Hay muchos métodos que puede utilizar para configurar listas de control de acceso (ACL). Uno de estos métodos es utilizar una herramienta de línea de comandos como Icacls.exe. Los hosts PHP suelen utilizar la línea de comandos para configurar ACL. Sin embargo, también puede utilizar el archivo Manifest.xml para configurar la ACL. Estos son los sistemas que se utilizan normalmente durante la instalación de una aplicación mediante la herramienta de implementación web (WDT) o el instalador de plataforma web de Microsoft (Web PI).
El WDT está preconfigurado para instalar todos los archivos y directorios sin realizar cambios en los permisos existentes. En la mayoría de los casos, esto significa que la aplicación solo tiene acceso de lectura a los archivos y directorios instalados. Si su aplicación necesita escribirse en un archivo o directorio, puede deletrear los respectivos archivos o directorios en el archivo Manifest.xml con un comando setAcl. Los componentes setAclResourceType indican si la ruta representa un archivo o un directorio.
<setAcl path="application/sites/default/settings.php" setAclResourceType="File" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />
Para confirmar que está asignando una Lista de control de acceso al directorio correcto, también debe implementar una restricción oculta en la AppPath en la que está configurada y configurada.
<!-- This is the parameter that is used to set ACLs, it's set to the application path filled in by the user --> <parameter name="SetAclParameter1" defaultValue="{AppPath}/sites/default/settings.php" tags="Hidden"> <parameterEntry type="ProviderPath"scope="setAcl" match="Application/sites/default/settings.php" /> </parameter>
Si no puede configurar la ACL para un archivo o directorio en particular, la ACL puede estar configurada para permitir el acceso de lectura al archivo o directorio de forma predeterminada. Las ACL son precisas, por lo que otorgar acceso no es esencialmente de lectura. Si necesita escribir en un archivo o directorio, debe incluir “Leer, escribir”. Si necesita enumerar los archivos en un directorio, debe incluir “ListDirectory”. Tenga en cuenta que el acceso de escritura no implica ningún derecho a realizar cambios. Si necesita modificar los archivos tan pronto como se escriben en el disco, debe configurar claramente el acceso de modificación.
Hay algunos permisos donde se combinan otros permisos. Por ejemplo, el permiso “Modificar” otorga a la persona el derecho de “Leer”, “Escribir”, “Ejecutar” y “Eliminar”.
Para proporcionar acceso de lectura, ejecución y escritura al Mi aplicación Directorio de estructura de archivos para el cliente examenAgregue la siguiente línea a su archivo Manifest.xml:
<setAcl path="MyApp" setAclAccess="ReadAndExecute, Write" setAclUser="Test" />
Cómo configurar las listas de control de acceso en el hilo MyApp / Subir Para permitir que los clientes anónimos carguen contenido, incluya la siguiente línea en su Manifest.xml Archivo:
<setAcl path="MyApp/Upload" setAclAccess="Write" setAclUser="anonymousAuthenticationUser" />
Tenga en cuenta que anonymAuthenticationUser es un token específico que generalmente se resuelve configurando su ID de autenticación anónimo. Leer acceso a la MyAppData Carpeta para la identidad del grupo de aplicaciones, integre la siguiente línea en el Manifest.xml Archivo:
<setAcl path="MyApp/Data" setAclAccess="Read" />
Tenga en cuenta que aquí no se utiliza setAclUser. El valor predeterminado para esto es Application Pool Identity. Por lo tanto, posiblemente pueda omitir esta línea.
Tenga en cuenta que es un riesgo de seguridad importante usar la ACL en el directorio raíz de la aplicación para otorgar acceso de “escritura” o “modificación” a todo el árbol de la aplicación. Las ACL deben ser muy restrictivas y detalladas, pero de ninguna manera limitar la funcionalidad de las aplicaciones.
Si está familiarizado con los permisos de UNIX o Linux, los permisos enumerados aquí se aplican a los permisos de propietario en esas plataformas. Aunque los permisos de grupo y globales se pueden configurar utilizando muchas ACL fuera de WDT, los únicos permisos que se configuran en esta instancia son la categoría de permisos de Propietario. La siguiente tabla muestra las contrapartes del sistema operativo Windows de una variedad de permisos de Linux con máscara de bits:
Linux
[System.Flags] [System.Security.SecurityCritical]
publicenum FileSystemRights
El siguiente código es una ilustración que usa la lista FullControl para formular una regla de acceso y luego eliminar la regla de acceso de un archivo. Debe proporcionar una cuenta de usuario o grupo válida para ejecutar el ejemplo que se muestra aquí.
using System; using System.IO; using System.Security.AccessControl; namespace FileSystemExample { class FileExample { publicstaticvoid Main() { try { string fileName = "test.xml"; Console.WriteLine("Adding access control entry for " + fileName); // Add the access control entry to the file. AddFileSecurity(fileName, @"DomainNameAccountName", FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Removing access control entry from " + fileName); // Remove the access control entry from the file. RemoveFileSecurity(fileName, @"DomainNameAccountName", FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Done."); } catch (Exception e) { Console.WriteLine(e); } } // Adds an ACL entry on the specified file for the specified account. publicstaticvoid AddFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity fSecurity = File.GetAccessControl(fileName); // Add the FileSystemAccessRule to the security settings. fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType)); // Set the new access settings. File.SetAccessControl(fileName, fSecurity); } // Removes an ACL entry on the specified file for the specified account. publicstaticvoid RemoveFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity fSecurity = File.GetAccessControl(fileName); // Remove the FileSystemAccessRule from the security settings. fSecurity.RemoveAccessRule(new FileSystemAccessRule(account, rights, controlType)); // Set the new access settings. File.SetAccessControl(fileName, fSecurity); } } }
Para obtener información sobre cómo configurar Internet Information Services (IIS) para ACL específicas, consulte a continuación:
Hay muchas formas de configurar sus ACL a través del Shell. Este trabajo incluye el uso de herramientas de línea de comandos como Icacls.exe. Este artículo se centra en el mecanismo de manifiesto de la herramienta de implementación web (XML) que se puede utilizar para configurar las ACL. Se utiliza al instalar una aplicación mediante la herramienta de implementación web o el instalador de plataforma web.
Agregue la siguiente línea al archivo Manifest.xml para otorgar al usuario Foo permisos de lectura, ejecución y escritura en el directorio del sistema de archivos MyApp:
<setAcl path="MyApp" setAclAccess="ReadAndExecute, Write" setAclUser="Foo" />
Para configurar la ACL en la ruta MyApp / Upload para que los usuarios anónimos puedan cargar contenido, integre las siguientes líneas en su archivo Manifest.xml:
<setAcl path="MyApp/Upload" setAclAccess="Write" setAclUser="anonymousAuthenticationUser" />
Tenga en cuenta que anonymAuthenticationUser es un token específico que determina su identidad de autenticación anónima configurada.
Agregue el siguiente comando al archivo Manifest.xml para proporcionar acceso de lectura a la carpeta MyAppData para la identidad del grupo de aplicaciones:
<setAcl path="MyApp/Data" setAclAccess="Read" />
Tenga en cuenta que aquí no se utiliza setAclUser. El (el valor listo para usar para esto es la identidad del grupo de aplicaciones).
El token anonymAuthenticationUser se mide de forma rutinaria hasta la identidad que estableció el sitio web y que se utiliza para la autenticación anónima. Si bien el administrador del sitio web configura esta identidad, es mejor usar anonymAuthenticationUser para aplicaciones PHP y no usar setAclUser para aplicaciones Microsoft ASP.NET a menos que su aplicación requiera que un usuario administre correctamente el archivo.
Las aplicaciones PHP generalmente se ejecutan como un usuario anónimo porque la configuración de FastCGI generalmente usa la suplantación como Verdadero (se ejecuta como un usuario anónimo). Las aplicaciones ASP.NET se ejecutan básicamente como identidad de proceso de trabajo (identidad del grupo de aplicaciones). Si setAclUser no está escrito, el usuario de autenticación anónimo utilizará la identidad del grupo de aplicaciones de la aplicación para representar la identidad para la autorización.
Las listas FileSystemRights determinan qué acciones del sistema de archivos están permitidas para una cuenta de usuario específica y qué procedimientos del sistema de archivos se monitorean para una cuenta de usuario específica.
Utilice la lista FileSystemRights cuando desee generar una regla de acceso con la categoría FileSystemAccessRule o cuando desee generar una regla de auditoría con la categoría FileSystemAuditRule.
Esta lista consta de muchos valores de derechos estructurales granulares y muchos valores que son una mezcla de estos valores granulares. Es más fácil usar los valores de combinación como FullControl, Read y Write que escribir el valor de cada elemento individualmente.