ログストリーミング
最終検証日:
翻訳: 竹洞 陽一郎
構成監査ログのストリーミングは、Personal、Personal Plus、およびEnterpriseプランでご利用いただけます。
ネットワークフローログのストリーミングは、Enterpriseプランでご利用いただけます。
ログストリーミングを使用すると、Tailscaleネットワーク(tailnetと呼ばれる)に関する構成監査ログまたはネットワークフローログを収集し、さまざまなシステムに送信して収集・分析を行うことができます。
Tailscaleのトラフィックを識別するには、User-Agent: TailscaleLogStreamPublisherを使用できます。
サポートされている連携先
Tailscaleは、ログストリーミングのさまざまな連携方法をサポートしています。
SIEM連携
セキュリティ情報・イベント管理(SIEM)システムにログをストリーミングすることで、セキュリティ脅威の検出と対応、アラートやモニタリングルールの設定などに役立てることができます。
以下のSIEMシステムとのログストリーミング連携をサポートしています。
- Axiom
- オブザーバビリティプラットフォーム。
- Cribl
- データパイプラインプラットフォーム。
- Datadog
- クラウドモニタリング・セキュリティプラットフォーム。
- Elasticsearch Logstash
- データストリーム経由で連携。
- Panther
- クラウドネイティブSIEMプラットフォーム。
- Splunk
- HTTP Event Collector経由で連携。
Amazon S3およびS3互換サービス
Amazon S3およびS3互換サービスにログをストリーミングして、さまざまなクラウドストレージプロバイダに保存できます。
以下のS3バケットタイプへのログ送信をサポートしています。
Google Cloudサービス
- Google Cloud Storage(GCS)
- Googleのオブジェクトストレージサービス。
その他の連携タイプ
ログストリーミングに使用できるその他の連携先は以下の通りです。
- プライベートエンドポイント
- Tailscaleネットワーク内のノードに直接ログを送信。詳細は後述の「プライベートエンドポイント」セクションをご参照ください。
- Vector
- オープンソースの高性能オブザーバビリティデータパイプライン。詳細は後述の「追加SIEMシステム」セクションをご参照ください。
前提条件
- エンドポイントと認証情報
- SIEM連携先またはS3クラウドストレージプロバイダのエンドポイントと認証情報が必要です。エンドポイントとAPI認証情報の取得方法については、各ベンダーのドキュメントをご参照ください。
- 管理者権限
- ストリーミング先の追加、編集、削除を行うには、Owner、Admin、Network admin、またはIT adminである必要があります。
構成ログのストリーミング
構成監査ログのストリーミングは、Personal、Personal Plus、およびEnterpriseプランでご利用いただけます。
構成ログストリーミングの追加
SIEM連携の場合
- 管理コンソールの構成ログページを開きます。
- 「Start streaming」を選択します。
- 「Start streaming configuration logs」ダイアログで以下を設定します。
- SIEM送信先
- 連携先のSIEMシステムを選択します。
- URL
-
SIEMエンドポイントを入力します。
エンドポイントURLはHTTPSプロトコルを使用する必要があり、ポートに制限はありません。
SplunkのHTTP Endpoint Connectorの場合は、/services/collector/eventで終わるエンドポイントが必要です。
Elasticsearchのデータストリームの場合は、<stream_id>/_bulk?prettyで終わるエンドポイントが必要です。 - Username
- SIEMシステムがユーザ名の値を必要とする場合、SIEMユーザ名を入力します。
- Token
- SIEM APIトークンを入力します。
- 「Start streaming」を選択します。
SIEMシステムを確認して、tailnetからのストリーミングが正常に行われていることを検証してください。
ネットワークの状態によっては、サードパーティツールでログストリーミングが表示されるまでに遅延が生じる場合があります。
Amazon S3の場合
管理コンソールの構成ログページから「Start streaming」を選択し、Amazon S3を送信先として設定します。 必要な情報(バケット名、リージョン、Role ARN等)を入力してストリーミングを開始します。
S3互換サービスの場合
Amazon S3と同様の手順で、S3互換サービス(Storj、Wasabi等)を送信先として設定します。 S3互換のエンドポイントURL、アクセスキー、シークレットキーを入力します。
Google Cloud Storageの場合
管理コンソールの構成ログページから「Start streaming」を選択し、Google Cloud Storageを送信先として設定します。 必要な認証情報とバケット情報を入力してストリーミングを開始します。
構成ログストリーミング先の編集
ログの送信先の情報を変更できます。
- 管理コンソールの構成ログページを開きます。
- 更新したいシステムの「Action」ドロップダウンを選択し、「Edit」を選択します。
- 必要に応じて値を更新します。
- 「Save changes」を選択します。
Amazon S3バケットのログストリーミング先を編集する場合、Role ARNフィールド(Amazonリソース名)は、そのリソース名が指定されたAWSアカウントに既に属している場合にのみ更新できます。
ロールがAWSアカウントに属していない場合は、管理コンソールでログストリーミング先を削除し、新しいものを作成する必要があります。
構成ログストリーミング先の削除
- 管理コンソールの構成ログページを開きます。
- 削除したい連携先の「Action」ドロップダウンを選択し、「Delete」を選択します。
- 確認ダイアログで「Delete」を選択します。
ネットワークログのストリーミング
ネットワークフローログのストリーミングは、Enterpriseプランでご利用いただけます。
ネットワークログストリーミング先の追加
SIEM連携の場合
- まだ有効にしていない場合は、tailnetのネットワークフローログを有効にします。
- 管理コンソールのネットワークフローログページを開きます。
- 「Start streaming」を選択します。
- 「Start streaming network logs」ダイアログで以下を設定します。
- SIEM送信先
- 連携先のSIEMシステムを選択します。
- URL
-
SIEMエンドポイントを入力します。
エンドポイントURLはHTTPSプロトコルを使用する必要があり、ポートに制限はありません。
SplunkのHTTP Endpoint Connectorの場合は、/services/collector/eventで終わるエンドポイントが必要です。
Elasticsearchのデータストリームの場合は、<stream_id>/_bulk?prettyで終わるエンドポイントが必要です。 - Username
- SIEMシステムがユーザ名の値を必要とする場合、SIEMユーザ名を入力します。
- Token
- SIEM APIトークンを入力します。
- 「Start streaming」を選択します。
SIEMシステムを確認して、tailnetからのストリーミングが正常に行われていることを検証してください。
ネットワークの状態によっては、サードパーティツールでログストリーミングが表示されるまでに遅延が生じる場合があります。
Amazon S3 / S3互換サービス / Google Cloud Storageの場合
構成ログストリーミングと同様の手順で、ネットワークフローログページからそれぞれのストレージサービスを送信先として設定します。
ネットワークログストリーミング先の編集
ログの送信先の情報を変更できます。
- 管理コンソールのネットワークフローログページを開きます。
- 更新したいシステムの「Action」ドロップダウンを選択し、「Edit」を選択します。
- 必要に応じて値を更新します。
- 「Save changes」を選択します。
Amazon S3バケットのログストリーミング先を編集する場合、Role ARNフィールド(Amazonリソース名)は、そのリソース名が指定されたAWSアカウントに既に属している場合にのみ更新できます。
ロールがAWSアカウントに属していない場合は、管理コンソールでログストリーミング先を削除し、新しいものを作成する必要があります。
ネットワークログストリーミング先の削除
- 管理コンソールのネットワークフローログページを開きます。
- 削除したい連携先の「Action」ドロップダウンを選択し、「Delete」を選択します。
- 確認ダイアログで「Delete」を選択します。
プライベートエンドポイント
ログストリーミングは、パブリックインターネット上で直接到達可能なホストにログを公開(パブリッシュ)できます。この場合、エンドポイントはセキュリティのためにHTTPSを使用する必要があります。
あるいは、パブリックインターネット上で直接到達できないプライベートホストに対して、Tailscaleを接続手段として使用してログを公開することもできます。 基盤となるトランスポートはTailscaleによりWireGuardで保護されるため、プレーンHTTPを使用できます。
プライベートホストへのログストリーミングの使用は、エンドポイントURLで指定されたホストに基づいて自動的に検出されます。
ホストはtailnet内のノードを参照する必要があり、以下のいずれかを使用できます。
- Tailscaleノード名
- 例:
splunk - Tailscaleノードの完全修飾ドメイン名
- 例:
splunk.yak-bebop.ts.net - TailscaleノードのIPv6アドレス
- 例:
fd7a:115c:a1e0:ab12:0123:4567:89ab:cdef
ログストリーミングではIPv6アドレスのみがサポートされています。
IPv4アドレスはサポートされていません。
これは、Tailscaleが単一のtailnet内のノードに割り当てるIPv4アドレスにCGNATを使用しているためです。IPv4アドレスはtailnet間で再利用される可能性があるため問題となり得ますが、IPv6アドレスは再利用されず、ホスト名は常に正しいノードにルーティングされます。
【訳注】CGNAT(Carrier-Grade NAT)とは、大規模なネットワークアドレス変換の仕組みです。
Tailscaleは各ノードに100.x.y.z形式のIPv4アドレス(CGNAT範囲: 100.64.0.0/10)を割り当てますが、このアドレス空間はtailnetごとに独立しているため、異なるtailnetで同じIPv4アドレスが使われる可能性があります。
一方、IPv6アドレスはグローバルに一意であるため、ログストリーミングではIPv6アドレスのみをサポートすることで、ノードの一意な識別を保証しています。
プライベートエンドポイントの仕組み
プライベートエンドポイントへのログストリーミングは、お客様のノードをTailscaleが管理するtailnetに共有(シェア)することで動作します。 Tailscaleが管理するノードが、お客様のノードに直接ログを公開します。
これには以下の2つの操作が必要です。
- お客様のノードをTailscaleのlogstream tailnetに共有(シェアアウト)する。
- tailnetポリシーファイルを変更して、
logstream@tailscaleユーザからお客様のノードへの着信トラフィックをサポートする。
プライベートホストを指すエンドポイントを追加または更新する際、コントロールプレーンはお客様に代わってノードの共有やtailnetポリシーファイルの更新を行う必要がある場合があります。 追加の設定変更が必要な場合は、フォローアップのダイアログボックスが表示され、必要なアクションの実行許可を求めます。 これらの操作に対して監査ログイベントが生成され、アクションはお客様に帰属します。
エンドポイントの追加または更新後、ノードは管理コンソールの「Machines」ページに、logstream@tailscaleユーザに共有されたものとして表示されます。
また、tailnetポリシーファイルは以下のようなルールで変更されます。
{
// プライベートログストリーミングにより、監査ログとネットワークログを
// パブリックインターネットに公開することなく、tailnet内のノードに
// 直接アップロードできます。
// このアクセスルールは、Tailscaleが管理するノードが
// 指定されたノードにログを直接アップロードするためのアクセスを提供します。
// 参照: https://tailscale.com/docs/features/logging/log-streaming#private-endpoints
"action": "accept",
"src": ["logstream@tailscale"],
"dst": ["[nodeAddressV6]:port"],
}
tailnetポリシーファイルの管理には、ビジュアルポリシーエディタを使用できます。 ビジュアルエディタの使用方法については、ビジュアルエディタリファレンスをご参照ください。
上記の設定で使用される値は以下の通りです。
nodeAddressV6- TailscaleノードのIPv6アドレス。
port- ログストリーミングシステムのサービスポート。
IPv6アドレスは、Internet ProtocolのIPv6経由でお客様のノードと通信できるログストリームパブリッシャーとして指定されます。
プライベートエンドポイントの権限要件
プライベートホストへのログストリーミングには、ノードの共有機能とtailnetポリシーファイルの更新機能の両方が必要になる場合があるため、AdminおよびNetwork adminロールのみが、プライベートエンドポイントを単独で使用するのに十分な権限を持ちます。
IT adminはノードの共有機能を持ちますが、tailnetポリシーファイルの更新機能はありません。 IT adminはプライベートエンドポイントを使用できますが、ログのストリーミングを開始する前に、AdminまたはNetwork adminがtailnetポリシーファイルを手動で更新する必要があります。
tailnetがTailscaleの管理にGitOpsを使用するように設定されている場合、TailscaleがtailnetポリシーファイルをIPv6更新しようとするとエラーが発生します。
このエラーを回避するには、まずGitOpsを使用してlogstream@tailscaleユーザからの着信トラフィックがプライベートエンドポイントに使用するノードに到達できるアクセスルールを追加し、その後にプライベートエンドポイントをログストリーミングURLとして追加してください。
追加SIEMシステム
Tailscaleはお客様が使用する多くの一般的なSIEMシステムのサポートに努めていますが、市場に存在するすべての商用・オープンソースのSIEMおよびロギングツールをサポートすることはできません。
一部のSIEMシステムは、SentinelOneのDataSetのように、Splunk HTTP Event Collector(Splunk HEC)互換のエンドポイントを持っています。 お使いのSIEMがSplunk HECをサポートしている場合は、上記の手順に従って構成監査ログのストリーミングおよびネットワークフローログのストリーミングを設定し、Splunkであるかのように直接SIEMにログをストリーミングできます。
Tailscaleがお使いのSIEMシステムをサポートしていない場合は、Vector(オープンソースの高性能オブザーバビリティデータパイプライン)を使用して、VectorのSplunk HECサポートによりTailscaleからログデータを取り込み、Vectorがサポートする多数のSIEMシステム(Vectorの用語で「シンク」と呼ばれる)に配信できます。 Vectorは、オブジェクトストレージシステム、メッセージキューイングシステム、Grafana Loki、New Relicなど、多数のシンクをサポートしています。
Vectorのデプロイ
TailscaleからのログストリーミングでVectorを使用するには、以下の手順を実行します。
- Vectorのデプロイガイドに従って、インフラストラクチャにVectorを実行するマシンをデプロイします。
- VectorのSplunk HTTP Event Collector(HEC)ソースを設定し、TailscaleがVectorにログデータを送信できるようにします。
- お使いのSIEM用のVectorシンクを、ログストリーミングデータの送信先として設定します。
- 上記の手順に従って構成監査ログのストリーミングおよびネットワークフローログのストリーミングを設定し、Vectorインスタンスにログをストリーミングします。理想的にはプライベートエンドポイントを使用してください。
Vectorの設定例
以下のVector設定は、splunk_hecソースからデータを受信し、fileシンクにデータを出力します。
# /etc/vector/vector.yaml
sources:
splunk_hec:
type: "splunk_hec"
address: "100.x.y.z:8088" # VectorのTailscaleデバイスのIPまたはホスト名
valid_tokens:
- "YOUR TOKEN"
sinks:
file_sink:
type: "file"
inputs:
- "splunk_hec"
path: "/vector-data-dir/tailscale-%Y-%m-%d.log"
encoding:
codec: "json"