저장된 커스텀 사전 감지기 만들기

콘텐츠에서 스캔하려는 민감한 단어나 구문이 수만 개 이하라면 일반 커스텀 사전 감지기로도 충분합니다. 이보다 많은 단어나 구문을 스캔하거나 단어나 구문이 자주 변경되는 경우 저장된 커스텀 사전을 만들어 보세요. 이를 통해 최대 수백만 개의 단어나 구문을 스캔할 수 있습니다.

이 주제에서는 저장된 커스텀 사전을 만들고 다시 빌드하는 방법을 설명하며 몇 가지 오류 시나리오를 다룹니다.

저장된 커스텀 사전 심층 분석

일반 사전 커스텀 infoType 또는 정규식 커스텀 infoType을 만들려면 검사 또는 익명화 스캔을 설정할 때 커스텀 infoType을 구성한 후 사용해야 한다는 사실을 잘 알고 계실 것입니다. 저장된 커스텀 사전은 각 커스텀 사전에 다음과 같은 두 가지 구성요소가 있다는 점에서 이러한 커스텀 infoType과 다릅니다.

  • 사용자가 만들고 정의하는 구문 목록. 이 목록은 Cloud Storage 내에 텍스트 파일로 또는 BigQuery 테이블에 열로 저장됩니다.
  • 구문 목록에 따라 Cloud DLP에서 생성되는 사전 파일. 사전 파일은 Cloud Storage에 저장되며 원본 구문 데이터, 그리고 검색 및 일치 확인을 보조하는 블룸 필터로 구성됩니다. 이러한 파일은 직접 편집할 수 없습니다.

저장된 새 커스텀 사전 만들기

이 섹션에서는 저장된 커스텀 사전을 만들고 수정한 후 다시 빌드하는 방법을 설명합니다.

구문 목록 만들기

저장된 커스텀 사전을 만들기 위한 첫 단계는 단어 및 구문 목록을 만드는 것입니다. 다음 두 가지 중에서 선택할 수 있습니다.

  • 각 단어 또는 구문이 독립된 줄로 저장된 텍스트 파일을 Cloud Storage 버킷에 넣습니다.
  • BigQuery 테이블의 한 열을 구문 컨테이너로 지정합니다. 열에서 각 구문에 자체 행을 부여합니다. 모든 사전 단어 및 구문이 하나의 열에 있다는 조건 하에 기존 BigQuery 테이블을 사용할 수 있습니다.

너무 커서 Cloud DLP가 처리할 수 없는 용어 목록은 조합할 수 없습니다. 오류 메시지가 표시되는 경우 이 주제 뒷부분에 있는 '오류 해결'을 참조하세요.

사전 만들기

용어 목록을 만든 다음 Cloud DLP를 사용하여 사전을 만듭니다.

Console

  1. Cloud Storage 버킷에서 사전의 새 폴더를 만듭니다. 개발자가 지정한 위치에 Cloud DLP가 사전 파일이 포함된 폴더를 만듭니다.
  2. Cloud Console에서 Cloud DLP를 엽니다.

    Cloud DLP UI로 이동

  3. 만들기 메뉴에서 저장된 infoType을 선택합니다.

    만들기 메뉴 > 저장된 infoType이 선택된 DLP UI의 스크린샷

    또는 다음 버튼을 클릭합니다.

    새 infoType 만들기

infoType 만들기 페이지에는 다음 섹션이 포함되어 있습니다.

infoType 구성

infoType 구성 섹션에서는 저장된 커스텀 사전 infoType의 이름을 지정하고 설명합니다.

  • InfoType ID 필드에 커스텀 infoType의 식별자를 입력합니다. 이는 검사 및 익명화 작업을 구성할 때 infoType을 참조하는 데 사용됩니다. 이름에 문자, 숫자, 하이픈, 밑줄을 사용할 수 있습니다.
  • InfoType 표시 이름 필드에 커스텀 infoType의 이름을 입력합니다. 이름에 공백과 구두점을 사용할 수 있습니다.
  • 설명 필드에 커스텀 infoType이 감지하는 항목에 대한 설명을 입력합니다.

데이터 위치 선택

