BPOS – Gestion des délégations en PowerShell

A l’image de tous les récents post, celui-ci parlera de BPOS et des scripts PowerShell [:)]

Aujourd’hui, nous allons voir comment gérer les délégations au sein d’une société.
Avant d’entrer dans les détails, il faut savoir qu’aucune commande à ce jour n’est capable de nous donner la liste des délégations mises en place sur notre Exchange Online (Oui, je sais, encore une option indispensable manquante [|-)] ). Mais rassurez vous, il en existe une pour créer des délégations et une autre pour les supprimer [:)]

Suppression de délégations

Nous allons commencer par la commande qui supprime les délégations. (oui, puisque comme dit plus haut il n’y a rien pour lister les délégations existantes, il est plus prudent de d’interdire l’accès pour tout remettre à plat puis d’autoriser).

La commande utilisée sera “Remove-MSOnlineMailPermission” et voilà comment procéder.
La commande de base pour retirer les accès ressemble à ceci :

Remove-MSOnlineMailPermission -Identity user@example.com -Credential $adminCredential -TrustedUser admin@example.com –RemoveFullAccess True –RemoveSendAs True

Identity représente le compte sur lequel la délégation doit être faite (pour faire simple, l’utilisateur)
TrustedUser représente le compte qui doit être autorisé à accéder au compte (pour faire simple, l’administrateur)
Credential $adminCredential sont les identifiants admin du compte BPOS saisis au préalable, sinon enlever ce paramètre pour que le script vous demande de les saisir
-RemoveFullAccess ou -RemoveSendAs sont les paramètres à mettre à True pour retirer les droits

En cas de grand ménage ou de changement de politique de la société, faute de pouvoir lister les délégations existantes (à moins d’avoir un suivi béton à l’aide d’un fichier à jour, ce qui est rare si plusieurs personnes gèrent l’exchange), il va falloir supprimer toutes les délégations.
Cette étape n’est pas vraiment compliquée, mais très longue à mettre en place. Vous pouvez être amené à supprimer toutes les délégations. Si vous avez par exemple 3 utilisateurs, il y a 3*2 combinaisons possibles donc 6 commandes à exécuter. De la même manière, si vous avez 12 utilisateurs, il y a 12*11 combinaisons possibles soit 132 commandes à exécuter…Imaginez 200 utilisateurs [:)]

Voilà donc comment réaliser ça plus simplement/rapidement.

Pour commencer, créer un fichier Excel sous la forme 

Identity,TrustedUser,GrantFullAccess,GrantSendAs
s.jobs@microsoft.com,b.gates@microsoft.com,True,True
s.jobs@microsoft.com,p.allen@microsoft.com, True,True

N’oubliez pas que la valeur “True” signifie que vous confirmez la suppression du droit.
Enregistrez votre fichier au format CSV (séparé par une virgule)

Maintenant passons au script

#Identifiants Admin BPOS
$powerUser = "j.marchetto@domain.com"
$powerPass = "XXX" 

$password = ConvertTo-SecureString $powerPass -AsPlainText -Force
$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $powerUser,$password 

#Import CSV et récupération des données
$import = import-csv C:\Users\j.marchetto\Desktop\RemoveRights.csv 

$import | ForEach {
        Remove-MSOnlineMailPermission -Credential $adminCredential
}

Ce script récupère toutes les lignes du fichier CSV et enlève les droits sur les boites unes à unes. Si les droits n’étaient pas en place, vous aurez une alerte à la fin de la commande :

Remove-MSOnlineMaiPermission

Ajout de délégations

De la même manière que pour la suppression de délégations, il est possible d’exécuter la commande manuellement pour un ajout ou de créer une boucle pour un ajout massif.

La commande utilisée sera “Add-MSOnlineMailPermission” et voilà comment procéder.

La commande de base pour autoriser les accès ressemble à ceci :

Add-MSOnlineMailPermission -Identity user@example.com -Credential $adminCredential -TrustedUser admin@example.com –GrantFullAccess True –GrantSendAs True

Identity représente le compte sur lequel la délégation doit être faite (pour faire simple, l’utilisateur)

TrustedUser représente le compte qui doit être autorisé à accéder au compte (pour faire simple, l’administrateur)

