Google Cloud 데이터 손실 방지 확장 프로그램

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

버전: 1.3.0

이 확장 프로그램을 사용하면 콘텐츠 및 이미지에서 민감한 정보를 가릴 수 있습니다. 예를 들어 신용카드 번호, 이름, 주민등록번호를 수정할 수 있습니다.

기본 요건

이 콘텐츠는 이 확장 프로그램을 구성하고 사용하기 위한 참조를 제공합니다. Extension콜아웃 정책을 사용하여 API 프록시의 확장 프로그램을 사용하려면 다음 요건을 충족해야 합니다.

  1. 프로젝트에서 Google Cloud DLP API를 사용 설정합니다.

  2. 확장 프로그램에 원하는 액세스 수준에 대한 권한을 부여합니다.

  3. GCP 콘솔을 사용하여 서비스 계정의 키를 생성합니다.

  4. 구성 참조를 사용하여 확장 프로그램을 추가 및 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.

Cloud Data Loss Prevention (DLP) 정보

Cloud Data Loss Prevention (DLP)은 텍스트, 이미지, 기타 데이터를 검사하여 민감한 정보를 식별하고 관리하기 위한 API입니다.

자세한 내용은 DLP 개요를 참고하세요. 이 확장 프로그램이 노출하는 API에 대한 자세한 내용은 Cloud Data Loss Prevention (DLP) API를 참조하세요.

샘플

다음 예시는 Extension콜아웃 정책을 사용하여 Cloud DLP 확장 프로그램 작업 지원을 구성하는 방법을 보여줍니다.

이 샘플 코드를 더 쉽게 시험해 볼 수 있도록 이 예시에서는 AssignMessage 정책을 사용하여 흐름 변수 값을 설정하고 Trace 도구에 표시할 확장 프로그램 응답 값을 검색합니다.

별표로 가면

이 예시에서는 deidentifyWithMask 작업을 사용하여 지정된 유형의 텍스트를 정책에 지정된 문자(여기서는 * 문자)로 마스킹합니다.

다음AssignMessage 정책은 설명을 위해 request.content 변수를 설정합니다. 일반적으로 클라이언트의 요청에서 요청 콘텐츠를 검색합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

다음 확장 콜아웃 정책은 request.content 변수 값을 검색하여 Cloud DLP 확장 프로그램 (여기서는 example-dlp)에 전달합니다. 이 확장 프로그램은 URLEMAIL_ADDRESS infoTypes에 따라 값을 마스킹하도록 구성되었습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithMask</Action>
    <Input><![CDATA[{
        "text" : "{request.content}",
        "mask" : "*"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

다음AssignMessage 정책은 Trace 도구에 표시할 확장 프로그램의 출력을 검색합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

다음은 이 코드의 출력 예입니다.

{"text":"Visit my site at ******************* Or contact me at *****************."}

이름으로 마스킹

이 예에서는 deidentifyWithType 작업을 사용하여 지정된 유형의 텍스트를 infotype 이름 자체로 마스킹합니다. 예를 들어 이메일 주소 gladys@example.comEMAIL_ADDRESS으로 바꿉니다.

다음AssignMessage 정책은 설명을 위해 request.content 변수를 설정합니다. 일반적으로 클라이언트의 요청에서 요청 콘텐츠를 검색합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

다음 Extension콜아웃 정책request.content 변수 값을 검색하여 Cloud DLP 확장 프로그램 (여기서는 example-dlp)에 전달합니다. 해당 확장 프로그램은 URLEMAIL_ADDRESS infoTypes에 따라 값을 마스킹하도록 구성되었습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

다음AssignMessage 정책은 Trace 도구에 표시할 확장 프로그램의 출력을 검색합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

다음은 이 코드의 출력 예입니다.

{"text":"Visit my site at [URL] Or contact me at [EMAIL_ADDRESS]."}

작업

deidentifyWithMask

text에서 민감한 정보를 익명화하고 데이터를 mask 문자로 마스킹합니다. 이 작업은 확장 프로그램 구성에서 infoTypes 속성으로 지정된 text 부분을 마스킹합니다.

민감한 정보 마스킹은 문자를 별표 (*) 또는 해시 (#)와 같은 기호로 대체합니다. 민감한 정보 유형은 확장 프로그램 구성에서 구성할 수 있습니다.

문법

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify",
  "mask" : "masking-character"
}]]></Input>

다음 예에서 마스킹할 입력은 input.email.address 흐름 변수에 저장된 이메일 주소입니다. 이 구체적인 예시를 지원하려면 EMAIL_ADDRESS infoType을 지원하도록 확장 프로그램이 구성되어야 합니다. infoType 목록은 InfoType 감지기 참조를 확인하세요.

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}",
    "mask" : "*"
}]]></Input>
<Output>masked.output</Output>

이 예의 출력은 다음과 같습니다.

{"text":"*****************"}

요청 매개변수

매개변수 설명 유형 기본 계정 필수
문서 유형 익명화할 텍스트입니다. 문자열 없음 예.
마스크 민감한 정보를 마스킹하는 데 사용할 문자입니다. 문자열 없음 예.

응답

지정된 infoType의 값이 지정된 문자로 대체된 입력 텍스트입니다. 예를 들면 다음과 같습니다.

