リリースノート
1.1.0
Added
- 取得したデータから引用符を削除する機能を追加しました。
Changed
- ロガーとツールチップを更新しました。
1.0.1
Fixed
- CSVパスに関するプラグインの検証を修正しました。
- 健全性確認ステップレベルの検証を修正しました。
1.0.0
Added
- 初回リリース。
このドキュメントでは、MySQL EDMプラグインv1.1.0の設定方法について説明します。Netskope Cloud Exchangeプラットフォームの Exact Data Match モジュールを使用します。 このプラグインは、MySQLデータベースからデータベースレコードを取得し、定義されたプラグイン構成に従って完全一致データ一致(EDM)ハッシュを生成します。
前提条件
設定を完了するには、以下が必要です。
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Netskope Cloud Exchangeテナントには、テナントプラグインと完全一致データプラグインが既に設定されています。
- データを取得するための読む専用 ( Select ) アクセス権を持つ MySQL Server データベース ユーザー。
MySQL EDMプラグインのサポート
このプラグインは、SQLクエリを使用してMySQLデータベースからレコードを取得し、定義されたプラグイン構成に従って完全一致(EDM)ハッシュを生成します。 このプラグインは、高度なデータサニタイズ、正規化、およびハッシュ生成機能をサポートしており、データの品質とセキュリティコンプライアンスを確保します。
| 特徴 | サポート |
|---|---|
| Pull | はい |
| Push | いいえ |
MySQLデータベースの権限
| 権限の種類 | Requirement |
|---|---|
| ユーザー 読む 記載データベースへのアクセス | Required |
| MySQL データベースを読む 権限 | Required |
| データベースポートアクセス | Required |
必要な権限
- データベース ユーザーは、指定されたデータベースに対する読み取り権限を持っている必要があります。
- 設定されたポート(デフォルト:3306)でMySQLサーバーへのネットワーク接続が必要です。
- Cloud Exchange上に、一時ファイル処理のための十分なディスク容量を確保してください。
APIの詳細
データベースレコードを取得するために使うライブラリのリスト
このプラグイン PythonライブラリとMySQLドライバを使用して、MySQLデータベースへの安全な接続を確立し、SQLクエリを実行してテーブルの生データを転送します。
Library: SQLAlchemyとmysql-connector-python
Usage: SQLAlchemyは、効率的で高性能なデータベースアクセスを実現するために設計された、よく知られたエンタープライズレベルの永続化パターンを包括的に提供するPython SQLツールキットであり、SQLクエリを実行するためのシンプルでPythonらしいドメイン言語に適合されています。MySQL Connector/Pythonを使用すると、PythonプログラムからMySQLデータベースにアクセスできます。
クライアント接続を作成する
from sqlalchemy import create_engine
eng = create_engine(
connection_string, connect_args={"connect_timeout": CONNECTION_TIMEOUT}
) # creates connection with database.
Execute SQL query with Read-Only Session
with eng.connect() as connection:
# used to stop user from executing any database modification query.
result = connection.execute(text("START TRANSACTION READ ONLY;"))
query = text(config["query"])
result = connection.execute(query)
取得したレコードからCSVファイルをバッチ処理で生成する
# csv_path will be new csv file
# Fetch 100,000 rows per batch
while True:
rows = result.fetchmany(BATCH_SIZE)
if not rows:
break # No more rows to fetch
#store rows into csv file
self.store_data_to_csv(rows, csv_path)
パフォーマンスマトリックス
以下は、約 100 万行 (25 列、各列は約 50 文字の長さの文字列、1.3) の取得とサニタイズのために実施されたパフォーマンス測定です。以下の仕様を持つ大規模CEインスタンス上のデータベーステーブルからのデータ(GBサイズ、平均列一意性:約96%、平均行一意性:約96%)
| デスクリプション | 仕様 |
|---|---|
| スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
| サニタイズ処理なしでMySQLから取得したデータベーステーブルデータ | 約6,000行/秒 |
ワークフロー
- MySQLサーバーの設定.
- MySQL EDMプラグインを設定します。
- MySQL EDMプラグインとテナント間の共有を設定します。
- Validate the MySQL plugin.
動画を見る
再生ボタンをクリックして動画をご覧ください。
MySQLサーバーの設定
MySQLデータベースの場合、データが取得される特定のデータベースとテーブルに対してのみ権限が付与されたMySQLユーザーアカウントを作成する必要があります。
MySQLデータベースにユーザーを作成するには、以下の手順に従ってください。
-
リモート接続用にMySQLサーバーを有効にします。
-
MySQLサーバーがホストされているポートを公開することで、リモートマシンからMySQLサーバーにアクセスできるようになります。
-
以下の手順に従って、MySQLサーバー上に 専用ユーザーを作成します。
-
MySQLサーバーに管理者としてログインしてください。
mysql -u <root> -p- <root>ユーザーのパスワードを入力してください
-
新しいユーザーを作成します。
CREATE USER '<new_username>'@'%' IDENTIFIED BY '<secret>'; -
特定のデータベースに対する「読む」のみのアクセス許可を付与します。
GRANT SELECT ON <database_name>.* TO '<new_username>'@'%';-
上記のコマンドは、ユーザーにローカルホストからのみデータベースへのアクセス権を付与します。 コレクターをインストールするホストのホスト名またはIPアドレスがわかっている場合は、次のコマンドを入力してください。
GRANT SELECT ON <database_name>.* TO '<new_username>'@'<host_name> or <ip_address>';
-
-
-
変更を保存する
FLUSH PRIVILEGES; SHOW GRANTS FOR '<new_username>'@'<host_name> or <ip_address>'
注記
- Replace <root> with Administrator user.
- Replace <new_username> with new username to create.
- Replace <database_name> with a database to grant read-only access.
- <host_name>または<ip_address> を、コレクターをインストールするホストのホスト名または IP アドレスに置き換えてください。
MySQL EDMプラグインの設定
-
Cloud Exchange で、 Settings > Plugin Storeに移動します。
-
MySQL v1.1.0 (EDM)プラグインを検索して選択してください。

