Cloudflare Zero Trust の DLP
Data Loss Prevention · Cloudflare Zero Trust docs
Data Loss PreventionはEnterpriseプランでのみ利用可能です。
Cloudflare Data Loss Prevention (DLP) と Secure Web Gateway を使用すると、社会保障番号やクレジットカード番号などの機密データの存在をHTTPトラフィックで検査することができます。DLPは、アップロードまたはダウンロードされたMicrosoft Officeドキュメント(Office 2007以降)、PDF、チャットメッセージ、フォーム、その他のWebコンテンツなど、HTTPボディ全体をスキャンします。可視性は、サイトやアプリケーションによって異なります。DLPは、電子メールなどの非HTTPトラフィックや、Cloudflare Gatewayを迂回するトラフィック(例えば、Do Not Inspectルールに一致するトラフィック)をスキャンすることはありません。
DLPフィルタリングを行うには、まず検出したいデータパターンを持つDLPプロファイルを構成し、次にGateway HTTPポリシーを構築して、機密データが組織から外に出るのを許可またはブロックします。Gateway は HTTP トラフィックを解析し、DLP プロファイルで指定されたキーワードまたは正規表現に一致する文字列をスキャンします。
DLP カスタムプロファイル作成
日本語で以下のように「こんにちは」をそのまま正規表現の Value として定義できます。
「Detection entry name」は英字表記にしておくと、ダッシュボードログでも表示できます。
HTTP ポリシー設定
テスト用に以下の HTTP ポリシーを作成します。
DLP テスト
こちらにあるように https://dlptest.com/https-post/ からテストできます。
Test Message
以下のテキストメッセージを POST すると、Access restricted のページが表示されることが確認できます。
以下がダッシュボードで確認可能なログです。
以下がブロック時のログ出力のレコードです。
{
"AccountID": "xxx",
"Action": "block",
"BlockedFileHash": "",
"BlockedFileName": "",
"BlockedFileReason": "unknown",
"BlockedFileSize": 0,
"BlockedFileType": "",
"Datetime": 1669735991664000000,
"DestinationIP": "35.209.241.59",
"DestinationPort": 443,
"DeviceID": "df469de4-6ff5-11ed-9b86-2617b8795c9a",
"DownloadedFileNames": [],
"Email": "non_identity@xxx.cloudflareaccess.com",
"HTTPHost": "dlptest.com",
"HTTPMethod": "POST",
"HTTPVersion": "HTTP/2",
"IsIsolated": false,
"PolicyID": "7a8e0617-0153-420b-b87c-f9a58f5474ad",
"Referer": "https://dlptest.com/https-post/",
"RequestID": "15659e616d00001d938ce4a400000001",
"SourceIP": "100.96.0.33",
"SourcePort": 59693,
"URL": "https://dlptest.com/https-post/",
"UploadedFileNames": [],
"UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"UserID": "b7761faf-27e6-4d08-a35a-802db584b739"
}
File Upload
Google Docs から「こんにちは」だけのファイルを作成 > PDF として dlptest.pdf
をダウンロード保存します。
dlptest.pdf
をアップロードすると、以下のようにポリシー適用が確認できます。
以下がダッシュボードで確認可能なログです。
以下がダッシュボードで確認可能なログです。
ファイルアップロードのブロックでは BlockedFileName
、BlockedFileType
に情報が入ってきます。
{
"AccountID": "xxx",
"Action": "block",
"BlockedFileHash": "",
"BlockedFileName": "dlptest.pdf",
"BlockedFileReason": "unknown",
"BlockedFileSize": 0,
"BlockedFileType": "PDF",
"Datetime": 1669737211797000000,
"DestinationIP": "35.209.241.59",
"DestinationPort": 443,
"DeviceID": "df469de4-6ff5-11ed-9b86-2617b8795c9a",
"DownloadedFileNames": [],
"Email": "non_identity@xxx.cloudflareaccess.com",
"HTTPHost": "dlptest.com",
"HTTPMethod": "POST",
"HTTPVersion": "HTTP/2",
"IsIsolated": false,
"PolicyID": "7a8e0617-0153-420b-b87c-f9a58f5474ad",
"Referer": "https://dlptest.com/https-post/",
"RequestID": "1565b0ff8000001d938da69400000001",
"SourceIP": "100.96.0.33",
"SourcePort": 59693,
"URL": "https://dlptest.com/wp-admin/admin-ajax.php",
"UploadedFileNames": [],
"UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"UserID": "b7761faf-27e6-4d08-a35a-802db584b739"
}
感想
正規表現としては日本語がそのまま使えて検知できたので、日本でも柔軟な使い方ができそうです。
また、検査としてはボディの中身を見ますが、ログではボディの中身が全て閲覧できるのではなく、あくまで検知アクションの結果とファイル名のレベルで確認できる内容になっています。
「DLP profiles」や「DLP profile entries」もログ出力レコードのフィールドとして確認できるとより便利になってくるかと思いますが、そのうち対応されることでしょう。