Salesforceを安定して、かつ安全に運用していく上で欠かせないのが「ログ」の管理です。システムのエラー調査やパフォーマンス分析はもちろん、セキュリティ監査やコンプライアンス維持においても、ログは極めて重要な役割を果たします。

本記事では、ITエンジニアを200名以上抱え、システム開発を25年以上経験する弊社、FS部 佐々木舞美が、Salesforceの各種ログの種類、具体的な出力・取得方法、そして適切な削除・保存期間の設定を含めたログの総合的な管理手法を徹底的に解説します。

その他、知識ゼロでも安心!Salesforce更新の完全攻略を開発担当者が、別記事でもまとめておりますので合わせて参考にしてください。


Salesforceログの重要性とは?

Salesforceのログは、「いつ、誰が、何を、どのように行ったか」というシステム内での全てのアクティビティを記録した履歴データです。

ログが果たす主要な役割

  • トラブルシューティングと分析: Apexコードのエラーや処理の遅延が発生した際の原因特定。
  • パフォーマンスの監視: 特定の処理やトランザクションにかかる時間を把握し、改善点を特定。
  • セキュリティと監査: データのアクセス履歴やユーザーの不審な操作ログを確認し、不正行為や情報漏洩を防止。
  • コンプライアンスの維持: 規制や内部ポリシーに基づいたデータの利用状況を証明。

Salesforceログの種類と目的

Salesforceには、目的や用途に応じて複数のログの種類が存在します。主要なものを理解することが、ログ管理の第一歩です。

ログの種類記録される主な内容主な用途
デバッグログApexコード、ワークフロー、プロセスビルダーなどの実行詳細。開発時のエラー調査、処理の最適化。
イベントログ組織内のアクティビティ、パフォーマンス、セキュリティイベント。大規模な監査、パフォーマンスの長期的な分析。
APIログ外部システムからのAPI呼び出しの詳細(リクエスト/レスポンス)。外部連携の健全性確認、連携エラー調査。
メールログ送信されたメール(成功/失敗)の詳細情報。メール配信トラブルの調査。
アクセスログユーザーのログイン、ログアウト、アクセス履歴。セキュリティ監査、利用状況の把握。

デバッグログの出力と活用方法

デバッグログの出力と活用方法

開発者やシステム管理者にとって最も利用頻度が高いのがデバッグログ(Debug Log)です。

デバッグログの出力方法(Developer Consoleを利用)

  1. [設定] から [デバッグログ] 画面に移動し、トレースフラグを設定します。
  2. ログを出力したいユーザー、クラス、またはトリガーを指定します。
  3. トレースの有効期限とログレベルを設定します。
  4. 対象ユーザーが処理を実行すると、ログが記録されます。
  5. Developer Consoleを開き、「Logs」タブから生成されたログを確認・分析します。

活用例

  • 特定処理のエラーメッセージがどこで発生したかを正確に特定します。
  • SOQLクエリの実行回数やガバナ制限の消費状況を確認し、コードの最適化に役立てます。

セキュリティと監査に不可欠な操作ログの取得

セキュリティとコンプライアンスの観点から、Salesforce 操作 ログ 取得は必須です。

イベントログは、この操作ログの取得に最も適した機能です。ログイン、ログアウト、オブジェクトへのアクセス、レポートのエクスポートなど、広範なユーザーおよびシステムのアクティビティが記録されます。

特に機密データへのアクセスやシステム設定の変更といった重要な操作ログは、定期的に確認し、必要に応じて外部に保存することが推奨されます。


Salesforce イベントモニタリングの活用

Salesforce イベントモニタリングは、Salesforceのアクティビティを詳細かつリアルタイムに近いレベルで監視・分析するための強力な機能です。

イベントモニタリングとは?