데이터 위치 선택 섹션에서는 저장된 커스텀 사전을 만드는 데 사용할 단어 및 구문 목록이 있는 위치를 지정합니다.

  • 검색할 단어와 구문이 BigQuery 테이블에 나열되는 경우 BigQuery를 선택합니다. 이 테이블에서 최대 1개의 열을 지정할 수 있습니다. 지정된 필드에 프로젝트 ID, 데이터세트 ID, 테이블 ID를 입력합니다. 필드 이름 필드에 열 식별자를 입력합니다.
  • 검색할 단어와 구문이 Cloud Storage의 텍스트 파일에 나열되는 경우 Google Cloud Storage를 선택합니다. 지정된 필드에 파일 경로를 입력합니다.

마지막 섹션에서는 Cloud DLP가 압축된 커스텀 사전을 저장할 위치를 지정합니다.

출력 버킷 또는 폴더 필드에 사전을 저장할 경로를 입력합니다.

만들기를 클릭하여 저장된 커스텀 사전을 만듭니다. infoType 세부정보 화면이 표시됩니다.

상태가 '준비됨'이면 저장된 커스텀 사전이 생성되었고 새로운 커스텀 infoType을 사용할 준비가 된 것입니다.

프로토콜

  1. Cloud Storage 버킷에서 사전의 새 폴더를 만듭니다. 개발자가 지정한 위치에 Cloud DLP가 사전 파일이 포함된 폴더를 만듭니다.
  2. Cloud DLP API의 storedInfoTypes.create 메서드를 사용하여 사전을 만듭니다. create 메서드에는 다음 매개변수가 사용됩니다.
    • 저장된 infoType의 구성이 포함된 StoredInfoTypeConfig 객체. 포함되는 요소는 다음과 같습니다.
      • description: 사전에 대한 설명
      • displayName: 사전에 지정할 이름
      • LargeCustomDictionaryConfig : 저장된 커스텀 사전의 구성을 포함합니다. 포함되는 요소는 다음과 같습니다.
        • BigQueryField: 용어 목록이 BigQuery에 저장되는 경우 지정됩니다. 목록이 저장된 테이블에 대한 참조, 그리고 각 사전 구문이 들어 있는 필드가 포함됩니다.
        • CloudStorageFileSet: 용어 목록이 Cloud Storage에 저장되는 경우 지정됩니다. Cloud Storage의 소스 위치에 대한 URL이 "gs://[PATH_TO_GS]" 형식으로 포함됩니다. 와일드카드가 지원됩니다.
        • outputPath: 생성된 사전을 저장할 Cloud Storage 버킷의 위치 경로입니다.
    • storedInfoTypeId: 저장된 커스텀 infoType의 식별자. 저장된 커스텀 infoType을 다시 빌드 또는 삭제하거나 검사 또는 익명화 작업에서 사용할 때 이 값을 참조합니다. 이 필드를 비워 두면 자동으로 식별자가 생성됩니다.

다음은 storedInfoTypes.create 메서드로 전송될 때 저장된 새 커스텀 사전을 만드는 JSON 예시입니다. 이 예시에서는 커밋에 사용된 모든 GitHub 사용자 이름이 포함되어 있고 공개적으로 사용 가능한 BigQuery 데이터베이스(bigquery-public-data.samples.github_nested)에 저장된 용어 목록에서 저장된 커스텀 사전을 만들도록 Cloud DLP에 명령했습니다. 생성되는 사전의 출력 경로는 dlptesting이라는 Cloud Storage 버킷으로 설정되며 저장된 커스텀 사전에는 github-usernames라는 이름이 지정되었습니다.

JSON 입력:

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

{
  "config":{
    "displayName":"GitHub usernames",
    "description":"Dictionary of github usernames used in commits",
    "largeCustomDictionary":{
      "outputPath":{
        "path":"gs://[PATH_TO_GS]"
      },
      "bigQueryField":{
        "table":{
          "datasetId":"samples",
          "projectId":"bigquery-public-data",
          "tableId":"github_nested"
        }
      }
    }
  },
  "storedInfoTypeId":"github-usernames"
}

사전 다시 빌드

사전의 용어 또는 구문을 추가하거나 삭제하려면 먼저 소스 용어 목록을 업데이트한 다음 Cloud DLP에 사전을 다시 빌드하도록 명령합니다.

  1. Cloud Storage 또는 BigQuery의 기존 소스 용어 목록을 업데이트합니다. 필요에 따라 용어 또는 구문을 추가, 삭제, 변경합니다.
  2. Cloud Console 또는 Cloud DLP에서 storedInfoTypes.patch 메서드를 통해 사전을 '다시 빌드'하여 새 버전을 만듭니다. 이렇게 하면 이전 사전을 대체하는 새 버전의 사전이 생성됩니다.

