Powershell: Autoriser ActiveSync pour un groupe d’utilisateurs AD via une tache planifiée
Nous allons décrire dans ce post comment restreindre l’accès mobile à votre messagerie Exchange 2010 à certains utilisateurs de votre entreprise. Seuls les utilisateurs faisant partie du groupe Active Directory LDAP389-ACTIVESYNC pourront utiliser le protocole ActiveSync et paramétrer leur compte de messagerie sur leur Smartphone. Les autorisations ActiveSync seront mises en place grâce à un script PowerShell lancé par une tâche planifiée.
Le groupe LDAP389-ACTIVESYNC est composé de deux groupes, un pour les utilisateurs situés à Paris et un autre pour ceux situés à Londres, la gestion de ces groupes est déléguée aux équipes informatiques de chaque site:
Pour récupérer les boîte aux lettres des utilisateurs autorisés à utiliser ActiveSync nous allons donc parcourir de manière récursive les utilisateurs membres du groupe LDAP389-ACTIVESYNC:
$groupDN = "CN=LDAP389-ACTIVESYNC,OU=Groups,OU=HQ,DC=ldap389,DC=local" $members = Get-ADGroupMember -Identity $groupDN -Recursive | Get-ADUser -Properties mail |
Nous allons aussi récupérer les comptes de messagerie pour lesquels ActiveSync est autorisé:
$allcas = get-mailbox -ResultSize:unlimited | Get-CASMailbox $users= $allcas | where-object {$_.ActiveSyncEnabled -eq $true} |
Notre script va dans un premier temps parcourir les utilisateurs autorisés pour ActiveSync ($users), si un de ces utilisateurs n’est pas membre du groupe LDAP389-ACTIVESYNC alors ActiveSync lui est interdit grâce au Cmdlet Set-CASMailbox et le paramètre ActiveSyncEnabled.
Dans un second temps nous allons parcourir les membres du groupe LDAP389-ACTIVESYNC ($members), si pour un de ces utilisateurs ActiveSync n’est pas activé alors nous activons la fonctionalité, toujours avec le cmdlet Set-CASMailbox.
Pour télécharger le script complet c’est ici:
Nous allons ensuite paramétrer, notre tâche planifiée, celle-ci sera lancée par un compte de service, ce compte devra avoir les droits suivants:
- Lecture sur l’AD.
- Administrateur local du serveur sur lequel sera lancé la tâche planifiée.
- Avoir un role RBAC dédié, ceci afin de restreindre les droits de ce compte de service au niveau Exchange.
Nous allons dédailler comment créer le rôle “Disable ActiveSync”, il est tout d’abord copié à partir du rôle “Mail Recipients”:
New-ManagementRole -Parent "Mail Recipients" -Name "Disable ActiveSync" |
Notre script ne lance que les cmdlets: Get-Mailbox, Get-CASMailbox, Set-CASMailbox. Nous retirons donc tous les autres cmdlets au rôle “Disable ActiveSync”:
Get-ManagementRoleEntry "Disable ActiveSync\*" | Where { (($_.Name -ne "Get-Mailbox") -and ($_.Name -ne "Set-CASMailbox") -and ($_.Name -ne "Get-CASMailbox")) } | Remove-ManagementRoleEntry |
On enlève tous les paramètres autorisés au cmdlet Set-casmailbox pour le role “Disable ActiveSync”, sauf ceux utilisés par nôtre script:
Set-ManagementRoleEntry "Disable ActiveSync\Set-CASMailbox" -Parameters Identity,ActiveSyncEnabled,whatif,confirm |
On créé un groupe “EnableMobileAccess” et on lui assigne le rôle “Disable ActiveSync”.
New-RoleGroup -Name EnableMobileAccess New-ManagementRoleAssignment -Name ManageMobileAccess -Role "Disable ActiveSync" -SecurityGroup EnableMobileAccess |
Il nous reste ensuite à ajouter notre compte de service au groupe “EnableMobileAccess” et paramétrer notre tâche planifiée Exchange, pour que celle ci tourne avec le compte de service. La connexion au PowerShell Exhange étant incluse dans le script.
La tâche planifiée est paramétrée et se lance avec un compte de service qui n’a que les droits nécessaires à réaliser l’opération.
This post is also available in: Anglais