標準のイベントログよりもさらに詳細なデータを提供し、不審な挙動やセキュリティリスクを検知するために利用されます。

  • 詳細なイベント: 「レポートのエクスポート」「リストビューのアクセス」など、具体的な操作に基づいたログを取得できます。
  • 脅威の検知: 普段利用しない場所からのログイン、大量のデータエクスポートといった異常なアクティビティをイベントモニタリングによって監視し、異常を検知した際にアラートを出すことができます。

この機能は、データ漏洩リスクの特定や、セキュリティポリシーの違反を迅速に発見するために非常に有効です。


イベントログ取得の自動化とスクリプト例

Salesforce イベントログ取得を自動化する最も一般的な方法は、Salesforce REST APIを利用することです。これにより、組織のイベントログファイルをプログラム的に取得し、外部ストレージへ保存する作業を定期的に実行できます。

このプロセスは主に以下の2つのステップで構成されます。

  1. 取得したいイベントログファイルの一覧(URI)を取得する。
  2. 各ファイルのURIに対してダウンロードリクエストを送信し、ファイルを保存する。

ここでは、APIとの連携を最もシンプルに示せるcURLコマンド(コマンドラインツール)を使用した例で、概念を説明します。

ステップ1:イベントログファイルの一覧(URI)の取得

イベントログファイルは「EventLogFile」というオブジェクトとして管理されています。まず、このオブジェクトにSOQLクエリを実行し、ダウンロード可能なファイルの一覧を取得します。

【cURLコマンドによるファイル一覧取得の例(概念)】

Bash

# 認証情報とインスタンス情報を設定
export INSTANCE_URL="https://yourdomain.my.salesforce.com"
export ACCESS_TOKEN="YOUR_SALESFORCE_ACCESS_TOKEN"

# EventLogFileオブジェクトに対して、過去2日分のログを照会
curl -X GET $INSTANCE_URL/services/data/v60.0/query/?q="SELECT Id, LogFile, EventType, CreatedDate, LogDate FROM EventLogFile WHERE LogDate = LAST_N_DAYS:2" \
-H "Authorization: Bearer $ACCESS_TOKEN"

取得される情報:

上記のクエリを実行すると、過去2日間に生成されたイベントログファイルのリストがJSON形式で返されます。特に重要なのは、以下のフィールドです。

  • Id: EventLogFileオブジェクトのID
  • LogFile: ログファイル本体をダウンロードするためのURI(エンドポイント)
  • LogDate: ログが記録された日付

ステップ2:ログファイル本体のダウンロード

ステップ1で取得した各レコードのLogFileフィールドの値(URI)を使用して、ログファイル本体をダウンロードします。

【cURLコマンドによるログファイルダウンロードの例(概念)】

Bash

# ステップ1で取得したLogFileのURIを使用
export DOWNLOAD_URI="/services/data/v60.0/sobjects/EventLogFile/a1IXXXXXXXXXX/LogFile"

# ファイルをダウンロードし、ローカルに保存
curl -X GET $INSTANCE_URL$DOWNLOAD_URI \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/vnd.salesforce.eventlog" \
--output "EventLog_Login_2024-01-01.csv"

ダウンロードされたファイルは、通常CSV形式で、ログの種類(EventType)に応じて詳細な情報が含まれています。

自動化のための実装のヒント

実際の自動化では、これらのAPIリクエストをPythonやNode.jsなどのプログラミング言語で実装します。

  • プログラミング言語の利用: PythonのrequestsライブラリやSalesforce専用のSDK(例: simple-salesforce)を使用して、認証情報の管理とAPI呼び出しを実装します。
  • スケジュール設定: WindowsのタスクスケジューラやLinuxのcron、あるいはクラウドサービスのAWS Lambdaなどを使用して、このスクリプトを毎日決まった時間に実行するよう設定します。
  • 長期保存: ダウンロードしたログファイルは、AWS S3やGoogle Cloud Storageなどの外部ストレージに自動でアップロードすることで、Salesforce アクセス ログ 保存 期間(30日間)を超えて永続的に保持できます。