저장된 커스텀 사전을 다시 빌드하는 방법은 다음과 같습니다.

Console

  1. Cloud Storage 또는 BigQuery에서 용어 목록을 업데이트하고 저장합니다.
  2. Cloud Console에서 Cloud DLP를 엽니다.
  3. 구성 탭을 클릭한 다음 InfoType을 클릭합니다.
  4. infoType 화면에서 커스텀 탭을 클릭합니다. 저장된 커스텀 infoType이 여기에 표시됩니다.

    커스텀 infoType 목록으로 이동

  5. 업데이트하려는 infoType이 저장된 행을 클릭합니다.

  6. infoType 세부정보 화면에서 데이터 다시 빌드를 클릭합니다.

Cloud DLP는 저장된 커스텀 사전을 소스 용어 목록의 변경사항으로 다시 빌드합니다. 커스텀 infoType의 상태가 '준비됨'이면 사용할 수 있습니다. 커스텀 infoType을 사용하는 모든 템플릿 또는 작업 트리거는 자동으로 다시 빌드 된 커스텀 infoType을 사용합니다.

프로토콜

저장된 커스텀 사전에서 새 용어를 추가하거나 기존 용어를 삭제 또는 변경하려고만 하는 경우 storedInfoTypes.patch 메서드만 호출하면 사전을 다시 빌드할 수 있습니다. 조직 또는 프로젝트와 다시 빌드할 저장된 커스텀 infoType의 리소스 이름으로 name 필드를 채워야 합니다. 저장된 infoType의 이름은 저장된 infoType을 만들 때 storedInfoTypeId 매개변수에 입력했습니다. 다시 빌드하려는 저장된 커스텀 infoType의 식별자가 기억나지 않는 경우 storedInfoTypes.list 메서드를 호출하여 현재 저장된 모든 infoType 목록을 확인합니다.

다음 패턴은 name 필드의 유효한 항목을 나타냅니다.

  • organizations/[ORG_ID]/storedInfoTypes/[STORED_INFOTYPE_ID]
  • projects/[PROJECT_ID]/storedInfoTypes/[STORED_INFOTYPE_ID]

저장된 커스텀 사전을 새 버전으로 다시 빌드하면 저장된 커스텀 사전의 이전 버전이 삭제됩니다. Cloud DLP가 저장된 커스텀 사전을 업데이트하는 동안 사전의 상태는 '대기 중'입니다. 사전의 새 버전 상태가 대기 중이면 사전의 이전 버전이 여전히 존재하는 것입니다. 사전이 다시 빌드되는 동안 실행하는 모든 스캔은 이전 버전의 사전을 사용하여 실행됩니다.

기존 저장된 커스텀 사전의 소스 용어 목록은 BigQuery 테이블에 저장된 목록에서 Cloud Storage 버킷에 저장된 목록으로, 또는 그 반대로 변경할 수 있습니다. storedInfoTypes.patch 메서드를 사용하되, CloudStorageFileSet 객체를 이전에 BigQueryField 객체에서 사용한 LargeCustomDictionaryConfig에 포함하거나 그 반대로 합니다. 또한 updateMask 매개변수도 지정하여 이 매개변수를 다시 빌드한 저장된 커스텀 사전 매개변수로 설정합니다(FieldMask 형식). 예를 들어 다음 JSON은 storedInfoTypes.patch 메서드로 전송되면 updateMask 매개변수에서 Cloud Storage 경로의 URL이 업데이트되었음을 명시합니다(large_custom_dictionary.cloud_storage_file_set.url).

PATCH https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/storedInfoTypes/github-usernames?key={YOUR_API_KEY}

