1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Insight Masking の Web API を使って文章から機微な情報を検出・マスキングするには

Last updated at Posted at 2024-05-20

こんにちは!インサイトテクノロジーの松尾です。

本投稿では、マスキング製品 Insight Masking の Web API 機能を使って、文章から機微な情報を検出・マスキングする方法をご紹介します。

はじめに

Insight Masking にはフリーテキストマスキング機能という文章から機微な情報を検出してマスキングする機能がありますが、その機能は Web API から利用可能となっています。また、Web API を使うことで、マスキングを行うだけでなく、機微な情報を検知する機能としても利用可能です。本投稿では機能およびその設定方法を紹介します。

Insight Masking の Web API の機能

Web API 機能では「文章から機微な情報を検知してマスキング」を行うことができます。

image.png

Web API 設定については、ユーザーが画面からいくつでも追加することができます。
以下についてはあらかじめ Web 画面から設定をしておく必要があります。(本ブログ投稿時点では設定を変更するための API はありません)

  • Web API の実行結果のタイプ
  • Web API コール時のエンドポイントとマスキング設定
  • Web API コール時の API キー

Web API の実行結果のタイプ

Web API の実行結果のタイプとしては、以下の 2 種類のタイプから選択できます。

  • プレーンテキスト:あらかじめ指定した検知設定、マスキング設定に基づき「マスキングされた文章」のみを返す
  • アプリケーション:あらかじめ指定した検知設定、マスキング設定に基づき「マスキング対象の文字列の元の文章における開始位置・終了位置、マスキング後の文字列」を返す

「プレーンテキスト」では、マスキングされた文章のみが返されますので、マスキング結果のみを使用したい場合に便利です。例えば「こんにちは、私はベイマックス。あなたの健康を守ります。島根か鳥取か分からないけどそこら辺に行きました。」は以下のようにマスキングされます。

こんにちは、私は【個人名 マスク】。あなたの健康を守ります。【地名 マスク】か【地名 マスク】か分からないけどそこら辺に行 きました。

一方「アプリケーション」では、入力した文章に対してどの位置に機微な情報(マスキング対象の文字列)があるのか、およびマスキング設定に基づくマスキング後文字列を json 形式で返します。

{
    "data": [
        [機微な情報1の開始位置, 機微な情報1の終了位置, 機微な情報1のマスキング後文字列],
        [機微な情報2の開始位置, 機微な情報2の終了位置, 機微な情報2のマスキング後文字列],
        ...
    ],
    "result": {
        "messages": ["OK"],
        "status": 0
    }
}

例えば「こんにちは、私はベイマックス。あなたの健康を守ります。島根か鳥取か分からないけどそこら辺に行きました。」に対する実行例は以下のようになります。

{"data":[[8,13,"【個人名 マスク】"],[27,28,"【地名 マスク】"],[30,31,"【地名 マスク】"]],"result":{"messages":["OK"],"status":0}}

なお、"result"の部分は何らかの不正な結果となる場合に、異なる値が入ることがあります。

Web API コール時のエンドポイントとマスキング設定

検知・マスキングを実行する際のエンドポイント(複数)とエンドポイントごとの設定を行うことができます。設定方法については後述します。

Web API コール時の API キー

Web API 呼び出し時の API キーを設定することができます。キーを設定しない場合は、キーを要求しない API (誰でも呼び出しできる) となります。設定方法については後述します。

Web API の設定方法

では早速 Web API の設定手順を紹介します。前提として Insight Masking Version 3.7.2 以降のバージョンが利用可能である必要があります。

Web API の有効化

Web API を利用するには、管理者メニューで Web API の有効化を行う必要があります。すでに有効にされている場合にはこの手順を行う必要はありません。

管理者でログインし「オプション」を選択します。「動作設定」にある「WebAPI」を有効化します。サーバーの再起動が促され、指示に従って再起動を行います。なお、Web API はここで指定したポート番号で待ち受けます。(SaaS提供の環境における Web API の有効化ついてはお問合せください。)

image.png

Web API の追加

一般ユーザーでログイン後、プロジェクトの作成を行います。適当な名称とコメントを入力して作成します。
image.png

「基本設定」で「Web API」を選択します。※先述の手順で Web API の有効化を行っていないと選択できません。
image.png

Web API の「追加」を行います。
追加を行い、表示される画面にて、適当な名称を設定し以下の情報を設定します。

  • タイプ:「プレーンテキスト」または「アプリケーション」を選択
  • エンドポイントカラム:Web API の設定数分を適当なカラム名で追加
  • API キー:呼び出しに使用する API キーを追加
    image.png

こちらの Web API テーブル追加の画面において、エンドポイントカラムと、API キーの右側にある、コピーボタンをクリックし、それぞれの情報をコピーしておいてください。例えば以下のような情報がコピーされます。

エンドポイントカラム

/webapi/be7b4affc5eff6b977ec25898d6570d9/698a7a8e-def3-478f-b474-6c483f35eccc/plain

API キー

b8e9d8a7-5799-4cba-95c7-aac60cae3024

Web API の検知・マスキングの設定

次に「マスキング設定」を選択し、状態の部分を選択して「有効」にし、「カラム設定」を選択します。
image.png

さらに状態の部分を「有効」にし、「編集」を選択します。
image.png

カラム設定ではマスキングに「フリーテキスト」を選択し、実行モードに「詳細モード」に選択します。(他の選択は通常は行いませんが、必要に応じて製品マニュアルを確認してください)
「ラベルエディタ」を選択し、マスキングの詳細設定を確認します。
image.png