Salesforce アクセスログの確認とセキュリティ監査

Salesforce アクセスログの確認とセキュリティ監査

Salesforce アクセス ログ 確認は、誰がいつシステムにアクセスしたかを把握し、不正アクセスがないか監査するために重要です。

アクセスログの確認方法

ログイン履歴は [設定] → [ログイン履歴] で簡単に確認できますが、より詳細なアクセスログ(例:URLのアクセス履歴)は、主にイベントログファイルの一部として提供されます。

特定のユーザーの不審なログイン(例:深夜帯のログイン、異なる国からの連続ログイン)を早期に検知し、組織のセキュリティ体制を強化するために活用します。


大量のログを効率的に管理:イベントログ取得

Salesforce イベントログ取得は、主にAPI(SOAP API、REST API)を経由して行われます。

イベントログの効率的な取得

  1. API経由の取得: イベントログファイルは通常、指定されたAPIエンドポイントからダウンロードします。これにより、大量のログデータをバッチ処理で効率的に取得できます。
  2. 外部システムへの連携: 取得したイベントログを、SplunkやELK Stackなどの外部のセキュリティ情報およびイベント管理(SIEM)システムに連携することで、長期的な保存と高度な分析が可能になります。

ログの保存期間と管理ポリシー

Salesforceの各種ログには標準の保存期間が設定されています。

Salesforce アクセス ログ 保存 期間の注意点

ログの種類標準の保存期間備考
デバッグログ24時間サイズ制限を超えると古いログから自動削除されます。
イベントログ30日過去30日間のログがAPI経由で取得可能です。
ログイン履歴6ヶ月組織設定によって履歴の保持数が異なります。

コンプライアンス要件により1年、3年といった長期保存が必要な場合は、必ずイベントログを30日以内にAPI経由で出力・取得し、外部ストレージ(AWS S3、Azure Blobなど)に保存する必要があります。


不要なログの適切な

削除方法

ログの容量が組織の制限を超えると、新しいログが記録できなくなる可能性があります。特にデバッグログは容量を圧迫しやすいため、適切な管理が必要です。

Salesforce ログ 削除のポイント

  • デバッグログの削除: デバッグログは、手動で削除することも、有効期限が切れるのを待って自動削除させることも可能です。不要になったトレースフラグはすぐに無効化しましょう。
  • 大容量ログの管理: イベントログやアクセスログは、30日間の保存期間を過ぎるとシステムから自動的に削除されます。永続的な保持が必要な場合は、必ず前述のように外部への出力・取得を定期的に実施してください。

まとめ:Salesforceログ管理を成功させるために

Salesforceのログは、システムの「鏡」です。これを適切に管理することは、開発、運用、セキュリティの全ての面で組織に大きなメリットをもたらします。

ログ管理を成功させるためのベストプラクティスは以下の通りです。

  1. ログの用途を明確にする: デバッグログ、イベントログなど、用途に応じて使い分ける。
  2. セキュリティログを長期保存する: イベントログを定期的に取得し、コンプライアンス要件に合わせた保存期間を設定する。
  3. 不要なログは適切に削除する: 特にデバッグログの容量を常に意識する。

Salesforceのログは、エラーの「原因」を知るためだけでなく、ビジネスの成長を阻害するセキュリティリスクやパフォーマンスの問題を未然に防ぐための「財産」です。

本記事で解説したログの種類、出力・取得、そして削除・保存期間に関する知識を活用し、貴社のSalesforce環境をよりセキュアで、より快適なものにしてください。

Salesforceの活用についてご相談ください!

株式会社エフ・ディー・シーはSalesforceコンサルティングパートナー

株式会社FDC(SFsolution)ではSalesforce定着・活用支援・内製化支援をはじめさまざまな課題に対応できるサポート体制があります。
Salesforceでのお困りごとがありましたら、当社カスタマーサクセスチームの無料相談から、ぜひお問い合わせください。