{
  "config":{
    "largeCustomDictionary":{
      "cloudStorageFileSet":{
        "url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
      }
    }
  },
  "updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}

저장된 커스텀 사전 감지기를 사용하여 콘텐츠 스캔

저장된 커스텀 사전 감지기를 사용한 콘텐츠 스캔은 다른 커스텀 infoType 감지기를 사용한 콘텐츠 스캔과 비슷합니다.

Console

새 작업, 작업 트리거 또는 템플릿을 만들 때 커스텀 사전 감지기를 사용할 수 있습니다. 작업 또는 템플릿 만들기 워크플로의 감지 구성 섹션에서 커스텀 infoType 하위 섹션에 저장된 커스텀 사전 infoType을 지정할 수 있습니다.

  1. 커스텀 infoType 추가를 클릭한 다음 저장된 infoType을 클릭합니다.

    커스텀 infoType 섹션에서 DLP UI의 작업 트리거 만들기 워크플로 스크린샷

  2. 커스텀 infoType 추가 섹션에서 InfoType 필드에 infoType 이름을 입력합니다. 문자, 숫자, 밑줄을 사용할 수 있습니다.

  3. 저장된 infoType 이름 필드를 클릭하면 다음과 같이 저장된 커스텀 사전 infoType의 경로가 있는 메뉴가 해당 필드 아래에 표시됩니다.

    커스텀 infoType 추가 섹션에서 DLP UI의 작업 트리거 만들기 워크플로 스크린샷

  4. 저장한 커스텀 사전을 선택한 다음 완료를 클릭합니다.

추가한 커스텀 infoType은 다음 스크린샷과 같이 표시됩니다. 원하는 경우 커스텀 infoType을 추가할 수 있습니다.

커스텀 infoType이 추가된 DLP UI의 작업 트리거 만들기 워크플로 스크린샷

이제 작업, 작업 트리거 또는 템플릿 만들기 프로세스를 계속 진행할 수 있습니다.

프로토콜

다음 JSON은 content.inspect 메서드로 전송되면 지정된 저장된 커스텀 사전 감지기를 사용하여 주어진 텍스트 스니펫을 스캔합니다. 저장된 커스텀 사전을 포함한 모든 커스텀 infoType에는 기본 제공 infoType 또는 다른 커스텀 infoType과 충돌하지 않는 이름이 있어야 하므로 infoType 매개변수가 필요합니다. storedType 매개변수에는 저장된 커스텀 infoType의 전체 리소스 경로가 포함됩니다.

JSON 입력:

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

{
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"GITHUB_LOGINS"
        },
        "storedType":{
          "name":"projects/[PROJECT_ID]/storedInfoTypes/github-logins"
        }
      }
    ]
  },
  "item":{
    "value":"The commit was made by githubuser."
  }
}

오류 해결

저장된 커스텀 사전을 만들려고 할 때 Cloud DLP가 Cloud Storage 기반 용어 목록에서 사전을 만들 수 없다는 오류를 표시하는 경우 다음과 같은 몇 가지 원인이있을 수 있습니다.

  • 저장된 커스텀 사전의 상한에 도달했습니다. 문제에 따라 몇 가지 해결 방법이 있습니다.
    • Cloud Storage에서 하나의 저장된 커스텀 사전에 대한 상한에 도달한 경우(200MB) 파일을 여러 파일로 분할하는 방법을 사용할 수 있습니다. 파일의 총 크기가 Cloud Storage의 모든 저장된 커스텀 사전 파일의 최대 합계 크기(1GB)를 초과하지 않는 한 분할된 파일을 사용하여 하나의 커스텀 사전을 조합할 수 있습니다.
    • BigQuery의 한도는 Cloud Storage와 다릅니다. 용어를 BigQuery 테이블로 이동하되 BigQuery의 커스텀 사전 열 크기(1GB)와 최대 행 수(5,000,000)를 모두 고려하세요.
    • 용어 목록 파일이 커스텀 사전 소스 용어 목록에 적용되는 모든 한도를 초과하는 경우 Cloud Storage에서 용어 목록 파일을 여러 파일로 분할하고, 각 파일에 대한 사전을 만든 다음, 생성된 각 사전에 대한 별도의 스캔 작업을 만들어야 합니다.
  • 최소 하나의 글자 또는 숫자가 포함되지 않은 용어가 하나 이상 있습니다. Cloud DLP는 공백 또는 기호로만 구성된 용어를 스캔할 수 없습니다. 최소 하나의 글자 또는 숫자가 있어야 합니다. 용어 목록에 문제가 되는 용어가 포함되어 있는지 확인하고, 있는 경우 수정하거나 삭제하세요.
  • 용어 목록에 '구성요소'가 너무 많은 구문이 포함되어 있습니다. 이 맥락에서 구성요소란 글자만, 숫자만 또는 글자도 숫자도 아닌 문자(공백 또는 기호)만 포함된 연속된 시퀀스를 의미합니다. 용어 목록에 문제가 되는 용어가 포함되어 있는지 확인하고, 있는 경우 수정하거나 삭제하세요.
  • DLP 서비스 계정에 사전 파일 저장을 위한 사전 소스 데이터 또는 Cloud Storage 버킷 액세스 권한이 없습니다. 이 문제를 해결하려면 DLP 서비스 계정에 Cloud Storage 관리자 역할 또는 BigQuery dataOwner 및 jobUser 역할을 부여하세요.

