Cloud DLP API を使用して文字列を検査する方法について示します。
もっと見る
このコードサンプルを含む詳細なドキュメントについては、以下をご覧ください。
コードサンプル
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
using System;
using System.Collections.Generic;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
public class ClientLibraryQuickStart
{
public static InspectContentResponse QuickStart(
string projectId,
string text,
IEnumerable<InfoType> infoTypes = null)
{
// Instantiate a client.
var dlp = DlpServiceClient.Create();
// Construct the byte content item by specifying the type of data to be inspected
// and data to be inspected.
var byteContentItem = new ByteContentItem
{
Type = ByteContentItem.Types.BytesType.TextUtf8,
Data = Google.Protobuf.ByteString.CopyFromUtf8(text)
};
// Construct content item by setting byte item.
var contentItem = new ContentItem { ByteItem = byteContentItem };
// Set minimum likelihood and limits.
var minLikelihood = Likelihood.Possible;
var limits = new InspectConfig.Types.FindingLimits
{
// Specifying 0 means use the maximum allowed findings.
MaxFindingsPerRequest = 0
};
// Construct a inspect config by specifying the type of info to be inspected.
var inspectConfig = new InspectConfig
{
InfoTypes =
{
infoTypes ?? new InfoType[]
{
new InfoType { Name = "PERSON_NAME" },
new InfoType { Name = "US_STATE" }
}
},
MinLikelihood = minLikelihood,
Limits = limits,
IncludeQuote = true,
};
// Construct a request config.
var request = new InspectContentRequest
{
ParentAsLocationName = new LocationName(projectId, "global"),
Item = contentItem,
InspectConfig = inspectConfig
};
// Call the API.
InspectContentResponse response = dlp.InspectContent(request);
// Inspect the response.
var resultFindings = response.Result.Findings;
Console.WriteLine($"Findings: {resultFindings.Count}");
foreach (var f in resultFindings)
{
Console.WriteLine("\tQuote: " + f.Quote);
Console.WriteLine("\tInfo type: " + f.InfoType.Name);
Console.WriteLine("\tLikelihood: " + f.Likelihood);
}
return response;
}
}
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
// The quickstart program is an example of using the Data Loss Prevention API.
package main
import (
"context"
"fmt"
"log"
dlp "cloud.google.com/go/dlp/apiv2"
"cloud.google.com/go/dlp/apiv2/dlppb"
)
func main() {
ctx := context.Background()
projectID := "PROJECT_ID"
// Creates a DLP client.
client, err := dlp.NewClient(ctx)
if err != nil {
log.Fatalf("error creating DLP client: %v", err)
}
defer client.Close()
// The string to inspect.
input := "Robert Frost"
// The minimum likelihood required before returning a match.
minLikelihood := dlppb.Likelihood_POSSIBLE
// The maximum number of findings to report (0 = server maximum).
maxFindings := int32(0)
// Whether to include the matching string.
includeQuote := true
// The infoTypes of information to match.
infoTypes := []*dlppb.InfoType{
{
Name: "PERSON_NAME",
},
{
Name: "US_STATE",
},
}
// Construct item to inspect.
item := &dlppb.ContentItem{
DataItem: &dlppb.ContentItem_Value{
Value: input,
},
}
// Construct request.
req := &dlppb.InspectContentRequest{
Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
InspectConfig: &dlppb.InspectConfig{
InfoTypes: infoTypes,
MinLikelihood: minLikelihood,
Limits: &dlppb.InspectConfig_FindingLimits{
MaxFindingsPerRequest: maxFindings,
},
IncludeQuote: includeQuote,
},
Item: item,
}
// Run request.
resp, err := client.InspectContent(ctx, req)
if err != nil {
log.Fatal(err)
}
findings := resp.GetResult().GetFindings()
if len(findings) == 0 {
fmt.Println("No findings.")
}
fmt.Println("Findings:")
for _, f := range findings {
if includeQuote {
fmt.Println("\tQuote: ", f.GetQuote())
}
fmt.Println("\tInfo type: ", f.GetInfoType().GetName())
fmt.Println("\tLikelihood: ", f.GetLikelihood())
}
}
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.ByteContentItem;
import com.google.privacy.dlp.v2.ContentItem;
import com.google.privacy.dlp.v2.Finding;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectContentRequest;
import com.google.privacy.dlp.v2.InspectContentResponse;
import com.google.privacy.dlp.v2.InspectResult;
import com.google.privacy.dlp.v2.Likelihood;
import com.google.privacy.dlp.v2.LocationName;
import com.google.protobuf.ByteString;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class QuickStart {
public static void main(String[] args) throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
quickstart(projectId);
}
public static void quickstart(String projectId) throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {
// Configure that content that will be inspected
String text = "His name was Robert Frost";
ByteContentItem byteContentItem =
ByteContentItem.newBuilder()
.setType(ByteContentItem.BytesType.TEXT_UTF8)
.setData(ByteString.copyFromUtf8(text))
.build();
ContentItem contentItem = ContentItem.newBuilder().setByteItem(byteContentItem).build();
// The types of information to match:
// See: https://cloud.google.com/dlp/docs/infotypes-reference
List<InfoType> infoTypes =
Stream.of("PERSON_NAME", "US_STATE")
.map(it -> InfoType.newBuilder().setName(it).build())
.collect(Collectors.toList());
// The minimum likelihood required before returning a match:
// See: https://cloud.google.com/dlp/docs/likelihood
Likelihood minLikelihood = Likelihood.POSSIBLE;
// The maximum number of findings to report (0 = server maximum)
InspectConfig.FindingLimits findingLimits =
InspectConfig.FindingLimits.newBuilder().setMaxFindingsPerItem(0).build();
// Specify the inspection configuration
InspectConfig inspectConfig =
InspectConfig.newBuilder()
.addAllInfoTypes(infoTypes)
.setMinLikelihood(minLikelihood)
.setLimits(findingLimits)
.setIncludeQuote(true)
.build();
// Create the request from previous configs
InspectContentRequest request =
InspectContentRequest.newBuilder()
.setParent(LocationName.of(projectId, "global").toString())
.setInspectConfig(inspectConfig)
.setItem(contentItem)
.build();
// Send the request to the service and receive the results
InspectContentResponse response = dlpServiceClient.inspectContent(request);
// Process the results
System.out.println("Inspect of text complete: ");
InspectResult result = response.getResult();
if (result.getFindingsCount() < 0) {
System.out.println("No findings.");
return;
}
System.out.println("Findings: ");
for (Finding finding : result.getFindingsList()) {
System.out.println("\tQuote: " + finding.getQuote());
System.out.println("\tInfo type: " + finding.getInfoType().getName());
System.out.println("\tLikelihood: " + finding.getLikelihood());
}
}
}
}
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
// Instantiates a client
const dlp = new DLP.DlpServiceClient();
// The string to inspect
const string = 'Robert Frost';
// The project ID to run the API call under
// const projectId = 'my-project';
async function quickStart() {
// The minimum likelihood required before returning a match
const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';
// The maximum number of findings to report (0 = server maximum)
const maxFindings = 0;
// The infoTypes of information to match
const infoTypes = [{name: 'PERSON_NAME'}, {name: 'US_STATE'}];
// Whether to include the matching string
const includeQuote = true;
// Construct item to inspect
const item = {value: string};
// Construct request
const request = {
parent: `projects/${projectId}/locations/global`,
inspectConfig: {
infoTypes: infoTypes,
minLikelihood: minLikelihood,
limits: {
maxFindingsPerRequest: maxFindings,
},
includeQuote: includeQuote,
},
item: item,
};
// Run request
const [response] = await dlp.inspectContent(request);
const findings = response.result.findings;
if (findings.length > 0) {
console.log('Findings:');
findings.forEach(finding => {
if (includeQuote) {
console.log(`\tQuote: ${finding.quote}`);
}
console.log(`\tInfo type: ${finding.infoType.name}`);
console.log(`\tLikelihood: ${finding.likelihood}`);
});
} else {
console.log('No findings.');
}
}
quickStart();
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\ContentItem;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectConfig\FindingLimits;
use Google\Cloud\Dlp\V2\InspectContentRequest;
use Google\Cloud\Dlp\V2\Likelihood;
// Instantiate a client.
$dlp = new DlpServiceClient();
// The infoTypes of information to match
$usNameInfoType = (new InfoType())
->setName('PERSON_NAME');
$phoneNumberInfoType = (new InfoType())
->setName('PHONE_NUMBER');
$infoTypes = [$usNameInfoType, $phoneNumberInfoType];
// Set the string to inspect
$stringToInspect = 'Robert Frost';
// Only return results above a likelihood threshold, 0 for all
$minLikelihood = likelihood::LIKELIHOOD_UNSPECIFIED;
// Limit the number of findings, 0 for no limit
$maxFindings = 0;
// Whether to include the matching string in the response
$includeQuote = true;
// Specify finding limits
$limits = (new FindingLimits())
->setMaxFindingsPerRequest($maxFindings);
// Create the configuration object
$inspectConfig = (new InspectConfig())
->setMinLikelihood($minLikelihood)
->setLimits($limits)
->setInfoTypes($infoTypes)
->setIncludeQuote($includeQuote);
$content = (new ContentItem())
->setValue($stringToInspect);
$projectId = getenv('GCLOUD_PROJECT');
$parent = $dlp->projectName($projectId);
// Run request
$inspectContentRequest = (new InspectContentRequest())
->setParent($parent)
->setInspectConfig($inspectConfig)
->setItem($content);
$response = $dlp->inspectContent($inspectContentRequest);
// Print the results
$findings = $response->getResult()->getFindings();
if (count($findings) == 0) {
print('No findings.' . PHP_EOL);
} else {
print('Findings:' . PHP_EOL);
foreach ($findings as $finding) {
if ($includeQuote) {
print(' Quote: ' . $finding->getQuote() . PHP_EOL);
}
print(' Info type: ' . $finding->getInfoType()->getName() . PHP_EOL);
$likelihoodString = Likelihood::name($finding->getLikelihood());
print(' Likelihood: ' . $likelihoodString . PHP_EOL);
}
}
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
# Import the client library
import google.cloud.dlp
# Instantiate a client.
dlp_client = google.cloud.dlp_v2.DlpServiceClient()
# The string to inspect
content = "Robert Frost"
# Construct the item to inspect.
item = {"value": content}
# The info types to search for in the content. Required.
info_types = [{"name": "FIRST_NAME"}, {"name": "LAST_NAME"}]
# The minimum likelihood to constitute a match. Optional.
min_likelihood = google.cloud.dlp_v2.Likelihood.LIKELIHOOD_UNSPECIFIED
# The maximum number of findings to report (0 = server maximum). Optional.
max_findings = 0
# Whether to include the matching string in the results. Optional.
include_quote = True
# Construct the configuration dictionary. Keys which are None may
# optionally be omitted entirely.
inspect_config = {
"info_types": info_types,
"min_likelihood": min_likelihood,
"include_quote": include_quote,
"limits": {"max_findings_per_request": max_findings},
}
# Convert the project id into a full resource id.
parent = f"projects/{project_id}"
# Call the API.
response = dlp_client.inspect_content(
request={"parent": parent, "inspect_config": inspect_config, "item": item}
)
# Print out the results.
if response.result.findings:
for finding in response.result.findings:
try:
print(f"Quote: {finding.quote}")
except AttributeError:
pass
print(f"Info type: {finding.info_type.name}")
# Convert likelihood value to string respresentation.
likelihood = finding.likelihood.name
print(f"Likelihood: {likelihood}")
else:
print("No findings.")
Ruby
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
# Imports the Google Cloud client library
require "google/cloud/dlp"
# Instantiates a client
dlp = Google::Cloud::Dlp.dlp_service
request_configuration = {
# The types of information to match
info_types: [{ name: "PERSON_NAME" }, { name: "US_STATE" }],
# Only return results above a likelihood threshold (0 for all)
min_likelihood: :LIKELIHOOD_UNSPECIFIED,
# Limit the number of findings (0 for no limit)
limits: { max_findings_per_request: 0 },
# Whether to include the matching string in the response
include_quote: true
}
# The items to inspect
item_to_inspect = { value: "Robert Frost" }
# Run request
parent = "projects/#{ENV['GOOGLE_CLOUD_PROJECT']}/locations/global"
response = dlp.inspect_content parent: parent,
inspect_config: request_configuration,
item: item_to_inspect
# Print the results
response.result.findings.each do |finding|
puts "Quote: #{finding.quote}"
puts "Info type: #{finding.info_type.name}"
puts "Likelihood: #{finding.likelihood}"
end
次のステップ
他の Google Cloud プロダクトに関連するコードサンプルの検索およびフィルタ検索を行うには、Google Cloud のサンプルをご覧ください。