初めに
AWS GlueではSensitive Data Detection featureとしてPII等の機微情報の検出やマスキングを行う機能があります。今までは日本固有のパターンは提供されていませんでしたが、2022/11/08に下記の日本固有のパターンが機能として追加されました。
日本固有の
- 銀行口座番号
- 運転免許証番号
- マイナンバー番号
- パスポート番号
の検出を行うことができるようになりました。
使用方法
GlueのAPIを使ってSensitive Data Detection featureを使うこともできますが、Glue Studioでより簡易に使用することができるので、ここではGlue Studioを使用します。
Glue Studioのジョブ作成画面で Action → Detect Sensitive Dataを選択します。

Detect Sensitive Dataの設定の Types of sensitive information to detectでSelect categoriesを選択し、CategoriesにJapanを選択すると上記に記載した日本固有のパターンのデータの検出を行うことができます。
Actionsには
- Enrich data with detection results (1カラム追加し機微情報の検出結果をそのカラムに記載する)
- Redact detected text(機微情報をマスキングする)
の選択肢があります。
簡易な構成としてGlue Data Catalogをインプットとしてデータを読み込み、Detect Sensitive Dataの処理を行なってAmazon S3に結果を出力するというようなジョブを作成/実行ができます。
機微情報の検出パターンの実験
データだけを見て機微情報を判断しているのかスキーマ(列名)も考慮して機微情報を判断しているのかが気になったので検証を行なってみました。
(2022/11/10時点の検証結果になります。検出パターンに関しては今後変わる可能性もあると思われるのでご注意ください。)
入力データ
S3上に配置されているCSVデータになります。データとしてはパスポート番号のフォーマットのデータになります。また、2カラム構成ですがそれぞれのレコードには同じデータが格納されています。
XS1234567, XS1234567
TT0001850, TT0001850
このCSVデータはGlue Data Catalogでカタログ化されており、1カラム目はパスポート番号だと想像できないカラム名、2カラム目はパスポート番号を思わせるカラム名にしてあります。
実験結果
Glue StudioのDetect Sensitive Dataの処理を実行し機微情報の検出結果をカラムとして付与してS3に出力されたファイルの内容が以下となります。
{"col0":"XS1234567","passport":" XS1234567","DetectedEntities":{"passport":[{"entityType":"JAPAN_PASSPORT_NUMBER","start":1,"end":10}]}}
{"col0":"TT0001850","passport":" TT0001850","DetectedEntities":{"passport":[{"entityType":"JAPAN_PASSPORT_NUMBER","start":1,"end":10}]}}
JSONの最後の項目の DetectedEntitiesに機微情報が検出されたカラムと検出内容が記載される形になるのですが、データは同じなのにpassportカラムは検出され、col0カラムは検出されていないようです。
この結果からGlue Data Catalogをインプットとした場合、スキーマ情報も考慮して機微情報の検出を行なっているように見えます。
ただ、インプットをGlue Data Catalogではなく他の形式にした場合など挙動は変わってくる可能性はあると思いますので、実際にこの機能を利用する場合は実験をしながら利用可否を判断していくのが良さそうです。


