<# .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 }