社内業務に関するシステムを一元化して運用・管理できるクラウドサービス「ServiceNow」。
株式会社KYOSOでは、これまでの豊富な運用経験をもとに、ServiceNowの企画立案から運用・保守、内製化までトータルでサポートしています。
このブログでは、ServiceNowプラットフォームのセキュリティ機能に含まれるData Discoveryについてご紹介します。
目次
Data Discoveryとは
一般的なData Discoveryはビジネスインテリジェンス(BI)の分野で、もっと手軽にデータ分析ができ、さらに課題を発見できるような仕組みが求められて開発された機能です。
さまざまなデータの中からパターンや外れ値を検出し、わかりやすい方法で伝え最終的にはビジネスプロセスを改善することを目的としています。
ServiceNowのData Discoveryは、インスタンス内の機密データを識別し、分類、保護、そしてレポートする機能となっています。
ServiceNow Data Discoveryの実装
製品ドキュメントを参考にData Discoveryを設定し、パターンの検出を行ってみました。
バージョンはWashington DCです。
1.Data Discoveryのアクティブ化
本番環境で使用するにはサブスクリプションの購入が必要です。
今回は検証のため、検証環境(非本番インスタンス)で使用します。
非本番インスタンスは課金なしで機能を評価することができます。
[すべて] > [システムアプリケーション] > [利用可能なすべてのアプリケーション] > [すべて]に移動します。
Data Discovery プラグイン (sn_data_discovery)をインストールし、アクティブ化します。
![](/wp-content/uploads/DataDiscovery_1Plugin.png)
2.パターンの構成
データをターゲットテーブルと照合するために使用する正規表現を定義します。
(1)スコープをData Discoveryにします
![](/wp-content/uploads/DataDiscovery_2Scope.png)
(2)パターンの作成
検出するパターンを作成します。
[System Security] > [Data Discovery (クラシック)] > [すべてのデータパターン]に移動します。
[新規]ボタンをクリックし、新規レコードを作成します。
![](/wp-content/uploads/DataDiscovery_2Pattern_2.png)
データパターンの説明、名前、式を入力します。
式にはデータパターンを検出するために使用する正規表現を入力します。
ここでは日本の携帯電話番号の正規表現を入力してみます。
*補足:日本の携帯電話番号の正規表現*
\d :0-9の半角数字
-? :-があってもなくても良い
| :または(orと同じ意味)
{4} :4桁(文字数)
[テスト]ボタンをクリックすると式に入力した正規表現をテストする画面が表示されます。
値を入力して[Test]ボタンをクリックします。
▼パターンを含む文字列を入力した場合
「パターンが検出されました」というメッセージが表示されます。
![](/wp-content/uploads/DataDiscovery_2Pattern_3.png)
▼パターンを含まない文字列を入力した場合
「パターンが検出されませんでした」というメッセージが表示されます。
![](/wp-content/uploads/DataDiscovery_2Pattern_4-1.png)
テストが完了したらテスト画面を閉じ、[送信]ボタンをクリックしてレコードを保存します。
(3)パターンのアクティブ化
検出するパターンは作成しただけでは動作しません。動作させるためには検出するパターンをアクティブ化します。
[System Security] > [Data Discovery(クラシック)] > [アクティブなデータパターン]に移動します。
[編集]ボタンをクリックします。
さきほど作成したパターンを選択済みリストへ追加し、[Save]ボタンをクリックします。
![](/wp-content/uploads/DataDiscovery_2Pattern_7.png)
選択済みリストに追加したデータパターンがアクティブなパターンに追加されます。
![](/wp-content/uploads/DataDiscovery_2Pattern_8-1.png)
アクティブなデータパターンが検出対象のパターンとなります。
※メールアドレス、クレジットカード番号はデフォルトパターンとしてServiceNow Data Discoveryに
あらかじめ用意されています。
デフォルトパターンを使用する場合もアクティブ化が必要です。
3.ターゲットテーブルの構成
検出対象のテーブルを設定します。
[System Security] > [Data Discovery (クラシック) ] > [ターゲットテーブル] を選択します。
[編集]ボタンをクリックします。
検出対象のテーブルを選択済みリストへ追加し、[Save]ボタンをクリックします。
![](/wp-content/uploads/DataDiscovery_3Target_2.png)
選択済みリストに追加したテーブルがData Discoveryターゲットテーブルに追加されます。
![](/wp-content/uploads/DataDiscovery_3Target_3-1.png)
ターゲットテーブルに追加されたテーブルが検出対象のテーブルになります。
*テーブルを選択するポイント
拡張テーブルの場合、コアテーブルに存在する項目から検出したい場合は、
拡張テーブルに加えてコアテーブルも追加しておく必要があります。
例えばインシデントテーブルはタスクテーブルの拡張テーブルで、
説明という項目はインシデントテーブルではなくタスクテーブルに存在しています。
どのテーブルの項目であるかはスキーママップや項目の表示から確認できます。
*確認方法1:スキーママップ
[システム定義] >[テーブル]より該当のテーブルを開き、
関連リンクのスキーママップをクリックします。
![](/wp-content/uploads/DataDiscovery_3Target_4-1.png)
*確認方法2:フォームから項目の詳細を確認する
項目ラベルを右クリックして[表示]を選択します。
2行目のTableにテーブル名が表示されています。
・説明
![](/wp-content/uploads/DataDiscovery_3Target_5.png)
・問い合わせユーザー
![](/wp-content/uploads/DataDiscovery_3Target_6.png)
4.ジョブをスケジュール
次に、Data Discoveryの実行日時を設定します。
[System Security] > [Data Discovery (クラシック)] > [データ検出ジョブ]に移動します。
[新規]ボタンをクリックし、新規レコードを作成します。
名前、スキャンタイプ、開始日、期間開始、期間終了を入力し、[送信]ボタンをクリックします。
![](/wp-content/uploads/DataDiscovery_4Job_2-1.png)
[送信]ボタンクリック直後のステータスは「スケジュールの準備ができました」になります。
![](/wp-content/uploads/DataDiscovery_4Job_3-1.png)
このままでは、ジョブは実行されません。
ジョブを実行するには、ジョブをスケジュールするというアクションが必要です。
ジョブを開いて、[ジョブをスケジュール]ボタンをクリックします。
![](/wp-content/uploads/DataDiscovery_4Job_4.png)
ステータスが「予約済み」になります。
![](/wp-content/uploads/DataDiscovery_4Job_5.png)
その後、設定した時間になるとジョブが実行されます。
ジョブの実行が完了すると、ステータスが「完了日時」になります。
※製品ドキュメントには「完了」と説明がありましたが、実際には「完了日時」となっていました。
![](/wp-content/uploads/DataDiscovery_4Job_6-1.png)
5.ジョブ結果を確認
実行されたジョブを開きます。実行結果が画面の下部に表示されます。
辞書エントリ/テーブル/データパターンごとに、データパターンの一致数や一致割合が表示されます。
![](/wp-content/uploads/DataDiscovery_5Job_1-1.png)
ダッシュボードでも実行結果を見ることができます。
[System Security] > [Data Discovery (クラシック)] > [ダッシュボード]に移動します。
![](/wp-content/uploads/DataDiscovery_5Job_2-1.png)
ダッシュボードではジョブによって検出されたパターンについて、複数のレポートが表示されます。
・検出されたデータパターン
検出されたデータパターンの割合がドーナツグラフで表示されます。
辞書エントリ/テーブルごとに検出されたパターン(検出されたデータを含む列リスト)をグラフ化したものです。
例えば「JP – Phone Number」は辞書エントリ/テーブルごとに検出されたデータパターン6件のうちの1件で、
下のリストで確認するとインシデントKCS記事テーブルで検出されたことがわかります。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad1-1.png)
・ステータス別のデータ検出結果
ジョブを実行すると、結果のステータスは [新規] になります。
対処が必要ない場合は、データをそのままにしておくことができます。
この場合、ステータスが自動的に [無視] に設定されます。
しかし、対処が必要な場合はユーザー定義データ分類の作成などによりデータを分類し、
データ分類ツールを使用してデータの匿名化を準備することができます。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad3.png)
※分類手順
分類するエントリを選択し、[分類]ボタンをクリックし設定画面を開きます。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad4-1.png)
次に、設定画面で分類名を選択し、[分類]ボタンをクリックします。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad4-2-1.png)
辞書エントリ/テーブルに対して分類が設定されます。
以下の例では、kb_template_incident_kcs_articleテーブルの問題に分類が設定されました。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad4-3.png)
*補足:匿名化*
ServiceNowの匿名化では、データを変換して識別不可能にすることができます。
匿名化の手順は、匿名化の手法、ポリシーを作成し、ジョブを実行することで実施できます。
ただし、製品ドキュメントには「匿名化ジョブは非常に破壊的である」という注意書きがあり、
ジョブ実行時でのロールバックでしか元に戻せないため、慎重に行わなければなりません。
・検出されたテーブル
テーブルごとに検出された辞書エントリの割合が表示されます。
例えば、インシデントKCS記事では検出されたデータパターンは3件です。
検出された件数は5件で、そのうちの3件が「JP – Phone Number」であったことがわかります。
![](/wp-content/uploads/DataDiscovery_5Job_dashboad5-1.png)
さいごに
ServiceNowのData Discoveryはとても簡単に使用することができました。
ダッシュボードでは、データをチャートやグラフ形式で表示しています。
そのため、分析や数字が苦手な人でも理解しやすくなっています。
また、IT部門ではなくユーザーが自ら設定して使用することも可能かと思います。
これまで分析が難しかったデータをServiceNowと連携させて分析することもでき、
さまざまな可能性を感じました。
最後まで閲覧いただき、ありがとうございました。
あなたにとって有益な情報を提供できたのであれば、大変嬉しく思います。
参考
投稿者プロフィール
![S H](/wp-content/uploads/hawai2.png)
- 主にシステム開発の仕事に携わってきました。
[HTML/CSS/JavaScript/C#/VB.NET など]
2023年より開発業務と並行してServiceNowの学習を始めました。
CIS資格取得にも取り組んでおり、さまざまなServiceNowの研修を通して知識やスキルを磨いています。
保有資格
- ServiceNow Certified System Administrator
- ServiceNow Certified Application Developer
- ServiceNow Certified Implementation Specialist - Customer Service Management