El otro día estaba impartiendo unas sesiones de formación en un cliente cuando surgió una duda acerca de la posibilidad de separar los privilegios administrativos del Dominio de los privilegios administrativos de la organización Exchange.
Como seguro muchos de vosotros ya sabéis, un administrador de la organización Exchange, por defecto tiene tambien heredados algunos permisos de administración a nivel de Directorio Activo, por ejemplo, la creación de nuevas Unidades Organizativas, creación de cuentas de usuarios, contactos, grupos de seguridad y distribución, etc.
Existen organizaciones (sobre todo grandes empresas) que prefieren utilizar un modelo de permisos divididos, de tal forma que los administradores de Exchange no puedan realizar tareas de administración del Directorio Activo, salvo aquellas explicitamente delegadas. Por ejemplo, un administrador que solo pueda administrar las propiedades relativas a correo de usuarios existentes en una Unidad Organizativa concreta.
De esta forma el Administrador de Directorio Activo mantiene los privilegios de crear y eliminar nuevos usuarios y grupos, mientras que el Administrador de Exchange delegado sólo puede administrar a los usuarios existentes. (a nivel de Dominio o Unidad Organizativa, dependiendo del contexto de aplicación de los permisos)
Para que se le puedan delegar todas las tareas relativas al correo a un administrador de Exchange diferente del predeterminado, es necesario otorgarle los siguiente permisos a nivel de dominio u OU
Lectura y escritura en los conjuntos de propiedades:
- Exchange Personal Information
- Exchange Information
lectura y escritura en los siguientes atributos:
- legacyExchangeDN
- displayName
- adminDisplayName
- displayNamePrintable
- publicDelegates
- garbageCollPeriod
- textEncodedORAddress
- showInAddressBook
- proxyAddresses
- mail
Derecho para crear objetos de tipo msExchDynamicDistributionList
Derecho para eliminar objetos de tipo msExchDynamicDistributionList
Control total en los objetos de tipo msExchDynamicDistributionList
Permiso de lectura
Permiso de Listar contenido
Permiso de lectura de todas las propiedades
Pues bien, para implementar este modelo de permisos dividido es necesario modificar las entradas de control de acceso (ACLs) en aquellos objetos que se vayan a administrar.
Al rediseñar un modelo de delegación, se pude aplicar en distintos niveles, sin embargo los mas utilizados son a nivel de dominio y a nivel de OU. Al aplicar permisos delegados en el nivel de dominio, todos los objetos heredan los permisos, mientras que si se aplican a nivel de OU, solo los objetos que estén contenidos en dicha OU heredarán los nuevos permisos.
Se pueden utilizar las herramientas ADSIEdit o CACLS, sin embargo Exchange Server 2007 incluye cmdlets de PowerShell para realizar este mismo procedimiento de forma más sencilla.
Recordemos que en Exchange Server 2010 se ha cambiado el modelo de seguridad por un modelo basado en roles (RBAC), por lo tanto este procedimiento solo es válido para Exchange Server 2007.
El siguente ejemplo esta extraído de Microsoft Technet. En él observamos como se aplican paso a paso y en orden los permisos necesarios en un modelo de permisos divididos a nivel de una OU (En este ejemplo Contoso\OU1AdminGroup)
1. Ejecute el siguiente comando para administrar los atributos relativos a Exchange en objetos dentro de la OU.
Add-ADPermission -Identity "ou=Container1,dc=Contoso,dc=com" -User "Contoso\OU1AdminGroup" -AccessRights ReadProperty, WriteProperty -Properties Exchange-Information, Exchange-Personal-Information, legacyExchangeDN, displayName, adminDisplayName, displayNamePrintable, publicDelegates, garbageCollPeriod, textEncodedORAddress, showInAddressBook, proxyAddresses, mail
2. Ejecute el siguiente comando para proporcionar un permiso de lectura genérico para todos los objetos dentro de la OU.
Add-ADPermission -Identity "ou=Container1,dc=Contoso,dc=com" -User "Contoso\OU1AdminGroup" -AccessRights GenericRead
3. Ejecute los siguientes comandos para conceder el permiso apropiado para administrar grupos de distribución dinámicos dentro de la OU.
Add-ADPermission -Identity "ou=Container1,dc=Contoso,dc=com" -User "Contoso\OU1AdminGroup" -AccessRights GenericAll -InheritanceType Descendents -InheritedObjectType msExchDynamicDistributionList
Add-ADPermission -Identity "ou=Container1,dc=Contoso,dc=com" -User "Contoso\OU1AdminGroup" -AccessRights CreateChild, DeleteChild -ChildObjectTypes msExchDynamicDistributionList
Para Exchange 2007 Service Pack 1 (SP1), ejecute el siguiente comando:
ADPermission -Identity "ou=Container1,dc=Contoso,dc=com" -User "Contoso\OU1AdminGroup" -AccessRights GenericAll -ChildObjectTypes msExchDynamicDistributionList
4. Ejecute el siguiente comando para conceder el derecho extendido del grupo de seguridad OU1AdminGroup para obtener acceso al servicio de actualización de destinatarios.
Add-ADPermission -Identity "CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=ContosoOrg,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Contoso,DC=com" -User "Contoso\OU1AdminGroup " -InheritedObjectType ms-Exch-Exchange-Server -ExtendedRights ms-Exch-Recipient-Update-Access -InheritanceType Descendents
5. Ejecute los siguientes comandos para conceder al grupo de seguridad OU1AdminGroup la posibilidad de actualizar las listas de direcciones y las directivas de direcciones de correo electrónico.
Add-ADPermission -Identity "CN=Address Lists Container,CN=ContosoOrg,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Contoso,DC=com" -User "company\OU1AdminGroup" -AccessRights WriteProperty -Properties msExchLastAppliedRecipientFilter, msExchRecipientFilterFlags
Add-ADPermission -Identity "CN=Recipient Policies,CN=ContosoOrg,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Contoso,DC=com" -User "company\OU1AdminGroup" -AccessRights WriteProperty -Properties msExchLastAppliedRecipientFilter, msExchRecipientFilterFlags
Si se realiza correctamente, cada comando mostrará las ACE que se agregaron al objeto. Además es necesario agregar la cuenta delegada al grupo de Administradores de solo lectura de Exchange para que pueda iniciar sesión en la consola de administración.
Otra alternativa es ejecutar el script del Shell de Administración de Exchange ConfigureSplitPerms.ps1 que se encuentra en %PROGRAMFILES%/Microsoft/Exchange Server/Scripts
- .\ConfigureSplitPerms.ps1 -User CONTOSO\Joe -Identity "OU=Accounts,DC=contoso,DC=com"
La ventaja del script es que permite eliminar los permisos otorgados con aterioridad.
- .\ConfigureSplitPerms.ps1 -User CONTOSO\Joe -Identity "OU=Accounts,DC=contoso,DC=com" –RemovePerms
En mi laboratorio, he creado una cuenta denominada ExchangeDelegado y he utilizado el script ConfigureSplitPerms.ps1 para aplicar los permisos divididos en una Unidad Organizativa llamada Madrid.
- [PS] C:\Archivos de programa\Microsoft\Exchange Server\Scripts>.\ConfigureSplitPerms.ps1 -user Informatica64\ExchangeDelegado –Identity “OU=Madrid,DC=Informatica64,DC=hol"
Si el usuario ExchangeDelegado intenta crear un nuevo usuario, ya sea en la OU Madrid o en el Domino, obtendrá un error del sistema por permisos insuficientes.
En este ejemplo, se ha intentado crear el buzón TestUserOne en el contenedor predeterminado Users
Sin embargo, ExchangeDelegado si tiene permisos para crear un buzón a TestUserOne si previamente la cuenta ha sido creada por el Administrador del Dominio, siempre que esté en la OU Madrid.
Pero no podrá modificar otros atributos que no sean necesarios para la gestión del correo. (Se observa como los atributos de cuenta están deshabilitados)
Podéis encontrar más información de gestión de permisos divididos en:
Saludos y hasta pronto.
b83954f1-24f7-4446-b604-015a554162ea|1|5.0
Permisos divididos, seguridad