ログの難読化ルールを使用すると、特定の種類の情報がNewRelicに保存されないようにすることができます。
要件 ログの難読化は、 Data Plusオファリング の一部として、2022年6月に利用可能になる予定です。詳細については、アカウント担当者にお問い合わせください。
概要 ログがNewRelicに送信された後、難読化ルールを使用して、ログ内の機密情報を難読化してから、NewRelicデータベースであるNRDB に保存できます。
機密情報には、クレジットカード番号、社会保障番号、国民ID、または保存時に保護するために規制によって要求される可能性のあるその他のデータなど、個人を特定できる情報が含まれる場合があります。
機密情報に一致する正規表現を定義してから、そのデータを難読化するルールを作成できます。機密情報をマスクするかハッシュするかを選択できます。
定義 難読化ルール は、難読化アクションを適用するログを定義します。難読化ルールのアクション は、表示する属性、難読化するテキスト、および難読化する方法(マスキングまたはハッシュのいずれかによる)を定義します。難読化式 は、どのテキストを難読化するかを識別する正規表現と呼ばれます。マスキング すると、情報が完全に削除され、 X
文字に置き換えられます。これが行われると、特定の値を検索することはできません。ハッシュ は情報を隠します。ハッシュツールを使用して機密値のハッシュを取得し、そのハッシュを含むログを検索できます。難読化の仕組み このビデオ(4分未満)を見て、NewRelicUIでの難読化がどのように機能するかを確認してください。
次の例に表示されているJSONオブジェクトは、難読化APIで使用されるペイロードを簡略化したものです。これにより、さまざまなAPI操作を同等のUI操作とより適切に関連付けることができます。
例:難読化前のログレコード 次のようなログ記録があるとします。
"message" : "The credit card number 4321-5678-9876-2345 belongs to user user@email.com (born on 01/02/2003) with SSN 123-12-1234" ,
"creditCardNumber" : "4321-5678-9876-2345" ,
"serviceName" : "loginService"
このログレコードには、いくつかの機密データが含まれています。理想的には、このようなログに仕上げることです。
"message" : "The credit card number 9aa9bc1528859aee1b1df75795f1ebd54beb2f0d26c8a1d4580a71a07189cdd5 belongs to user user@email.com (born on XXXXXXXXXX) with SSN 30e6897f76dc102e32ee1d781c43417d259e586eac15c963d75ab8b5187769da" ,
"creditCardNumber" : "9aa9bc1528859aee1b1df75795f1ebd54beb2f0d26c8a1d4580a71a07189cdd5" ,
"ssn" : "30e6897f76dc102e32ee1d781c43417d259e586eac15c963d75ab8b5187769da" ,
"serviceName" : "loginService"
例:基本的なプロセス この例で機密データを難読化するために使用する基本的なプロセスは次のとおりです。
1.適用すべきアクション あなたは、そのサービスから来るすべてのログに以下の難読化アクションを適用することを決定します。
HASH
message
およびcreditCardNumber
属性に存在するクレジットカード番号。MASK
message
属性に存在する誕生日。HASH
message
およびssn
属性に存在する社会保障番号。2.センシティブなデータをどのように表現するか まず、この機密情報を取得するための難読化表現をいくつか定義する必要があります。
難読化表現
定義
クレジットカード番号
ハイフンで区切られた4桁のグループを4つ取り込む必要があります。
"name" : "Credit Card Number" ,
"regex" : "(d{4}-d{4}-d{4}-d{4})"
社会保障番号
ハイフンで区切られた3桁、2桁、4桁の3つのグループを捕捉する必要があります。
"name" : "Social Security Number" ,
"regex" : "(d{3}-d{2}-d{4})"
生年月日( loginService
固有)
この例では、生まれた日付はログインサービスの一部です。周囲の単語"(born on 01/02/2003)"
の日付情報に基づいて難読化する部分を定義します。
"name" : "Born date - loginService specific" ,
各難読化表現は、文字列から機密情報を取り出す方法を定義し(正規表現を使用)、後で簡単に識別できるように、いくつかのフレンドリーな名前に関連付けます。
難読化式は 再利用可能です。機密データを含むログ属性の命名方法に完全に依存しません。たとえば、上記で定義された社会保障式は、 ssn
、 socialSecurityNumber
、またはsocSecNum
という名前のログ属性に適用できます。
ただし、それでも、ログ属性の形式と緊密に結合された再利用不可能な難読化式( Born date (loginService specific)
など)を作成できます。たとえば、 born on
とbefore
の後に続くものは何でも使用できます。
3.どのログがあなたのルールを使用するか 機密データをキャプチャする方法を定義したので、どのログを難読化する必要があるか(ログインサービスのもの)、そしてどのように難読化するか(定義した難読化アクションを使用)を指定する必要があります。これを実現するために、難読化ルールを定義します。
"name" : "Obfuscate Login Service Logs" ,
"filter" : "serviceName = 'loginService' AND department = 'sales'" ,
"attributes" : [ "message" , "creditCardNumber" ] ,
"expression" : { "name" : "Credit Card Number" } ,
"attributes" : [ "message" ] ,
"expression" : { "name" : "Born date - loginService specific" } ,
"attributes" : [ "message" , "ssn" ] ,
"expression" : { "name" : "Social Security Number" } ,
このルールは主に3つの要素で構成されています。
難読化ルールコンポーネント
説明
名前
この名前は、ルールの機能を簡単に識別するのに役立ちます。この例では、このルールは、ログインサービスからのログのさまざまな属性を難読化する方法を定義します。
フィルター
フィルタはNRQL形式を使用して、ログインサービスからのターゲットログを識別する方法をシステムに通知します。この例では、 serviceName = loginService
とdepartment = sales
のログをクエリします。
アクション
最後に、このルールは、フィルターに一致するログに適用する一連の難読化アクションを定義します。各アクションは以下を定義します:
属性の各セットから機密情報を抽出するために使用する難読化式を以前に作成したもの
このデータを難読化するために適用する難読化方法( HASH_SHA256
またはMASK
)
GraphQL APIを介して難読化ルールを定義する場合、名前の代わりに難読化式のid
を指定する必要があることに注意してください。前の例を読みやすくするために、代わりに難読化式の名前を使用しました。
4.他のルールでの表現の再利用 最後の例として、属性serviceName = checkoutService
とクレジットカード情報を含むccn
属性を持つ「CheckoutService」という名前の別のサービスからのログを難読化する必要があると想像してください。
"message" : "Order completed" ,
"ccn" : "4321-5678-9876-2345" ,
"serviceName" : "checkoutService"
このサービスからのログを難読化するには、これらの特定のログを対象とする別の難読化ルールを定義するだけでよく、以前に作成したCredit card number
難読化式を再利用するだけです。
"name" : "Obfuscate Checkout Service Logs" ,
"filter" : "serviceName = 'checkoutService' AND department = 'sales'" ,
"expression" : { "name" : "Credit Card Number" } ,
チェックリスト:ログを難読化する手順 ログを難読化するために
ログに表示される機密データのパターンを特定して、ログの形状を調べます。例えば: すべてのログに機密情報が含まれていますか?それとも、もっと具体的に(サービスAや地域Bのログのみ)教えてください。 クレジットカード番号、運転免許証番号、国民ID、生体認証、その他の値など、どのような機密情報が含まれていますか? 機密データを抽出する方法を識別するための難読化式 を作成します。 ログのセットごとに難読化ルール を定義します。 NRQLを使ってどのように捕らえるかを定義する。 それぞれに適用する必要のある難読化アクションを定義します。自問してみてください:後でこの機密情報を使用してログを照会する必要がありますか( HASH
を使用することを検討してください)、またはログからこの情報を完全に削除する必要がありますか( MASK
を使用することを検討してください)? ヒント Logs Obfuscation UIにはハッシュツール が含まれているため、既知の値からハッシュを見つけてコピーし、他の式やルールで使用できます。
CPU制限 難読化には、1分あたりのCPU制限があります。アカウントがリソース制限に達した場合、ログは期待どおりに難読化されません。 CPU制限を確認するには、NewRelicData管理 UIのシステム制限 ページ に移動します。
Logs Obfuscation UIの[ Health ]タブを使用して、スキップされている難読化ルールがどの程度機能しているか、および微調整が必要かどうかを評価することもできます。難読化ルールはCPUに負荷がかかるため、これらのグラフは、リソースの制限によって最も影響を受けるルールを決定するのに役立ちます。
難読化表現 New Relic UIを使用するか、GraphQL ExplorerであるNerdGraphを使用して、難読化式を作成、読み取り、更新、または削除できます。
one.newrelic.com >ログ>難読化 :最初に1つ以上の難読化式を作成し、次に難読化ルールを作成します。
難読化表現を作成する これらのオプションのいずれかを使用して、難読化式を作成します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Create regex をクリックします。
新しい難読化ルールの名前と、キャプチャしたい機密データに一致する正規表現を入力します。 RE2 構文 を使用します。
次の例は、クレジットカード番号にマッチする基本的な難読化表現を示しています。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsCreateObfuscationExpression
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/ graphiql の関連ドキュメントを 参照してください。
重要 NerdGraphを介して導入する場合は、 regex
をエスケープする必要があります。 (\\d{4}-\\d{4}-\\d{4}-\\d{4})
難読化表現を読み込む 難読化式を照会するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Expressions タブを選択すると、利用可能なすべての難読化表現とその定義が表示されます。
ナードグラフを使って
actor.account.logConfigurations
の下にあるobfuscationExpressions
フェッチャーを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
難読化表現を更新する 難読化表現を更新するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Expressions タブを選択します。
編集したい難読化表現右側の3点メニュー ... をクリックし、 Edit をクリックします。
必要に応じてフィールドを修正し、 更新 をクリックします。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsUpdateObfuscationExpression
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
重要 NerdGraphを介して導入する場合は、 regex
をエスケープする必要があります。 (\\d{4}-\\d{4}-\\d{4}-\\d{4})
難読化表現を更新する際に、すべてのフィールドを指定する必要はなく、id(必須)と修正したいフィールドのみを指定すればよい。
難読化表現の削除 重要 難読化式が難読化ルールによって現在使用されている場合、難読化式を削除することはできません。
難読化表現を削除するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Expressions タブを選択します。
削除したい難読化表現の右側の3点メニュー ... をクリックし、 削除 をクリックします。
Delete をクリックして、式を削除することを確認します。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsDeleteObfuscationExpression
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
変異は、削除される前の式のスナップショットを返します。
難読化ルール New Relic UIを使用するか、GraphQL ExplorerであるNerdGraphを使用して、難読化ルールを作成、読み取り、更新、または削除できます。
難読化ルールの作成 難読化ルールを作成するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。難読化ルールの作成 をクリックします。新しい難読化ルールの名前と、難読化したいログのターゲットセットを捕捉するためのマッチング条件(NRQL形式)を入力します。 新しい actions
を追加して(最初のものは自動的に追加されます)、各属性セットをキャプチャする難読化式(正規表現)と、それらを MASK
または HASH
するかどうかを指定します。 Create rule をクリックし、難読化ルールを作成・有効化します。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsCreateObfuscationRule
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
難読化ルールを読む 難読化ルールを照会するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Rules タブ(デフォルト)を選択すると、利用可能なすべての難読化ルールとその定義が表示されます。
ナードグラフを使って
actor.account.logConfigurations
の下にあるobfuscationRules
フェッチャーを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
難読化ルールの更新 難読化ルールを更新するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Rules タブを選択します(デフォルト)。
編集したい難読化ルールの右側にある3つの点のメニュー ... をクリックし、 Edit をクリックします。
必要に応じてフィールドを変更し、 ルールの更新 をクリックします。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsUpdateObfuscationRule
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
重要 特定の難読化アクションにリンクするには、難読化expressionId
を指定する必要があります。このIDを取得するには、[query the obfuscationRules
]](#rules-read)で説明されているように、 obfuscationRules
を使用できます。
難読化ルールを更新するときに、すべてのフィールドを指定する必要はありませんid
(必須)と変更するフィールドのみを指定する必要があります。 名前のみを更新 する例を次に示します。
難読化ルールの削除 難読化ルールを削除するには、これらのオプションのいずれかを使用します。
ログUIを使用する。
one.newrelic.com > Logs にアクセスし、左のナビから Obfuscation を選択します。
Rules タブを選択します(デフォルト)。
削除したい難読化ルールの右側にある3つの点のメニュー ... をクリックし、 削除 ... をクリックします。
Delete をクリックして、式を削除することを確認します。
ナードグラフを使って
logConfigurations
の下にあるlogConfigurationsDeleteObfuscationRule
ミューテーターを使用します。 GraphiQLに入力された例と、api.newrelic.com/graphiql の関連ドキュメントを 参照してください。
変異は、削除される前のルールのスナップショットを返します。