Credential $adminCredential sont les identifiants admin du compte BPOS saisis au préalable, sinon enlever ce paramètre pour que le script vous demande de les saisir

-GrantFullAccess ou -GrantSendAs sont les paramètres à mettre à True pour donner les droits

Comme précédemment, créez un fichier Excel sous la forme 

Identity,TrustedUser,GrantFullAccess,GrantSendAs

s.jobs@microsoft.com,b.gates@microsoft.com,True,True

s.jobs@microsoft.com,p.allen@microsoft.com, True,True

N’oubliez pas que la valeur “True” signifie que vous confirmez “l’autorisation de”.

Enregistrez votre fichier au format CSV (séparé par une virgule)

Pour ce qui est de la boucle, le code est presque identique :

#Identifiants Admin BPOS
$powerUser = "j.marchetto@domain.com"
$powerPass = "XXX" 

$password = ConvertTo-SecureString $powerPass -AsPlainText -Force
$adminCredential = New-Object -TypeName System.Management.Automation
.PSCredential -argumentlist $powerUser,$password #Import CSV et récupération des données $import = import-csv C:\Users\j.marchetto\Desktop\AddRights.csv $import | ForEach { Add-MSOnlineMailPermission -Credential $adminCredential }

Add-MSOnlineMaiPermission

Vous aurez peut être remarqué sur les pages descriptives des commandes qu’il y a aussi le paramètre “SendOnBehalfOf” de disponible. Et bien celui-ci ne fonctionne pas pour le moment, il faudra faire avec [:D]

(et le support BPOS va finir par me blacklister avec mes tickets [:P])

Voilà qui est fait pour les délégations. Pensez à maintenir un fichier à jour avec l’ensemble des délégations réalisées afin de ne pas avoir à tout supprimer pour tout recommencer…

Définir les permissions de délégation dans Exchange Online

Jusqu’à présent il fallait soumettre une requête de service afin de définir les permissions de délégation.

Avec l’arrivée des nouveaux outils de migration, les administrateurs de Microsoft Online Services peuvent désormais définir eux-mêmes ces permissions via PowerShell :

• GrantFullAccess : donne à un utilisateur Exchange Online les droits complets sur la boîte aux lettres d’un autre utilisateur.

• GrantSendAs: permet à un utilisateur Exchange Online d’envoyer des messages en tant qu’un autre utilisateur.

• GrantSendOnBehalfOf: permet à un utilisateur Exchange Online d’envoyer des messages de la part d’un autre utilisateur.

 

La commande PowerShell pour donner les droits d’accès à une boîte aux lettres est Add-MSOnlineMailPermission.

La syntaxe de cette commande est la suivante pour l’envoi en tant que (Send As) :

Add-MSOnlineMailPermission [-GrantSendAs] [-Identity] <texte> [-Credential <PSCredential>] -TrustedUser <texte> [-GrantFullAccess]

Et pour l’envoi de la part de (Send On Behalf Of) :

Add-MSOnlineMailPermission [-GrantSendOnBehalfOf] [-Identity] <texte> [-Credential <PSCredential>] -TrustedUser <texte> [-GrantFullAccess]

Par exemple, pour permettre à utilisateur1@msonline.com d’envoyer des messages en tant que utilisateur2@msonline.com la commande suivante sera utilisée :

PS> Add-MSOnlineMailPermission Identity utilisateur1@msonline.com -TrustedUser utilisateur2@msonline.com–GrantSendAs True

La commande PowerShell pour supprimer ces mêmes droits est Remove-MSOnlineMailPermission.

La syntaxe de cette commande est la suivante pour l’envoi en tant que (Send As) :

Remove-MSOnlineMailPermission [-RemoveSendAs] [-Identity] <texte> [-Credential <PSCredential>] [-RemoveSendAs] [-RemoveFullAccess] -TrustedUser <texte>

Et pour l’envoi de la part de (Send On Behalf Of)  :

Remove-MSOnlineMailPermission [-RemoveSendOnBehalfOf] [-Identity] <texte> [-Credential <PSCredential>] [-RemoveSendAs] [-RemoveFullAccess] -TrustedUser <texte>