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

Apigee Edge 문서입니다.
Apigee X 문서로 이동
정보

버전: 2.0.0

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

기본 요건

이 콘텐츠는 이 확장 프로그램을 구성하고 사용하는 방법을 참조합니다. ExtensionCallout 정책을 사용하여 API 프록시에서 확장 프로그램을 사용하려면 먼저 다음을 실행해야 합니다.

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

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

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

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

Cloud Data Loss Prevention (DLP) 정보

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

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

샘플

다음 예는 ExtensionCallout 정책을 사용하여 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>

다음 ExtensionCallout 정책은 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 작업을 사용하여 지정된 유형의 텍스트를 정보 유형 이름 자체로 마스킹합니다. 예를 들어 이메일 주소 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>

다음 ExtensionCallout 정책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>

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

요청 매개변수

매개변수 설명 유형 기본값 필수
텍스트 익명처리할 텍스트입니다. 익명화 프로세스는 이 데이터를 기반으로 작동합니다. 객체 없음 예.
템플릿 이름 사용할 템플릿입니다. 템플릿의 경로이며 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로 인코딩된 값입니다. 없음 예.