-
基本情報を入力してください:
-
Configuration Name: プラグインにふさわしい名前を入力してください。
指定した構成名はNetskopeテナントと共有する生成されたハッシュファイルの名前になります。 後でこの設定を削除して同じ名前で新しい設定を作成する場合、ハッシュファイルがNetskopeテナントに既に存在している可能性があることに注意してください。このような場合、ハッシュファイルをテナントにプッシュしようとすると、同じ名前のファイルが既に存在するため、エラーが発生します。 この問題を回避するには、一意の名前を使用することを検討してください。 -
Sync Interval: 必要に応じて同期間隔を調整してください。(デフォルト:12時間)

-
-
Next をクリックして、設定パラメータを入力してください。
-
Server IP/Hostname: MySQL ServerのIPアドレスまたはホスト名を入力してください。
-
Username: MySQLデータベースとそのテーブルにアクセスするためのユーザー名を入力してください。
-
Password: ユーザー名に関連付けられたパスワードを入力してください。
-
Database Name: データを取得したいデータベース名を指定してください。
-
Port: MySQLデータベースが稼働しているTCPポート番号を指定してください。(デフォルト)ポート番号:3306)
-
Query: データベースからデータを取得するための読む専用クエリを提供します。(読む専用クエリ) (「 Select 」クエリを意味します)
-
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ルールで使用できます。 (デフォルト:なし)
- Sanitization (Name Column): 「名前列」チェックボックスをオンにして、コンテンツをサニタイズしてください。(デフォルト:チェックなし)消毒処理では、以下の動作が行われます。
-
Remove Stopwords: サニタイズ処理の一環として特定のストップワードを削除したい場合は、チェックマークを付けてください。(デフォルト:チェックなし)変更を反映させるには、該当するフィールドの「名前列」がチェックされていることを確認してください。
注記
- 使う 正規化パラメータで取得した結果を正規化します。 例えば、123-45-6789や123 45 6789のような番号は、123456789として扱われます。数値の正規化では、ドット、ダッシュ、スペースなどの文字は無視されます。文字列正規化は文字のケース感度を無視します。
- 「辞書の作成」オプションは、必要な場合にのみ使用してください。この操作はリソースを大量に消費し、システムパフォーマンスに影響を与える可能性があります。 最適な効率性を得るために、このオプションを慎重に選択してください。

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

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

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

-
Saveをクリックしてください。
Validate the MySQL EDM Plugin
プルを検証する
Cloud Exchangeで設定済みのプラグインが正しくプルされたことを確認するには、 Settings > Loggingに移動してMySQL EDMプラグインのログを検索してください。
プラグインの動作は、Cloud Exchange のLogging にあるログから確認できます。

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

Netskopeテナントへのプッシュを検証する
Cloud ExchangeからNetskopeテナントへのEDMハッシュのプッシュを確実に行うには:
-
Netskopeテナントにログインし、 Policies > DLPに移動します。

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

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

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