API 개요

저장된 커스텀 사전은 그 크기와 복잡성으로 인해 저장된 infoType으로 간주됩니다. 저장된 커스텀 사전은 현재 유일한 저장된 infoType 유형입니다.

저장된 infoType은 Cloud DLP에서 StoredInfoType 객체로 표시됩니다. 여기에는 다음과 같은 관련 객체가 함께 사용됩니다.

  • StoredInfoTypeConfig에는 이름 및 설명과 같은 세부정보를 포함한 저장된 infoType의 구성이 포함됩니다.
  • StoredInfoTypeVersion에는 생성 날짜 및 시간, 현재 버전의 저장된 infoType이 생성될 때 마지막으로 발생한 5개 오류 메시지와 같은 저장된 infoType에 대한 추가 정보가 포함됩니다.
  • StoredInfoTypeState에는 저장된 infoType의 가장 최신 버전 및 모든 보류 중인 버전의 상태가 포함됩니다. 상태 정보에는 저장된 infoType이 다시 빌드되는 중인지, 사용할 준비가 되었는지, 잘못되었는지 여부가 포함됩니다.

저장된 infoType을 생성, 편집, 삭제하려면 다음 메서드를 사용합니다.

  • storedInfoTypes.create: 지정한 StoredInfoTypeConfig로 새 저장된 infoType을 만듭니다.
  • storedInfoTypes.patch: 지정된 새 StoredInfoTypeConfig로 저장된 infoType을 다시 빌드하거나, 지정되지 않는 경우 기존 StoredInfoTypeConfig를 사용하여 새 버전의 저장된 infoType을 만듭니다.
  • storedInfoTypes.get : 지정된 저장된 infoType의 StoredInfoTypeConfig 및 대기 중인 버전을 검색합니다.
  • storedInfoTypes.list: 현재 저장된 infoType을 모두 나열합니다.
  • storedInfoTypes.delete: 지정된 저장된 infoType을 삭제합니다.

여기에 설명된 저장된 infoType API 외에, 다음 객체가 저장된 커스텀 사전에 특별히 적용됩니다.

  • LargeCustomDictionaryConfig는 다음 두 가지를 모두 지정합니다.
    • Cloud Storage 또는 BigQuery 내에서 구문 목록이 저장된 위치
    • 생성된 사전 파일을 저장할 Cloud Storage 내의 위치

사전 일치 세부 사항

다음은 Cloud DLP에서 사전 단어 및 구문의 일치를 판단하는 방법에 관한 지침입니다. 이러한 항목은 일반 및 저장된 커스텀 사전에 모두 적용됩니다.

  • 사전 단어는 대소문자를 구분하지 않습니다. 사전에 Abby가 포함된 경우 abby, ABBY, Abby 등과 일치합니다.
  • 유니코드 기본 다국어 평면에 포함된 글자 및 숫자를 제외한 사전 또는 스캔할 콘텐츠의 모든 문자는 일치 항목을 스캔할 때 공백으로 간주됩니다. 사전에서 Abby Abernathy를 스캔하는 경우 abby abernathy, Abby, Abernathy, Abby (ABERNATHY) 등과 일치합니다.
  • 일치 항목의 주변 문자는 단어 내의 인접 문자와 유형(문자 또는 숫자)이 달라야 합니다. 사전에서 Abi를 스캔하는 경우 Abi904의 처음 3개 문자는 일치하지만 Abigail은 일치하지 않습니다.
  • 글자 또는 숫자가 아닌 문자가 많이 포함된 사전 단어의 경우 이러한 문자가 공백으로 간주되므로 예상치 못한 검색 결과로 이어질 수 있습니다.