Leer en inglés

Compartir a través de


Más información sobre el uso de expresiones regulares (regex) en directivas de prevención de pérdida de datos

Una expresión regular, que normalmente se conoce como regex, es una secuencia de caracteres que define un patrón de búsqueda. Las expresiones regulares se usan principalmente para la coincidencia de patrones con cadenas y en la coincidencia de cadenas; por ejemplo, en las operaciones "buscar y reemplazar". Puede usar un regex en Prevención de pérdida de datos de Microsoft Purview (DLP) para definir patrones que le ayuden a identificar y clasificar datos confidenciales, o para ayudar a detectar patrones en el contenido. Los usos regex más comunes en DLP de Microsoft Purview son:

En este artículo se describen los problemas comunes que se producen al trabajar con expresiones regulares y cómo se pueden resolver.

Posible problema de validación al usar una expresión regular con DLP

  • Las unidades básicas del patrón, como caracteres literales, dígitos, espacios en blanco y signos de puntuación, se pueden representar por sí mismas o por símbolos especiales denominados metacaracteres, como \d para cualquier dígito, \s para cualquier espacio en blanco o \. para un punto literal.
  • Las unidades básicas, cuando se combinan con cuantificadores, especifican cuántas veces pueden o deben producirse en una coincidencia. Por ejemplo, * significa cero o más, + significa uno o más, ? significa cero o uno, y {n,m} significa entre ny m horas. Por ejemplo, \d+ significa uno o más dígitos, \s? significa espacio en blanco opcional y a{3,5} significa entre tres y cinco instancias del carácter literal a.
  • Un regex usa un aspecto positivo o un aspecto negativo. Un lookbehind se usa para comprobar si hay una coincidencia antes de una determinada posición en la cadena de entrada, sin incluir los caracteres reales de la coincidencia. Un lookbehind positivo se usa para hacer coincidir cuando el patrón lookbehind está presente, mientras que un lookbehind negativo se usa para coincidir cuando el patrón lookbehind no está presente.
  • Considere este ejemplo: (?<=^|\s|_). En este ejemplo se muestra una apariencia que incluye tres posibilidades:
    1. ^ afirma la posición. En este caso, requiere que la coincidencia de patrones comience al principio de la línea.
    2. \s detecta cualquier carácter de espacio en blanco como coincidencia.
    3. _ coincide con el carácter de subrayado literal ( _ ).
  • En el ejemplo anterior, las posibilidades 2 y 3 coincidirán con un solo carácter. Sin embargo, la posibilidad 1 solo indica dónde debe iniciarse la coincidencia. No generará resultados con respecto a ninguna coincidencia de caracteres.
  • Tome un segundo ejemplo, ^\d+$. Esta expresión regular solo detectará una cadena compuesta completamente de dígitos, de principio a fin.

Cómo obtener texto extraído

Una expresión regular coincide en el texto extraído del contenido, en lugar de en el propio contenido. Por lo tanto, incluso cuando el patrón parece estar en el contenido, es posible que no coincida al evaluar una directiva DLP.

Para asegurarse de capturar las coincidencias adecuadas, siga estos pasos:

  1. Use el cmdlet Test-TextExtraction para obtener el texto extraído, que constará de un flujo de cadenas.
  2. A continuación, use el texto extraído para buscar coincidencias con la expresión regular.

Por ejemplo:

PowerShell
$data = ([System.IO.File]::ReadAllBytes('<FilePath>'))
$tr = Test-TextExtraction -FileData $data
$tr.ExtractedResults.ExtractedStreamText | Format-List

Comprobación de la detección de tipos de información confidencial

Para comprobar la detección de tipos de información confidencial (SIT), es necesario tomar el texto que acabamos de extraer y, a continuación, ejecutar el cmdlet Test-DataClassification en él para comprobar la detección. Los resultados de la ejecución del cmdlet indicarán si hay coincidencias sit para el regex.

Por ejemplo:

PowerShell
$textStream = $tr.ExtractedResults.ExtractedStreamText | Out-String
$result = Test-DataClassification -TextToClassify $textStream
$result.ClassificationResults | Format-List

Ejemplo de uso de una expresión regular en una regla de directiva DLP

En este ejemplo, bloquearemos el correo electrónico que contiene cadenas a partir de ABC seguidas de un número.

Regex usado:^ABC\d

Ejemplo de regla DLP:New-DlpComplianceRule -Name "Rule_00" -Policy "Policy_00" -SubjectOrBodyMatchesPatterns "^ABC\d" - BlockAccess $True

Correo electrónico de ejemplo

correo electrónico de ejemplo para la coincidencia de regex

Aunque parece que el regex detectará una coincidencia con este elemento de correo, el texto extraído tiene el siguiente aspecto:

Regex Test Email ABC123

Como puede ver, el texto extraído comienza con el contenido de la línea de asunto del correo electrónico, en lugar de con el contenido en el cuerpo del correo electrónico. Sin embargo, la inclusión del carácter de aserción, ^, al principio del regex, requiere que la cadena ABC... esté al principio del texto extraído para que se detecte una coincidencia.

Para resolver este problema, puede cambiar la expresión regular a ABC\d.

Más información sobre las expresiones regulares