Exportar listado de permisos de buzones de Enterprise Vault

Aquí dejo una consulta de SQL muy útil que exporta todos los permisos asignados a todos los buzones dentro de Enterprise Vault.

El flujo de la consulta es más o menos este:

  1. Chequea si existe la función para convertir SID de texto a binary. Si existe la elimina.
  2. Crea la función para convertir SID de texto a binary
  3. Saca el listado de permisos
  4. Elimina la función creada en el paso 2

Viene genial para saber hacer auditoría de los buzones o para saber si hay que notificar a alguien antes de eliminar un buzón cualquiera.

La consulta la saqué de este video que por alguna razón el autor no la puso en los comentarios.

Exportar permisos de un árbol de carpetas

Cualquier servidor de ficheros de un tamaño considerable siempre va a tener problemas de permisos. Esto normalmente es causado por permisos mal otorgados, por desconocimiento de los adminstradores o por no tener una politica de gestión de los permisos.

Una vez que los permisos están mal es muy difícil corregirlos, no porque sea técnicamente imposible, sino porque lleva mucho tiempo, ya que necesitamos saber qué permisos están definidos en cuáles carpetas y si estos se heredan a las carpetas inferiores no. Luego esta información hay que trasladársela al responsable de la carpeta para que defina los permisos correctos y poder corregirlos.

Este script es muy útil para esto, exporta en formato CSV los permisos de un árbol de carpetas. Para hacer el listado más fácil de leer sólo se exportan los permisos no heredados, es decir, si tienes 200 carpetas y sólo 3 de estas tienen permisos especiales definidos, sólo estas 3 apareceran en el reporte, ya que por lógica las demás carpetas heredan de su respectiva carpeta madre.


$allFolders = Get-ChildItem -Recurse "Ruta de la carpeta" | ? {$_.PSisContainer}

$output = @()

foreach($folder in $allFolders)
{
$notInherited = ($folder.FullName | Get-Acl).Access | where {$_.isinherited -eq $false}

if($notInherited -ne $null)
{
$all = ($folder.FullName | Get-Acl).access
foreach ($item in $all)
{
$outputObj = "" | Select FullName,IdentityReference,FileSystemRights

$outputObj.FullName = $folder.FullName
$outputObj.IdentityReference = $item.IdentityReference
$outputObj.FileSystemRights = $item.FileSystemRights

$output += $outputObj
}
}
}

$output | Export-Csv -NoTypeInformation -Encoding utf8 -Delimiter ";" Reporte.csv