
Cloud DLP を使用してCloud Storage データ内の機密情報を匿名化してみよう
はじめに

サービスを提供するうえで取り扱う顧客の個人情報や、自社の技術的ノウハウといった知的財産など、企業が守るべき情報は多く存在し、近年これらはさらに量が増えるとともにその重要性が高まっています。
これらの情報を外部からの攻撃から守るために様々な方策が存在しますが、その1つとしてDLP(Data Loss Prevention)という方法があります。
Google CloudにもDLPのサービスであるCloud DLPが存在しており、2022年8月にCloud DLPを使用してCloud Storageデータに存在する機密情報の匿名化機能が利用可能になったと発表されました。
そこで今回はこのCloud DLPのCloud Storageにおける匿名化機能について、DLPの解説を交えながら検証していきます。
DLP(Data Loss Prevention)とは

まずDLP(Data Loss Prevention)の概要について紹介いたします。DLPは、内部情報の流出を防ぐためのセキュリティシステムの一種です。DLPの特徴は、事前にセキュリティポリシーを定義の上、外部に漏らしたくない情報の流出を防ぐ点にあります。
アクセス制御などを含めたサーバ上のすべてのデータを監視する、従来の情報漏洩対策とは異なり、データそのものに着目した監視方法を採用しています。そのため、不明ユーザーによる攻撃だけでなく、正規ユーザーによる情報漏えい(システムに登録されたID・パスワードを使用した不正操作)も防ぐことが可能です。また、機密情報と特定したデータのみを常時監視し、機密ではないデータの利用を制限しません。セキュリティ強化のための管理や運用にかかるコストを、従来よりも小さく抑えることができます。
DLPの主な機能
DLPが備えている機能には、以下が挙げられます。
- Webアクセス制限機能
- メールブロック機能
- デバイス管理機能
- 印刷制限機能
- コンテンツモニタリング機能
Webアクセス制限機能を使うと、フィルタリング機能を用いたセキュリティポリシーに基づくアクセス制限を行えます。従業員一人一人のアクセス制限を管理し、リスクの高いサイトへのアクセスを防ぐ機能です。
メールブロック機能は、含まれているキーワードなどに基づいたメール送信のブロックを行える機能です。情報漏えいの恐れがあるメールが外部に送信されるのを防げます。
デバイス管理機能は、管理者によるスマホやPCなどの一元管理を実現する機能です。デバイスへの不正アクセスや、不正使用を回避できます。
印刷制限機能は、データのコピーに関する作業を予防する機能です。機密情報の印刷やスクリーンショットの撮影などを防ぎます。
コンテンツモニタリング機能は、サーバー上の機密情報の閲覧状況を、リアルタイムで監視する機能です。情報漏えいの恐れがある動きが検知された場合、即座にアクセスをシャットダウンします。
DLP導入のメリット
DLPの導入は、企業にとって多くのメリットをもたらします。DLPの最大の強みと言えるのが、リアルタイムの監視体制を簡単に構築できる点です。
ユーザーの監視だけでなく、機密情報そのものを監視するので、怪しいアクセスやアクションが行われた際、すぐに周囲をシャットアウトし、情報を守ります。
DLPは、これらの一連の処理を高度に効率化・自動化できるのも強みです。従来環境では同じ業務を手動で行なっていましたが、DLPは無人で実施できるサービスです。そのため、セキュリティに伴う管理コストを低減し、組織の負担を小さく抑えて運用できます。
Google CloudにおけるDLP(Cloud DLP)の機能

DLP製品には複数の種類がありますが、最近登場したのがGoogle CLoudの「Cloud DLP」です。
Cloud DLPでは、Cloud Storage や BigQuery などのストレージサービスに格納しているデータに含まれる、社外秘の機密情報を自動検出できます。手動でセキュリティポリシーを定義する負担を小さく抑えられるので、導入ハードルが低く運用負担も小さいのが特徴です。
また機密情報の自動検出結果(機密情報の有無)に沿って、データを分類するパイプラインの作成、検出した機密情報のマスキングが行えます。Cloud DLPの導入によりセキュリティを強化できるだけでなく、セキュリティをより身近に実施できるのが、大きな特徴と言えるでしょう。
機密情報の流出は、人間のうっかりミスによって起こってしまう事件があとをたちません。Cloud DLPは、そんなアクシデントをAIの力で回避できるサービスです。
参考検証: Cloud DLP を使用して Cloud Storage データを匿名化してみる
事前準備
検証用に、匿名化するテストデータを格納するCloud Storageバケットとテストデータとなるオブジェクト、そして匿名化したオブジェクトの出力先バケットを事前に作成しておきます。Cloud Storageバケットの設定はデフォルト設定で問題ありません。


