リリースノート
1.0.0
Added
- SMB2/SMB3のCSVファイル取り込み機能を搭載した初回リリース。
このドキュメントでは、 Netskope Cloud Exchangeプラットフォームの Exact Data Match プラグインを使用して SMB ファイル共有 EDM プラグイン v1.0.0 を構成する方法について説明します。 このプラグインは リモートのSMBサーバー(WindowsまたはSamba)からCSVファイルを取得し、取得したCSVファイルのEDMハッシュを生成します。 このプラグインは、SMB 2.0.2からSMB 3.1.1までのSMBプロトコルバージョンをサポートしています。
前提条件
設定を完了するには、以下が必要です。
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Netskope Cloud Exchangeテナントには、テナントプラグインと完全一致データ一致プラグインが既に設定されています。
- SMBサーバーは、Windows/Linux/Isilonインスタンスで構成され、適切なデータ構造を持つSMB共有ディレクトリとCSVファイルへのアクセスが可能です。
SMBファイル共有EDMプラグインのサポート
このプラグインは、SMB 2.0.2からSMB 3.1.1をサポートするSMBサーバーからデータを取得します。そして、定義されたプラグイン構成に従って、完全一致データ(EDM)ハッシュを生成します。
| 特徴 | サポート |
|---|---|
| Pull | はい |
| Push | いいえ |
SMBサーバーのアクセス許可
| 権限の種類 | Requirement |
|---|---|
| SSHアクセス | Required |
| ファイルを読む アクセス | Required |
| ネットワーク共有アクセス | Required |
| 港湾アクセス | 445(SMB) |
必要な権限
- ユーザーは、共有フォルダとCSVファイルへのアクセス権を持っている必要があります。
- ポート445へのネットワーク接続。
- サーバー上でSMBサービスが有効になっています。
- Cloud Exchange上に、一時ファイル処理のための十分なディスク容量を確保してください。
APIの詳細
リモート SMB ファイル共有にアクセスするために使うライブラリのリスト
このプラグイン PythonライブラリとSMBプロトコルスタックを使用して、Windows SMBサーバーへの安全な接続を確立し、共有ディレクトリをナビゲートしてCSV/TXTファイルを転送します。
ライブラリ: smbclient
使用方法: smbclient は、Windows SMB 共有ディレクトリに接続して操作するための、シンプルなファイルシステムのような関数 (register_session、stat、open_file、reset_connection_cache) を提供する高レベルの Python ラッパーです。プラグイン smbprotocol.exceptions (SMBException, SMBResponseException) は、SMB 操作が失敗した場合の例外処理のみに使用されます。
セッション登録(接続確立+認証)
from ..lib import smbclient
smbclient.register_session(
server,
username=username,
password=password,
port=port,
)
UNCを構築し、接続を確認します。
unc_path = self._build_unc_path(
server,
directory_path,
file_path,
)
smbclient.stat(unc_path)
ファイルが存在することを確認する
# Check if file exists
stat_result = smbclient.stat(unc_path)
# Check it's not a directory
if stat.S_ISDIR(stat_result.st_mode):
SMB経由でCSVファイルをダウンロード
with smbclient.open_file(unc_path, mode="rb") as remote_file:
with open(csv_file_path, "wb") as file_object:
if record_count:
# Partial file retrieval (for sample data)
# +1 to include header row
lines_to_read = record_count + 1
for _ in range(lines_to_read):
line = remote_file.readline()
if not line:
break
file_object.write(line)
else:
# Full file retrieval
shutil.copyfileobj(remote_file, file_object)
清掃セッション
smbclient.reset_connection_cache(fail_on_error=False)
パフォーマンスマトリックス
以下は、以下の仕様を持つ大規模CEインスタンスで、約100万行(25列、各列は約50文字の文字列、サイズ1.3GB、平均列一意性:約96%、平均行一意性:約96%)のCSVファイルを取得およびサニタイズするために実施したパフォーマンス測定結果です。
| デスクリプション | 仕様 |
|---|---|
| スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
| サニタイズされていないSMBファイル共有から取得したCSVデータ | 約7,000行/秒 |
注記
CEインスタンスのディスク容量については、こちらのドキュメントを参照してください。
ワークフロー
- サーバーのクレデンシャルとファイルのパスを取得します。
- SMBファイル共有EDMプラグインを設定します。
- SMBファイル共有EDMプラグインとテナント間の共有を設定します。
- SMBファイル共有EDMプラグインを検証します。
動画を見る
再生ボタンをクリックして動画をご覧ください。
SMBサーバーから共有ディレクトリを取得する
Windows上でホストされているSMBサーバー
- PowerShellを管理者として実行してください。
- PowerShellでコマンドを実行します。
Get-SmbShareExample Output:
Name ScopeName Path
—-- --------- ----
ADMIN$ * C:\Windows
C$ * C:\
MyShare * C:\SMBShareWhat It Means:
- 名前 → シェア名
- Path → Actual folder location
- 末尾が$で終わる株式(
C$、ADMIN$など)は、非公開の管理株式です。
Linux上でホストされているSMBサーバー
- Samba共有は
/etc/samba/smb.conf内で定義されます。 - Linuxターミナルで以下を実行します。
testparm -s
- 次のようなセクションを探してください。
[shared]
path = /srv/samba/shared - [global] より下のセクションはすべて共有フォルダです。
[Documents]
path = /home/devuser/docsWhat it means:
- 共有名 → ドキュメント
- Actual folder →
/home/devuser/docs
IsilonでホストされているSMBサーバー
- OneFSにログインしてください。

