
Necesito usar los siguientes cmdlets del módulo ExchangeOnline Powershell con una conexión desatendida.
- Obtener mensaje de cuarentena
- Vista previa-Mensaje de cuarentena
- Mensaje de liberación de cuarentena
- Mensaje de cuarentena de exportación
Siguiendo esta primera documentaciónhttps://learn.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps, Creé un registro de aplicación de Azure con un certificado autofirmado, asigné el permiso de API "Exchange.ManageAsApp" y luego otorgué el consentimiento.
Luego creé un grupo de seguridad de Azure y agregué mi aplicación como miembro de este grupo.
Luego creé un rol personalizado en el portal de Microsoft 365 Defender siguiendo esta documentación: https://learn.microsoft.com/en-us/defender-for-identity/role-groups
En este rol, agregué el siguiente permiso personalizado:
- Cuarentena de correo electrónico (administrar)
- Enviar acciones avanzadas por correo electrónico (administrar) y solo lectura paraDatos sin procesar (correo electrónico y colaboración)
- Y por supuesto, asigné mi grupo creado en el paso 2 a este nuevo rol.
Todo esto me permite usar los primeros 2 cmdlets sin ningún problema pero no puedo acceder alMensaje de cuarentena de exportaciónyMensaje de liberación de cuarentena.
Podemos enumerar los permisos necesarios para este cmdlet a través de esos comandos (desde allí:https://learn.microsoft.com/en-us/powershell/exchange/find-exchange-cmdlet-permissions?view=exchange-ps)
PS > $Perms = Get-ManagementRole -Cmdlet Export-QuarantineMessage
PS > $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
Role RoleAssigneeType RoleAssigneeName
---- ---------------- ----------------
Security Admin RoleGroup Organization Management
Security Admin RoleGroup SecurityAdmins_782500194
Role RoleAssigneeType RoleAssigneeName
---- ---------------- ----------------
Transport Hygiene RoleGroup Hygiene Management
Transport Hygiene RoleGroup Organization Management
Probé este último comando:
PS > Add-RoleGroupMember "Hygiene Management" -Member <name of the application created at step 1>
Puedo ver el miembro de mi aplicación si ejecuto:
PS > Get-RoleGroupMember "Hygiene Management"
Pero todavía no tengo acceso alMensaje de cuarentena de exportaciónyMensaje de liberación de cuarentenacmdlets.
ACTUALIZAR
Crear una función de Exchange personalizada con "Higiene del transporte" + "Administrador de seguridad"
PD > $AadApp = Get-AzureADServicePrincipal -SearchString ""
PS > New-ServicePrincipal -AppId $AadApp.AppId -ServiceId $AadApp.ObjectId -DisplayName "ServicePrincipal para mi aplicación"
PS > $SP = Get-ServicePrincipal -Identity "ServicePrincipal para mi aplicación"
PS > Add-RoleGroupMember -Identity "<rol creado en el paso 1>" -Member $SP.Identity
Sin suerte.
ACTUALIZAR Cambiar mi función de Exchange personalizada solo con: -Importación y exportación de buzones de correo -Búsqueda de buzones de correo -Aplicación de búsqueda de buzones -Seguimiento de mensajes -Higiene del transporte -Configuración de solo visualización -Destinatarios de solo visualización parece funcionar. Dejaré pasar el fin de semana para ver si este no es otro cambio que lleva tiempo replicar en el lado de Microsoft.