データマスク要件の実現とData Classificationダッシュボード
こんなダッシュボードを見つけました。
例えばProjectのBudget CostをConfidential(機密情報)にしたいとき
1.Data ClassificationをFieldに適用する。
sys_dictionary.listでfieldに遷移する。
List ViewからProjectのBudget CostをみつけてList ActionのClassifyを選択する。
これでConfidentialに指定した値に対してACLを適用することで実現する標準機能
以下はGrokの提案。少し違うけどおおむねあってる感じで。
----
ServiceNowの「データ分類 (Data Classification)」機能は、プラットフォーム内で扱うデータをその機密性や重要度に基づいて分類し、適切なセキュリティやアクセス制御を適用するための仕組みです。これにより、組織が機密情報を保護し、コンプライアンス要件を満たすのを支援します。具体的には、データの分類レベル(例えば「Confidential」「Internal」「Public」など)を定義し、それに基づいて表示やアクセスを制御するポリシーを設定できます。
データ分類でできること
- データのラベル付け: データに「Confidential」「Restricted」「Public」などのラベルを付けて、どのデータが機密性が高いかを識別。
- アクセス制御: 分類に基づいて、特定のユーザーやロールにのみデータへのアクセスを許可。
- マスキング: 機密性の高いデータを非表示(マスク)にして、権限のないユーザーから見えないようにする。
- 監査とコンプライアンス: 分類されたデータの取り扱いを追跡し、規制(GDPR、HIPAAなど)に準拠するための証跡を残す。
- ポリシー適用: 分類に応じたセキュリティポリシー(例えば、暗号化やログ記録)を自動的に適用。
「Confidential」分類とProjectテーブルの投資金額フィールドのマスキング
具体的な質問である「Projectテーブルの投資金額フィールドを機密情報としてマスクできるか?」について、答えは はい、できます。以下にその方法を説明します。
実現方法
ServiceNowでは、データ分類とマスキングを実現するために、主に以下の機能や設定を組み合わせます:
- データ分類の定義:
- ServiceNowの「Data Classification」モジュール(例えば、GRCやSecurity Operationsの一部として利用可能)を使用して、「Confidential」などの分類レベルを定義します。
- Projectテーブルの「投資金額 (Investment Amount)」フィールドに対して、「Confidential」ラベルを適用します。
- フィールドレベルのセキュリティ:
- 「投資金額」フィールドにフィールドレベルのアクセス制御(Field-Level EncryptionやACL)を設定し、権限のないユーザーから値を隠します。
- ただし、単純な非表示ではなく「マスク」表示(例: **** のように見せる)にする場合、追加のカスタマイズが必要になることがあります。
- 動的データマスキングの実装:
- ServiceNow自体にSQL Serverのようなネイティブの動的データマスキング機能はないため、スクリプトやUIポリシーを活用してマスキングをカスタム実装することが一般的です。
- 例えば、以下のように設定できます:
- UIポリシーまたはクライアントスクリプトを使用して、特定の条件下(例: ユーザーが「Confidential」データを見る権限を持たない場合)に「投資金額」フィールドをマスク表示(例: **** や「非表示」)にします。
- ビジネスルールやスクリプトインクルードで、バックエンド側で値を加工して返すロジックを追加。
- サンプルスクリプト(クライアントスクリプトの例):javascript
function onLoad() { if (!g_user.hasRole('confidential_access_role')) { g_form.setValue('investment_amount', '****'); // マスク表示 g_form.setReadOnly('investment_amount', true); // 編集不可 } }
- プラグインや拡張機能:
- ServiceNowの「Data Privacy」や「Field Encryption」プラグインを利用すれば、機密フィールドの暗号化やマスキングをより簡単に設定できる場合があります。これらのプラグインが有効化されていれば、UI上で「投資金額」フィールドに「Confidential」分類を適用し、マスク表示を構成できます。
注意点
- 権限の確認: マスクするかどうかはユーザーのロールや権限に基づいて制御されるため、適切なACL(アクセス制御リスト)を設定する必要があります。
- カスタマイズの必要性: ServiceNowの標準機能ではフィールド値を動的にマスクする機能が限定的な場合があるため、スクリプトによるカスタマイズが必要になる可能性があります。
- パフォーマンス: 大量のレコードでマスキングを適用する場合、パフォーマンスへの影響を考慮して設計してください。
具体例:Projectテーブルの投資金額をマスクする手順
- データ分類を設定:
- Configuration > Data Classification に移動し、「Confidential」分類を追加。
- Projectテーブルと「投資金額」フィールドにこの分類を割り当て。
- ACLを設定:
- 「投資金額」フィールドに読み取り権限を制限するACLを作成(例: confidential_access_role のみ許可)。
- マスキングロジックを追加:
- UIポリシーで、権限のないユーザーに対して「投資金額」を「****」に置き換える。
- テスト:
- 一般ユーザーと管理者でログインし、投資金額フィールドが適切にマスクされるか確認。
結論
ServiceNowのデータ分類機能を活用すれば、「Projectテーブルの投資金額フィールド」を「Confidential」として扱い、マスクすることは可能です。ただし、ネイティブのマスキング機能が不足している場合は、スクリプトやポリシーで補完する必要があります。組織の要件に応じて、標準機能とカスタマイズを組み合わせるのが効果的です。
もしさらに具体的な設定手順やスクリプト例が必要でしたら、教えてください!