일치 가능성 맞춤설정

핫워드 규칙을 사용하면 강력한 컨텍스트 규칙으로 기본 제공 및 커스텀 infoType 감지기를 더 확장할 수 있습니다. 핫워드 규칙을 사용하여 기존 infoType 감지기에 정규식 및 근접 감지기를 추가하고 일치 가능성 값을 적절히 조정할 수 있습니다. 핫워드 규칙은 규칙 세트에 지정된 검사 규칙의 한 유형입니다. 각 규칙 세트는 커스텀 또는 기본 제공 infoType 집합에 적용됩니다.

핫워드 규칙 심층 분석

infoType 감지기에는 핫워드 규칙이 없거나 여러 개일 수 있습니다. 각 핫워드 규칙(HotwordRule 객체)은 검사 규칙(InspectionRule 객체) 내에서 정의합니다. 각 검사 규칙은 InspectConfig 객체에 포함된 InspectionRuleSet 객체 내에 지정됩니다.

"inspectionRules" 배열 내의 단일 핫워드 규칙은 JSON 객체로서 그 형태는 다음과 같습니다.

"inspectionRules":[
  {
    "hotwordRule":{
      "hotwordRegex":{
        "pattern":"[REGEX_PATTERN]"
      },
      "proximity":{
        "windowAfter":"[NUM_CHARS_TO_CONSIDER_AFTER_FINDING]",
        "windowBefore":"[NUM_CHARS_TO_CONSIDER_BEFORE_FINDING]"
      }
      "likelihoodAdjustment":{
        "fixedLikelihood":"[LIKELIHOOD_VALUE]"
             -- OR --
        "relativeLikelihood":"[LIKELIHOOD_ADJUSTMENT]"
      },
    }
  },
  ...
]

각 핫워드 규칙에는 다음과 같은 세 가지 구성요소가 있습니다.

  • "hotwordRegex": 핫워드의 자격을 정의하는 정규식 패턴(Regex 객체)
  • "proximity": 그 안에 전체 핫워드가 포함되어야 하는 결과의 근접도. 이 필드에는 다음 두 가지 값으로 구성되는 Proximity 객체가 포함됩니다.

    • "windowBefore": 고려할 결과 앞의 문자 수
    • "windowAfter": 고려할 결과 뒤의 문자 수
  • "likelihoodAdjustment": 결과의 가능성 조정. 이 필드에는 다음 두 값 중 하나로 설정 가능한 LikelihoodAdjustment 객체가 포함됩니다.

    • "fixedLikelihood": 결과를 설정할 고정된 Likelihood
    • "relativeLikelihood": 결과의 가능성을 높이거나 낮출 수준을 나타내는 수. 예를 들어 감지 규칙이 없고 relativeLikelihood가 1인 상태에서 결과가 POSSIBLE인 경우 결과는 LIKELY로 업그레이드되며, 값이 -1이면 UNLIKELY로 다운그레이드됩니다. 가능성은 VERY_UNLIKELY 아래로 내려가거나 VERY_LIKELY를 초과할 수 없으므로 기본 가능성이 VERY_LIKELY일 때 1 조정을 적용한 다음 -1 조정을 적용하면 최종 가능성은 LIKELY가 됩니다.

핫워드 예시: 의료 레코드 번호 대조

###-#-##### 형식의 의료 레코드 번호와 같은 커스텀 infoType을 검색하고 Cloud DLP의 검색 결과 항목에서 이 번호 앞에(뒤가 아님) 핫워드 'MRN'이 있을 때 일치 가능성을 높인다고 가정해 보겠습니다. 따라서 다음과 같습니다.

  • 123-4-56789의 일치 가능성은 POSSIBLE입니다.
  • MRN 123-4-56789의 일치 가능성은 VERY_LIKELY입니다.

아래 JSON 예시에서는 정규 표현식 infoType 감지기에 설명된 대로 정의되지만 적절한 핫워드 규칙이 추가된 커스텀 정규 표현식을 보여줍니다.

JSON 입력:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:inspect?key={YOUR_API_KEY}

{
  "item":{
    "value":"Patient's MRN 444-5-22222 and just a number 333-2-33333"
  },
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"C_MRN"
        },
        "regex":{
          "pattern":"[0-9]{3}-[0-9]{1}-[0-9]{5}"
        },
        "likelihood":"POSSIBLE",
      }
    ],
    "ruleSet":[
        {
        "infoTypes": [{"name" : "C_MRN"}],
        "rules":[
          {
            "hotwordRule":{
              "hotwordRegex":{
                "pattern":"(?i)(mrn|medical)(?-i)"
              },
              "likelihoodAdjustment":{
                "fixedLikelihood":"VERY_LIKELY"
              },
              "proximity":{
                "windowBefore":10
              }
            }
          }
        ]
      }
    ]
  }
}

JSON 출력(축약형):

{
  "result": {
    "findings": [
      {
        "infoType": {
          "name": "C_MRN"
        },
        "likelihood": "VERY_LIKELY",
        "location": {
          "byteRange": {
            "start": "14",
            "end": "25"
          },
          "codepointRange": { ... }
        }
      },
      {
        "infoType": {
          "name": "C_MRN"
        },
        "likelihood": "POSSIBLE",
          "byteRange": {
            "start": "44",
            "end": "55"
          },
          "codepointRange": { ... }
        }
      }
    ]
  }
}

이 출력은 C_MRN 이름을 지정한 커스텀 infoType 감지기와 커스텀 정규식을 사용하여 Cloud DLP가 의료 레코드 번호를 올바르게 식별한 것으로 나타납니다. 또한 핫워드 규칙에 사용된 컨텍스트 일치로 인해 Cloud DLP가 구성된 VERY_LIKELY 확신도를 첫 번째 결과(MRN 바로 옆)에 할당했습니다. 두 번째 결과는 컨텍스트가 없었기 때문에 확신도가 POSSIBLE로 유지되었습니다.