{"text":"*********"}

deidentifyWithTemplate

익명화할 텍스트와 처리 방법을 구성하는 템플릿을 사용하여 텍스트 콘텐츠의 민감한 정보를 익명화합니다.

템플릿은 검사 대상 및 익명화 방법과 같은 구성을 API 호출 구현에서 분리하는 데 유용합니다. 템플릿은 구성을 재사용하고 사용자와 데이터 세트에서 일관성을 유지할 수 있는 방법을 제공합니다.

템플릿에서 익명화할 콘텐츠를 나타내는 infoTypes을 지정합니다. infoType 목록은 InfoType 감지기 참조를 확인하세요. 익명화는 템플릿의 infoTypes 속성으로 지정된 텍스트 부분을 마스킹합니다.

문법

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
  "templateName" : "path-to-template"
}]]></Input>

다음 예에서 익명화할 입력은 request.content 흐름 변수에 의해 전달되는 요청 본문입니다.

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
    "text" : "{request.content}"
    "templateName" : "projects/[PROJECT_ID]/deidentifyTemplates/1231258663242"
}]]></Input>

이 예의 출력은 익명화된 요청 콘텐츠입니다.

요청 매개변수

매개변수 설명 유형 기본 계정 필수
문서 유형 익명화할 텍스트입니다. 익명화 프로세스는 이 작업을 기반으로 작동합니다. 객체 없음 예.
templateName 사용할 템플릿입니다. projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID 형식의 템플릿 경로입니다. Google API템플릿을 만들 때 응답의 name 속성 값을 templateName로 사용합니다. 문자열 없음 예.

응답

지정된 infoType의 값이 infoType 이름으로 대체된 입력 텍스트입니다.

deidentifyWithType

텍스트 콘텐츠의 민감한 정보를 익명화하여 각 일치하는 값을 infoType의 이름으로 바꿉니다. infoType 목록은 InfoType 감지기 참조를 확인하세요. 이 작업은 확장 프로그램 구성에서 infoTypes 속성으로 지정된 text 부분을 마스킹합니다.

다음 예시에서는 서비스가 전화번호를 인식한 다음 infoType 자체의 이름으로 바꿉니다.

  • 입력 텍스트:

    John Smith, 123 Main St, Seattle, WA 98122, 206-555-0123.

  • 결과 텍스트:

    John Smith, 123 Main St, Seattle, WA 98122, PHONE_NUMBER.

문법

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
}]]></Input>

다음 예에서 마스킹할 입력은 input.email.address 흐름 변수에 저장된 이메일 주소입니다. 이 구체적인 예시를 지원하려면 EMAIL_ADDRESS infoType을 지원하도록 확장 프로그램이 구성되어야 합니다. infoType 목록은 InfoType 감지기 참조를 확인하세요.

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}"
}]]></Input>

이 예의 출력은 다음과 같습니다.

{"text":"EMAIL_ADDRESS"}

요청 매개변수

매개변수 설명 유형 기본 계정 필수
문서 유형 익명화할 텍스트입니다. 문자열 없음 예.

응답

지정된 infoType의 값이 infoType 이름으로 대체된 입력 텍스트입니다. 예를 들면 다음과 같습니다.

{"text":"EMAIL_ADDRESS"}

redactImage

infoType 카테고리 중 하나에 속하는 텍스트를 수정합니다. 수정된 콘텐츠는 감지되고 불투명 직사각형으로 가려집니다. 이 작업은 확장 프로그램 구성에서 infoTypes 속성으로 지정된 image_data 부분을 마스킹합니다.

infoType 목록은 InfoType 감지기 참조를 확인하세요.

요청 매개변수

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
매개변수 설명 유형 기본 계정 필수
image_data base64로 인코딩된 이미지 데이터입니다. 문자열 없음 예.
image_type 이미지 유형의 상수입니다. 사용 가능한 값은 IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG, IMAGE_SVG입니다. 문자열 없음 예.

응답

텍스트가 수정된 이미지입니다.

구성 참조

API 프록시에서 사용할 이 확장 프로그램을 구성하고 배포할 때 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참조하세요.

일반적인 확장 속성

모든 확장 프로그램에는 다음과 같은 속성이 있습니다.

속성 설명 기본 필수
name 확장 프로그램의 구성에 지정할 이름입니다. 없음 지원됨
packageName Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. 없음 지원됨
version 확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. 없음 지원됨
configuration 추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. 없음 지원됨

이 확장 프로그램 패키지의 속성

이 확장 프로그램에 해당하는 다음 구성 속성의 값을 지정합니다.

속성 설명 기본 계정 필수
projectId Cloud Data Loss Prevention API가 사용 설정된 GCP 프로젝트 ID입니다. 없음 예.
infoTypes 민감한 정보의 정보 유형입니다. 생략하면 서비스는 모든 기본 제공 유형을 감지합니다. Google Cloud DLP 서비스에서 지원하는 infoType 목록은 InfoType 감지기 참조를 확인하세요. 없음 번호
사용자 인증 정보 Apigee Edge 콘솔에서 입력하면 서비스 계정 키 파일의 콘텐츠가 됩니다. 관리 API를 통해 전송되는 경우 서비스 계정 키 파일에서 생성된 base64로 인코딩된 값입니다. 없음 예.