ラベルエディタでは、右側のリスト部で有効にされた検知対象項目に対して、実際の文章がどのように検知されるかを確認することができます。右側のリストで対象を無効にすると、無効とした項目は検知対象外となります。左側にはサンプルの文章を入力し「+」を選択することで、サンプルの文章を用いての検知され具合を確認することができます。
image.png

右側のリストで「追加」を選択すると、検知対象または検知対象外とする単語を登録することができます(正規表現での指定も可能です)。たとえば「そこら辺」を検知対象とすると以下のようになります。
image.png
image.png

検知対象をどのようにマスキングするかの指定については、あらかじめマスキングの「テンプレート」を作成しておく必要があります。例として、固定文字で文字数に合わせて「*」にマスキングするテンプレートを作成してみましょう。
image.png
image.png

そして、今一度マスキングの設定の部分で、テンプレートに先の手順で作成したテンプレートを選択します。
image.png

設定を変更したら、「設定保存・実行」の部分で「設定を保存」を選択します。
image.png

Web API を使ったマスキングの実行

それでは作成した Web API を使用してみます。

Web API の URL

Web API の呼び出しは以下のアドレスに対して行います。

<MaskingサーバーのURL>:<Web APIのポート番号><Web API の追加の時にコピーしたエンドポイントカラム>

例えば、マスキングのサーバーのURL(IP アドレス)が、xx.xx.xx.xxであった場合、Web API のアドレスは以下のようになります。

http://xx.xx.xx.xx:6080/webapi/be7b4affc5eff6b977ec25898d6570d9/698a7a8e-def3-478f-b474-6c483f35eccc/plain

また、API キーを設定した場合には、ヘッダーで X-Insight-Masking-API-KEY で指定します。

Web API の呼び出しの仕様

本 Web API は、HTTP プロトコルを用い、base64エンコードされたテキストデータをPOSTメソッドによりリクエストすることで、マスキングされたテキストデータをbase64エンコードされた形式で受信することができる機能です。
なお、1つの文書が16384byteを超えるテキストをマスキングする際には、413エラーが返却されます。

curl を使った呼び出しサンプル

上記仕様をもとに、curl を使って bash から呼び出しを行ってみると、以下のようなサンプルを書くことができます。

$ echo "こんにちは、私はベイマックス。あなたの健康を守ります。島根か鳥取か分からないけどそこら辺に行きました。" | { read v ;echo -e "$v""\n"; } | base64 -w 0 | curl -H "X-Insight-Masking-API-KEY: b8e9d8a7-5799-4cba-95c7-aac60cae3024" -s --data-binary @- http://xx.xx.xx.xx:6080/webapi/be7b4affc5eff6b977ec25898d6570d9/698a7a8e-def3-478f-b474-6c483f35eccc/plain | base64 -d
こんにちは、私は【個人名 マスク】。あなたの健康を守ります。【地名 マスク】か【地名 マスク】か分からないけど****に行きま した。

Python を使った呼び出しサンプル

Python を使う場合のマスキング処理を行う関数は以下のようになります。

import requests
import urllib.parse
import base64

URL = 'http://xx.xx.xx.xx:6080/webapi/be7b4affc5eff6b977ec25898d6570d9/698a7a8e-def3-478f-b474-6c483f35eccc/plain'
API_KEY = 'b8e9d8a7-5799-4cba-95c7-aac60cae3024'

def mask_the_text(plain_text):
    plain_text = base64.b64encode((urllib.parse.unquote(urllib.parse.quote(plain_text)) + '\n').encode())

    r = requests.post(URL, data=plain_text, headers = {'X-Insight-Masking-API-KEY': API_KEY})

    result = urllib.parse.unquote(urllib.parse.quote(base64.b64decode(r.text)))
    return result.rstrip('\n')

print(mask_the_text('こんにちは、私はベイマックス。あなたの健康を守ります。島根か鳥取か分からないけどそこら辺に行きました。'))
$ python3 test.py
こんにちは、私は【個人名 マスク】。あなたの健康を守ります。【地名 マスク】か【地名 マスク】か分からないけど****に行きま した。

GAS を使った呼び出しサンプル

GAS を使う場合のマスキング処理を行う関数は以下のようになります。

function MaskText(plain_text) {
  var url = 'http://xx.xx.xx.xx:6080/webapi/be7b4affc5eff6b977ec25898d6570d9/698a7a8e-def3-478f-b474-6c483f35eccc/plain'
  var requestHeaders = {
    'X-Insight-Masking-API-KEY': 'b8e9d8a7-5799-4cba-95c7-aac60cae3024'
  }
  let options = {
    'headers': requestHeaders,
    'method' : 'post',
    'payload' : Utilities.base64Encode(plain_text, Utilities.Charset.UTF_8) + '\n'
  };
  var response = UrlFetchApp.fetch(url, options).getContentText();
  return Utilities.newBlob(Utilities.base64Decode(response, Utilities.Charset.UTF_8)).getDataAsString()
}

おわりに

本投稿では Insight Masking を使った Web API 呼び出しについて、Web API の有効化から実際の呼び出しまで、プレインテキストモードでの例をもとに紹介しました。アプリケーションモードでも呼び出し方は同じなので簡単に利用できると思います。
なお、弊社で提供している(または提供予定の) Office Plugin や PDF 墨消しツールを使用する場合は、アプリケーションモードで Web API を用意しそのアドレスを設定して利用ください。

Insight Masking を Web API 経由で利用することで、既存の仕組みへ組み込んで利用することが可能です。例えば、生成系 AI を呼び出す前にマスキングを行うことで、より安心して外部システムへデータを連携できるなど、利用の幅が広がるでしょう。

まだ Insight Masking をご利用いただいたことがない方で、ご興味をお持ちの方は https://www.insight-tec.com/products/masking/#f から是非お問合せください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?