Saltar al contenido
Microsoft scripts

Scripts de Purview

Tipos de información confidencial para México

Confirma qué detecta Microsoft Purview de fábrica para México. El único tipo integrado específico es CURP; RFC, INE y CLABE no están en la lista de Microsoft.

Antes de correrloLa lista de RFC, INE y CLABE se comparó con la documentación de Microsoft Learn de noviembre de 2026. Microsoft puede agregar tipos: si uno aparece con esos nombres en tu tenant, el reporte lo marca para que revises quién lo creó. Credit Card Number es global, no específico de México.

Ejemplo en México

Escuela privada en Puebla, 90 personas

Control escolar maneja CURP y RFC de alumnos y proveedores, y quieren saber qué detectaría una política DLP sin programar nada.

.\get-tipos-info-sensible-mexico.ps1 -RutaCsv .\tipos-mexico.csv

Confirman que CURP se detecta con un tipo integrado y que para RFC tendrían que crear uno propio. Con eso ajustan el alcance de su proyecto.

Cómo implementarlo

  1. Instala el módulo si no lo tienes: Install-Module ExchangeOnlineManagement -Scope CurrentUser.
  2. Ejecuta el script con -RutaCsv e inicia sesión en Security & Compliance PowerShell.
  3. Revisa la columna Alcance: específico de México, global, o sin tipo integrado documentado.
  4. Para RFC, INE o CLABE, planea un tipo de información confidencial personalizado antes de prometer que los detectas.
Ver el código completo de get-tipos-info-sensible-mexico.ps1
<#
.SYNOPSIS
    Lista los tipos de información confidencial de tu tenant que aplican a México.

.DESCRIPTION
    Compara Get-DlpSensitiveInformationType con lo que documenta Microsoft Learn. El único tipo integrado
    específico de México es Mexico Unique Population Registry Code (CURP). También marca RFC, INE y CLABE
    como sin tipo integrado documentado, para que no asumas que los detectas.
    Solo lectura: no cambia nada en el tenant.

.PARAMETER RutaCsv
    Ruta del CSV de salida. Si se omite, solo se muestra en pantalla.

.EXAMPLE
    .\get-tipos-info-sensible-mexico.ps1 -RutaCsv .\tipos-mexico.csv

.NOTES
    Permisos: ninguno de Graph; usa ExchangeOnlineManagement.
    Rol mínimo: rol View-Only DLP Compliance Management en un grupo de roles, o grupo Compliance Data Administrator.
    Licencia: Microsoft 365 E5/A5/G5/E3/A3/G3, Microsoft 365 Business Premium u Office 365 E5/A5/G5/E3/A3/G3.
    Licencia del código: MIT. Se entrega TAL CUAL, sin garantía. Pruébalo primero en un tenant de pruebas.
#>
[CmdletBinding()]
param(
    [string]$RutaCsv
)

$ErrorActionPreference = 'Stop'

if (-not (Get-Command Connect-IPPSSession -ErrorAction SilentlyContinue)) {
    throw 'Falta el módulo. Instálalo con: Install-Module ExchangeOnlineManagement -Scope CurrentUser'
}

$idCurp = 'e905ad4d-5a74-406d-bf36-b1efca798af4'  # Id de la definición publicada en Microsoft Learn.

Connect-IPPSSession -ShowBanner:$false
try {
    # Sin -Identity: un nombre inexistente devolvería todos los tipos en lugar de un error.
    $tipos = @(Get-DlpSensitiveInformationType)
} finally {
    Disconnect-ExchangeOnline -Confirm:$false
}

$filas = [System.Collections.Generic.List[object]]::new()
foreach ($t in $tipos) {
    $alcance = if ("$($t.Id)" -eq $idCurp -or $t.Name -eq 'Mexico Unique Population Registry Code (CURP)') { 'Específico de México' }
        elseif ($t.Name -eq 'Credit Card Number') { 'Global: marcas de tarjeta internacionales, no específico de México' }
        elseif ($t.Name -match 'M[eé]xic|\bCURP\b|\bRFC\b|\bINE\b|\bCLABE\b') { 'Coincide por nombre: revisa quién lo creó' }
    if ($alcance) {
        $filas.Add([pscustomobject]@{ Tipo = $t.Name; Alcance = $alcance; Publicador = $t.Publisher; ConfianzaRecomendada = $t.RecommendedConfidence; Id = $t.Id })
    }
}
if (-not ($filas | Where-Object Alcance -eq 'Específico de México')) {
    Write-Warning 'El tipo Mexico Unique Population Registry Code (CURP) no aparece en este tenant. Revísalo en el portal de Microsoft Purview.'
}
foreach ($dato in 'RFC', 'INE', 'CLABE') {
    if (-not ($filas | Where-Object Tipo -match "\b$dato\b")) {
        $filas.Add([pscustomobject]@{ Tipo = $dato; Alcance = 'Sin tipo integrado documentado: requiere un tipo personalizado'; Publicador = ''; ConfianzaRecomendada = ''; Id = '' })
    }
}

Write-Host "Tipos revisados en el tenant: $($tipos.Count). Filas del reporte: $($filas.Count)."
if ($RutaCsv) {
    # UTF-8 con BOM para que Excel en español muestre bien los acentos.
    $filas | Export-Csv -Path $RutaCsv -NoTypeInformation -Encoding utf8BOM
    Write-Host "CSV guardado en $RutaCsv"
} else {
    $filas | Format-Table -AutoSize
}

Relacionados