Simple Log Service (SLS) から、Splunk や QRadar などのオンプレミスのセキュリティ情報およびイベント管理 (SIEM) プラットフォームにログを転送します。これにより、クラウドログを既存のオンプレミスのセキュリティ分析プラットフォームと統合し、統合されたモニタリング、監査、脅威分析を実現できます。
仕組み
オンプレミスネットワーク内にデプロイされたコンシューマーアプリケーションが、ログデータのフェッチを担当します。SLS 使用者グループを使用してリアルタイムでログをプルし、Splunk HTTP Event Collector (HEC) や TCP/TLS 経由の Syslog などのプロトコルを使用して SIEM に転送します。
このプロセスはプルベースのアーキテクチャ上に構築されており、設計上、以下の主要な利点があります。
セキュリティ: プルモデルにより、すべての接続がセキュアなネットワークから開始されることが保証されます。インバウンドファイアウォールポートを開く必要がなく、オンプレミスのセキュリティ体制を維持できます。
高スループットとスケーラビリティ: 水平方向にスケーリングすることで高スループットを実現します。複数のコンシューマーインスタンスを同時に実行でき、使用者グループはすべてのアクティブなインスタンス間でワークロードを自動的に分散します。
信頼性: 使用者グループは、少なくとも 1 回の配信を保証します。コンシューマーインスタンスに障害が発生した場合、処理していたシャードはグループ内の他の正常なインスタンスに自動的に再割り当てされます。消費は最後に保存されたチェックポイントから再開され、データ損失を防ぎます。
前提条件
権限: Resource Access Management (RAM) ユーザーを作成し、
AliyunLogFullAccessポリシーをユーザーにアタッチします。詳細については、「関連ドキュメント」をご参照ください。ネットワーク要件: プログラムを実行するマシンは、SLS エンドポイントにアクセスでき、SIEM と同じネットワーク内にある必要があります。
エンドポイントを取得するには:
SLS コンソールにログインします。プロジェクトリストで、ターゲットプロジェクトをクリックします。
プロジェクト名の右側にある
アイコンをクリックして、プロジェクトの概要ページに移動します。[エンドポイント] セクションで、パブリックエンドポイントを表示します。エンドポイントは
https://+ パブリックエンドポイント です。
環境要件: Python 3 ランタイム環境と SLS Python SDK。
SLS Python SDK をインストールします:
pip install -U aliyun-log-python-sdk。インストールを確認します:
pip show aliyun-log-python-sdk。次の情報が返された場合、インストールは成功です。Name: aliyun-log-python-sdk Version: 0.9.12 Summary: Aliyun log service Python client SDK Home-page: https://github.com/aliyun/aliyun-log-python-sdk Author: Aliyun
手順
ステップ 1: アプリケーションの準備
SLS は 2 つの転送メソッドを提供します:
Splunk HEC: HEC はトークンベースのメカニズムで、さまざまなデータ形式のログを HTTP 経由で安全かつ効率的に Splunk に直接送信できます。
Syslog: ほとんどの SIEM と互換性があり、テキスト形式をサポートする一般的なログチャネルです。
Splunk HEC
ログデータを Splunk に転送するには、sync_data.py を設定します。コードは主に 3 つの部分で構成されています:
main() メソッド: メインプログラムのエントリポイント。
get_option() メソッド: 消費設定オプション。
基本設定オプション: SLS の接続設定と使用者グループの設定が含まれます。
使用者グループの高度なオプション: パフォーマンスチューニングパラメーター。必要がない限り変更しないでください。
SIEM (Splunk) 関連のパラメーターとオプション。
転送プロセス中にデータクレンジング (行のフィルタリング、列のトリミング、データの正規化など) を実行するには、SPL クエリを使用してルールを追加します。例:
# SPL 文 query = "* | where instance_id in ('instance-1', 'instance-2')" # ルールに基づいてコンシューマーを作成します。通常の消費と比較して、クエリパラメーターはパラメーターリストの末尾に追加されます。 option = LogHubConfig(endpoint, accessKeyId, accessKey, project, logstore, consumer_group, consumer_name, cursor_position=CursorPosition.SPECIAL_TIMER_CURSOR, cursor_start_time=cursor_start_time, heartbeat_interval=heartbeat_interval, data_fetch_interval=data_fetch_interval, query=query)
SyncData(ConsumerProcessorBase): SLS からデータをフェッチして Splunk に転送するロジックが含まれています。コード内のコメントを注意深く確認し、必要に応じて調整してください。
完全なコードは次のとおりです:
Syslog
Syslog は、主に RFC5424 および RFC3164 に基づくログ形式の仕様を定義しています。RFC 5424 プロトコルの使用を推奨します。TCP と UDP の両方で Syslog を転送できますが、TCP は UDP よりも信頼性の高いデータ転送を提供します。RFC 5424 プロトコルは、TLS を使用したセキュアなトランスポートレイヤーも定義しています。お使いの SIEM が Syslog 用の TCP または TLS チャネルをサポートしている場合は、そのチャネルを使用することをお勧めします。
Syslog を使用して SIEM にログデータを転送するには、sync_data.py を設定します。コードは主に 3 つの部分で構成されています:
main() メソッド: メインプログラムのエントリポイント。
get_monitor_option() メソッド: 消費設定オプション。
基本設定オプション: SLS の接続設定と使用者グループの設定が含まれます。
使用者グループの高度なオプション: パフォーマンスチューニングパラメーター。必要がない限り変更しないでください。
SIEM の Syslog サーバーに関連するパラメーターとオプション。
Syslog ファシリティ: プログラムコンポーネント。この例では、デフォルトとして
syslogclient.FAC_USERを使用します。Syslog 重大度: ログレベル。必要に応じて、特定のコンテンツのログレベルを設定します。ここでは、
syslogclient.SEV_INFOが選択されています。SIEM が TCP または TLS に基づく Syslog チャネルをサポートしている場合は、proto を TLS に設定し、正しい SSL 証明書を設定します。
SyncData(ConsumerProcessorBase): SLS からデータを取得し、SIEM Syslog サーバーに配信する方法のロジックが含まれています。コード内のコメントを注意深く読み、必要に応じて調整してください。
完全なコードは次のとおりです:
ステップ 2: 環境変数の設定
アプリケーションを設定した後、次の表で説明するようにシステム環境変数を設定します。
環境変数 | 値 | 例 |
SLS_ENDPOINT |
エンドポイントに |
|
SLS_PROJECT | SLS コンソールで、ターゲットプロジェクト名をコピーします。 | my-sls-project-one |
SLS_LOGSTORE | SLS コンソールで、ターゲット Logstore 名をコピーします。 | my-sls-logstore-a1 |
SLS_AK_ID | RAM ユーザーの AccessKey ID を使用します。 重要
| L***ky |
SLS_AK_KEY | RAM ユーザーの AccessKey シークレットを使用します。 | x***Xl |
SLS_CG | 使用者グループ名。指定したグループが存在しない場合、アプリケーションは自動的に作成します。 | syc_data |
ステップ 3: 開始と検証
同時消費のために複数のコンシューマーを開始します。コンシューマーの最大数は、シャードの総数と同じです。
# 最初のコンシューマープロセスを開始 nohup python3 sync_data.py & # 2 番目のコンシューマープロセスを開始 nohup python3 sync_data.py &SLS コンソールで使用者グループのステータスを確認します。
プロジェクトリストで、目的のプロジェクトをクリックします。 タブで、目的の Logstore の横にある
アイコンをクリックし、次に [データ消費] の横にある
アイコンをクリックします。使用者グループリストで、目的のグループをクリックします。[使用者グループのステータス] ページで、各シャードのデータ消費のクライアントと時刻を表示します。
よくある質問
ConsumerGroupQuotaExceed エラーが発生する
このエラーは、制限を超えたことを示します。単一の Logstore には最大 30 の使用者グループを持つことができます。SLS コンソールで未使用の使用者グループを削除してください。