- Protocolsに移動してSMBを選択してください。

- 株式セクションを開いてください。

- 設定済みのSMB共有の一覧が表示されます。
- Path列を見てください。これは、SMB経由で共有される実際のファイルシステムディレクトリ(通常は/ifs以下)を示しています。
Example table:
Share Name Path
test-share /ifs/data/test
Finance /ifs/data/finance - パスの値(
/ifs/...)は、共有されているディレクトリです。
Kerberosの設定 IPアドレスの代わりにドメイン名/FQDNを使用する場合
- コアコンテナ内にKerberosユーティリティをインストールします。
- コアコンテナにアクセスします。
docker exec -it -u0 <core-container> bash
- Kerberosパッケージをインストールします。
Ubuntu/Debian :apt update && apt install -y krb5-user smbclient
- RHEL/CentOS:
yum install -y krb5-workstation samba-client
- Kerberos を設定します: (
krb5.conf)。 - Create or update:
/etc/krb5.conf - レルム設定を追加します。
[realms] EXAMPLE.COM = { kdc = dc01.example.com admin_server = dc01.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM注記
- 領域は通常、大文字で表記する必要があります。
- KDCはドメインコントローラーを指すように設定する必要があります。
- コンテナ内部では、DNS解決が正しく機能する必要があります。
- Replace these values:
Placeholder に置き換える EXAMPLE.COM AD/Kerberosレルム dc01.example.com ドメインコントローラー/KDCホスト名 example.com あなたのドメイン
docker-compose.ymlを更新します。docker-compose.ymlを編集し、コアサービスにextra_hostsを追加します。services: core: extra_hosts: - "<domain/FQDN>:<IP>"
- Cloud Exchangeを再起動し、SMBサーバーのドメイン/FQDNを使用してプラグインを設定してください。
sudo ./stop && sudo ./start
SMBファイル共有EDMプラグインの設定
- Cloud ExchangeにログインしてSettings > Plugin Storeに移動してください。
- SMB File Share EDM v1.0.0プラグインボックスを検索して選択します。

- 基本情報を入力してください:
- Configuration Name: 統合内容に適した名前を入力してください。
- Sync Interval: 必要に応じて同期間隔を調整してください。(デフォルト:12時間)

注記
ご指定いただいた設定名はNetskopeテナントと共有するハッシュファイルの名前として使用されます。 後でこの設定を削除して同じ名前で新しい設定を作成する場合、ハッシュファイルが既にNetskopeテナント内に存在している可能性があることに注意してください。このような場合、ハッシュファイルをテナントにプッシュしようとすると、同じ名前のファイルが既に存在するため、エラーが発生します。 この問題を回避するには、一意の名前を使用することを検討してください。
- Next をクリックして、設定パラメータを入力してください。
- SMB Server Hostname/IP: CSVファイルを取得するSMBサーバーのホスト名またはIPアドレス。
- Port: SMB接続用のTCPポート(デフォルトは445)。
- Username: 共有ディレクトリへの「読む」アクセス権を持つユーザー名。
- Password: 指定されたユーザー名のパスワード。
- Share Directory Name: SMBの共有名。例えばUNC パスが '\server\share\path\file.csv' の場合は、「share」と入力してください。これを取得するには、 「SMBサーバーから共有ディレクトリを取得する」に記載されている手順に従ってください。
- CSV File Path: CSVファイル名、または共有ディレクトリ名からの相対パスでCSVファイルのパスを指定してください。例えばUNC パスが '\server\share\path\file.csv' の場合は、'path\file.csv' と入力してください。使う バックスラッシュ(\)のみ。 注:サポートされているのは、最大25列までの.csv/.txtファイルのみです。これを取得するには、 「SMBサーバーから共有ディレクトリを取得する」に記載されている手順に従ってください。
- Delimiter: 単一文字区切り文字 CSV/TXTファイル内(例: (コンマ、パイプ、セミコロン)。
- Remove Quotes: CSVファイルでフィールドが二重引用符で囲まれている場合(特に値にカンマが含まれている場合)は、チェックマークを付けてください。引用符で囲まれたフィールドは、単一の列として解析されます。引用符の位置が不適切だと、行がスキップされる可能性があります。
注記
デフォルトでは、引用符は文字通りのテキストとして扱われます。CSVファイルで引用符を削除するトグルを有効にしてください。 カンマを含むフィールド(
"123 ABC Street, Suite 100"など)を囲むには、二重引用符を使用します。 これにより、そのフィールドが単一の列として扱われることが保証されます。このモードでは、厳密なCSVフォーマットが必須となることに注意してください。フィールドが引用符で始まる場合、閉じ引用符の後に続き、コンマの前にある文字(スペースを含む)(例:"Word",)があると、その行はスキップされます。
- Next をクリックして、ハッシュ生成およびサニタイズパラメータを入力してください。
サニタイズおよびハッシュ生成操作に適したオプションSelect 。
- Sanitization (Name Column): 「名前列」チェックボックスをオンにして、コンテンツをサニタイズしてください。(デフォルト:チェックなし)消毒処理では、以下の動作が行われます。
- One character: セルに文字が1つしか含まれていない場合、そのセルは無効とみなされます。
- Digits: 数字を含むセルは無効としてマークされます。
- Stopwords: リストにあるストップワードに一致するセルは無効としてマークされます(これは、 [ストップワードを削除]チェックボックスが有効になっている場合にのみ機能します)。
- Non-alphanumeric characters: セルを検証するには、すべての特殊文字を削除してください。
- ハッシュ生成は2つの部分に分かれています。
- Normalization: ドロップダウンリストから値Select 、データ値を正規化してください。 (デフォルト:なし)
- Create Dictionary: ドロップダウンから値Select 、選択したフィールドの一意の値の辞書を作成します。 NetskopeテナントのDLPルールで使用できます。 (デフォルト:なし)
- Remove Stopwords: サニタイズ処理の一環として特定のストップワードを削除する場合は、チェックマークを付けてください。(デフォルト:チェックなし)変更内容を反映させるため、該当するフィールドの「名前」列にチェックが入っていることを確認してください。

注記
- 取得した結果を正規化するためのユーザー正規化パラメータ。例えば、123-45-6789や123 45 6789のような番号は、123456789として扱われます。数値の正規化では、ドット、ハイフン、スペースなどの文字は無視されます。文字列の正規化では、文字の大文字・小文字の区別は無視されます。
- 「辞書の作成」オプションは、必要な場合にのみ使用してください。この操作はリソースを大量に消費し、システムパフォーマンスに影響を与える可能性があります。 最適な効率性を得るために、このオプションを慎重に選択してください。
- Sanitization (Name Column): 「名前列」チェックボックスをオンにして、コンテンツをサニタイズしてください。(デフォルト:チェックなし)消毒処理では、以下の動作が行われます。
- Nextをクリックしてください。Preview Good FileまたはPreview Bad Fileをクリックして、サニタイズサンプルの出力をプレビューしてください。

注記
プラグインをサニタイズ機能を有効にして使用している場合、追加処理が発生するためパフォーマンスが異なる場合があります。
- Proceed without sanitization: 消毒処理を進めるには、このオプションのチェックを外してください。(デフォルト:チェック済み)
注記
このオプションのチェックを外すと、すべてのデータがハッシュ生成の対象となります。チェックを外すと、有効なファイルの内容のみがハッシュ生成の対象となります。
- Proceed without sanitization: 消毒処理を進めるには、このオプションのチェックを外してください。(デフォルト:チェック済み)
- Saveをクリックしてください。設定済みのプラグインを確認できる「完全一致データ一致」>「プラグイン」ページにリダイレクトされます。

SMBファイル共有用のEDM共有構成を構成する
共有構成は、生成された EDM ハッシュを宛先プラットフォームと共有するために使用されます。 EDMハッシュをNetskopeテナントと共有するには、共有設定を作成します。 次の手順で行います。
- Exact Data Match > Sharingに移動してAdd Sharing Configurationをクリックしてください。

- 共有パラメータを設定します。
- Source Configuration: 設定済みのSMBファイル共有EDMプラグインSelect 。
- Destination Configuration: EDMハッシュの共有先Select 。
- Target: 値は、選択された宛先構成に応じて自動的に設定されます。

- Saveをクリックしてください。
SMBファイル共有EDMプラグインを検証する
注記
Cloud Exchange 、ハッシュ生成とアップロード処理が完了するまでの間、機密性の高いプルデータCSVファイルを一時的にのみ保存します。 その後、保存されたファイルは自動的に削除されます。
Cloud Exchangeで検証する
Cloud Exchangeで設定済みのプラグインが正しくプルされたことを確認するには、 Settings > Loggingに移動して、SMBファイル共有EDMプラグインのログを検索してください。
プラグインの動作は、Cloud Exchange のLogging にあるログから確認できます。

ステータス値は以下のとおりです。
- Scheduled: 共有が設定されており、プル操作とプッシュ操作が処理待ちのキューに入っていることを示します。
- Generating Hash: ハッシュ生成プロセスが開始されたことを示します。 この段階には、データの取得 > 検証 > サニタイズ(有効な場合) > ハッシュの生成が含まれます。
- Uploading Hash: 宛先構成へのハッシュのアップロードが開始されたことを示します。
- Upload Completed: ハッシュが宛先設定にアップロードされたことを示します。
- Checking Apply Status: ハッシュが宛先構成に適用された状態を確認します。
- Apply In Progress: ハッシュ プロセスが開始され、宛先で進行中です。
- Completed: ハッシュファイルが宛先構成に正常にプッシュされたことを示します。
- Failed: アクションの最終結果が実行されなかったことを示します。実行されるアクションは、ハッシュの生成、ハッシュのアップロード、適用状況の確認です。
共有EDMハッシュは、Cloud ExchangeのLogging にあるログから確認できます。

Validate on the Netskope Tenant
Cloud ExchangeからNetskopeテナントへのEDMハッシュのプッシュを確実に行うには:
- In the Netskope Tenant, go to Policies > DLP.

- Edit RulesをクリックしてData Loss Preventionを選択してください。

- On the Exact Match tab, a list of files is shown.

SMBファイル共有EDMプラグインのトラブルシューティング
SMBファイル共有EDMプラグインの設定ができません
SMBファイル共有EDMプラグインの設定ができない場合、以下のいずれかの理由が考えられます。
- ユーザーにはCSVファイルを開く権限がありません。
- ホスト名またはサーバーのIPアドレスが間違っています。
- サーバー上でポートが無効化されているか、ブロックされています。
- Cloud Exchangeとサーバー間のネットワーク接続に問題が発生しています。
- 設定されているSMBサーバーのバージョンはSMB 2.0.2より低い。
What to do:
- クレデンシャルが正しいことを確認してください。
- サーバー上のファイル権限を確認してください。
- SSHサービスが実行されていることを確認してください。
- ネットワーク接続を確認してください。
- インスタンスに設定されている SMB のバージョンを確認し、SMB 2.0.2 より低い場合は、SMB 2.0.2 から SMB 3.1.1 の間のバージョンにアップグレードしてください。
CSVファイルが見つからないか、アクセスが拒否されました。
ファイルが見つからない、またはアクセスが拒否されたというエラーが表示された場合:
What to do:
- CSVファイルのパスが正しいこと、およびファイルが存在することを確認してください。
- ユーザーがファイルに対する読む権限を持っていることを確認してください。
- ファイルが他のプロセスによってロックされていないか確認してください。
ハッシュ生成が失敗するか、時間がかかりすぎる
ハッシュ生成が失敗した場合、またはパフォーマンスが低い場合:
What to do:
- Cloud Exchangeの空きディスク容量を確認してください(CSVファイルサイズの少なくとも2倍の容量が必要です)。
- CSVファイルのサイズを小さくするか、より小さなファイルに分割してください。
- パフォーマンス向上のため、必要でない場合はサニタイズ機能を無効にしてください。
- 処理中はシステムリソースを監視してください。
既知の行動
- サニタイズ処理は処理速度を約65%低下させる可能性があるが、データ品質を向上させる。
- 辞書の作成はリソースを大量に消費するため、 必要な場合にのみ行うべきです。
- このプラグインは処理中に一時ファイルを作成しますが、それらは自動的に削除されます。
- 非常に大きなファイルの場合、SSH接続のタイムアウトが発生する可能性があります。タイムアウト値を増やすことを検討してください。
- メモリ使用量はCSVファイルのサイズに比例します。大容量ファイルの処理中はシステムリソースを監視してください。
制限事項
Netskopeの各テナントは、最大5つのステージングファイルを処理できるという制限があります。この上限に達すると、ハッシュの共有中に次のエラーが発生する可能性があります。
EDM Netskope 完全一致データ [EDM Netskope] 終了コード 400 を受信しました。構成 Linux EDM の edm ハッシュを構成 EDM Netskope にアップロード中にエラーが発生しました。
このエラーを解決するには、ステージング環境から既存のファイルを削除する必要があります。