テストデータとなるオブジェクトにはjsonデータ、およびtextデータの2つを今回は使用します。
※今回使用するテストデータ内の情報は架空のものです。
{
"1": {
"ID": "A0001",
"password": "hogehoge",
"name": "Taro Yamada",
"email": "taro.yamada@example.com",
"age": "24"
},
"2": {
"ID": "A0002",
"password": "fugafuga",
"name": "Hanako Suzuki",
"email": "hanako.suzuki@example.com",
"age": "22"
}
}
エージェント: こんにちは、担当の田中太郎です。お名前を伺ってもよろしいですか?
お客様: はい、山田花子です。
エージェント: ご連絡が必要な場合があるので、お電話番号もお伺いできますか?
お客様: 電話番号は010-2345-6789です。
エージェント: ありがとうございます。どのようなことでお困りですか?
Cloud DLPの有効化
Google Cloud コンソールのナビゲーションメニューから「APIとサービス」>「有効なAPIとサービス」画面に遷移します。

「APIとサービスの有効化」をクリックします。

検索フォームに「Cloud DLP」と入力し、「Cloud Data Loss Prevention (DLP) API」が表示されるのでクリックします。

「有効にする」をクリックし、APIを有効化します。

Cloud DLP 検査ジョブの作成
Cloud DLPのコンソールに移動、「検査」タブを表示し「ジョブとジョブトリガーを作成」をクリックします。

1.「入力データを選択」
「ストレージの種類」でCloud Storageを選択、「URL」に匿名化したいデータを格納しているバケットのURLを入力します。
また匿名化機能を有効にするために、サンプリングを無効にします。具体的には、「バケット内のスキャンに含めるオブジェクトの割合」を100%に、「サンプリング方法」にてサンプリングなしを選択します。

2.「検出の設定」項目
検出する機密情報の種類などを設定することができます。 今回はデフォルトのまま設定します。

3.「アクションの追加」項目
匿名化アクションを有効化します。
公式ドキュメントには「検出結果の匿名化」を有効にすると書かれていますが、現状最後の「BigQueryに保存」を有効化することで匿名化アクションを利用することができます。
※コンソール表示の不具合かと思われます。
有効化した後、「Cloud Storage出力先」に匿名化したデータを格納するバケットのURLを入力します。

4.「スケジュール」項目
今回は検証のため、ジョブ作成時にのみ実行するよう設定します。他にも期間指定による実行、定期実行を設定することも可能です。

5. 「確認」項目
念のため匿名化アクションが有効化されていることを確認します。
「deidentify」キーが設定されていれば有効化されています。

確認したのち、「作成」を押します。
ジョブ実行結果を確認
ジョブ作成後、しばらく待機すると検査結果が表示されます。
今回は対象となる機密データを11個検出し、それらを匿名化したという結果となっています。

実際にCloud Storageのバケットとオブジェクトを見てみましょう。
出力用に用意したバケットにテストデータオブジェクトと同じ名前のオブジェクトがそれぞれ存在します。

各オブジェクトを確認すると、ともに機密データとなる部分が匿名化されていることが確認できました。


今回は省略しましたが、匿名化するデータの種類を任意に選択できたり、事前にテンプレートを作成しておくことで匿名化する際に使用する文字列を指定することもできたりするので、詳細が気になる方は今回参考にした公式ドキュメントをご覧いただければと思います。
参考
・ Google Cloud コンソールを使用して、Cloud Storage に保存されている機密データを匿名化する | データ損失防止 (DLP) のドキュメント – Google Cloud
・infoType 検出器リファレンス | データ損失防止(DLP)のドキュメント – Google Cloud
まとめ

今回はCloud DLPを使用してCloud Storageに格納しているデータに含まれる機密情報を匿名化してみました。DLPにはいくつもの種類がありますが、Cloud DLPはデータベースから機密情報を自動抽出の上保護できるのが便利なポイントです。
使ってみた感想としては、JSONのような構造化オブジェクトだけでなく、テキスト文書のような非構造化オブジェクトにも適用可能である部分が便利だなと感じました。
クラウドサービスは便利な反面、そのセキュリティ強化についても懸念が広がっています。今回紹介したCloud DLPはその対処法として非常に有効であるため、クラウドストレージのセキュリティ対策を考える際には参考にしていただければと思います。
最後までお読みいただきありがとうございました。