2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudflareAdvent Calendar 2022

Day 4

Cloudflare Zero Trust の DLP ポリシーを日本語で試す

Last updated at Posted at 2022-12-03

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 は HTTP ポリシーに付随する機能のため、HTTP ポリシーが適用可能な以下のいずれかの接続方式の場合で適用が可能です。

image.png

DLP カスタムプロファイル作成

日本語で以下のように「こんにちは」をそのまま正規表現の Value として定義できます。

「Detection entry name」は英字表記にしておくと、ダッシュボードログでも表示できます。

image-20221130010442804

image-20221130010636530

HTTP ポリシー設定

テスト用に以下の HTTP ポリシーを作成します。

image-20221130011424491

DLP テスト

こちらにあるように https://dlptest.com/https-post/ からテストできます。

Test Message

以下のテキストメッセージを POST すると、Access restricted のページが表示されることが確認できます。

image-20221130003309446

image-20221130004911624

以下がダッシュボードで確認可能なログです。

image-20221130004711966

以下がブロック時のログ出力のレコードです。

{
  "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 をアップロードすると、以下のようにポリシー適用が確認できます。

image-20221130005450372

以下がダッシュボードで確認可能なログです。

image-20221130005653480

以下がダッシュボードで確認可能なログです。

ファイルアップロードのブロックでは BlockedFileNameBlockedFileType に情報が入ってきます。

{
  "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"
}

Payload Logging

以下のガイドに従って、公開鍵・秘密鍵のペアを作成し、公開鍵を登録します。

Data Loss Prevention では、特定の DLP ポリシーをトリガーしたデータをログに記録できます。このデータは、ペイロードとして知られる HTTP リクエストの部分に保存されます。ペイロードのロギングは、DLP ルールの動作を診断する場合に特に役立ちます。

その後、各 HTTP (DLP) ポリシーで Payload Logging を有効化します。

image.png

以下の内容でテストします。

image.png

Gateway activity log から「Payload log match > Decrypt payload log」をたどり、リクエストの DLP 一致部分がログに記録されたため、秘密鍵を入力してログを復号化します。

ルールのトリガーとなった値には機密データが含まれている可能性があるため、顧客提供の公開鍵で暗号化され、後で自分だけが検査できるようになります。保存されるデータには、マッチの非表示バージョンに加え、マッチの両側に20文字の追加コンテキストが含まれます。

以下のように確認できました。

image.png

{
  "AccountID": "b5341236aea624bd7e2a0770ee3fb5e5",
  "Action": "block",
  "BlockedFileHash": "",
  "BlockedFileName": "dlptest.pdf",
  "BlockedFileReason": "unknown",
  "BlockedFileSize": 0,
  "BlockedFileType": "PDF",
  "Datetime": "2024-05-20T15:49:54Z",
  "DestinationIP": "35.209.95.242",
  "DestinationPort": 443,
  "DeviceID": "85a88112-16ba-11ef-b134-dadffe834e39",
  "DeviceName": "xxxxxxxxxx",
  "DownloadMatchedDlpProfileEntries": [],
  "DownloadMatchedDlpProfiles": [],
  "DownloadedFileNames": [],
  "Email": "non_identity@xxx.cloudflareaccess.com",
  "FileInfo": {
    "files": [
      {
        "direction": "upload",
        "file_name": "dlptest.pdf",
        "file_type": "PDF",
        "file_hash": "038851b7cc273c4351a984b54ec10365f8cf4ce25647b010ccfc832a2443bbf4",
        "file_size": 7858,
        "content_type": "application/pdf",
        "action": "block"
      },
      {
        "direction": "upload",
        "file_name": "<unknown file name>",
        "file_hash": "6ac36bf23aae4f2ae59dabb142a0bffaf977c1945a681d656ae75e8f286a3492",
        "file_size": 19,
        "action": "none"
      },
      {
        "file_name": "<unknown file name>",
        "file_hash": "6f4b6612125fb3a0daecd2799dfd6c9c299424fd920f9b308110a2c1fbd8f443",
        "file_size": 2,
        "action": "none",
        "direction": "upload"
      },
      {
        "file_hash": "4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8",
        "file_size": 2,
        "action": "none",
        "direction": "upload",
        "file_name": "<unknown file name>"
      },
      {
        "file_size": 10,
        "action": "none",
        "direction": "upload",
        "file_name": "<unknown file name>",
        "file_hash": "617c4e0c5ab1803cb058ee6049277f61ca90ae3e244fbcbbc4607bfe25f0ae97"
      }
    ]
  },
  "HTTPHost": "dlptest.com",
  "HTTPMethod": "POST",
  "HTTPStatusCode": 302,
  "HTTPVersion": "HTTP/2",
  "IsIsolated": false,
  "PolicyID": "7a8e0617-0153-420b-b87c-f9a58f5474ad",
  "PolicyName": "Block with Japanese DLP",
  "Referer": "https://dlptest.com/https-post/",
  "RequestID": "20384b07b800001d778b41d400000001",
  "SessionID": "20384aee1000001d778b3e2400000001",
  "SourceIP": "x.x.x.x",
  "SourceInternalIP": "",
  "SourcePort": 52706,
  "URL": "https://dlptest.com/wp-admin/admin-ajax.php",
  "UntrustedCertificateAction": "none",
  "UploadMatchedDlpProfileEntries": [
    "d743a889-b636-4e1c-a863-ec8521104f8e"
  ],
  "UploadMatchedDlpProfiles": [
    "b89956af-0cc6-4aef-8aa0-41dcb4e910dd"
  ],
  "UploadedFileNames": [
    "<unknown file name>"
  ],
  "UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
  "UserID": "b7761faf-27e6-4d08-a35a-802db584b739"
}

感想

正規表現としては日本語がそのまま使えて検知できたので、日本でも柔軟な使い方ができそうです。

また、検査としてはボディの中身を見ますが、ログではボディの中身が全て閲覧できるのではなく、あくまで検知アクションの結果とファイル名のレベルで確認できる内容になっています。

「DLP profiles」や「DLP profile entries」もログ出力レコードのフィールドとして確認できるとより便利になってくるかと思いますが、そのうち対応されることでしょう。--> DownloadMatchedDlpProfileEntries, DownloadMatchedDlpProfiles, UploadMatchedDlpProfileEntries, UploadMatchedDlpProfiles が追加されました。

以下のラーニングパスも整備されているため、参考にしてください。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?