本番環境への移行
本番環境に ClickStack をデプロイする際には、セキュリティ、安定性、適切な構成を確保するために、追加で考慮すべき点がいくつかあります。
ネットワークとポートのセキュリティ
デフォルトでは、Docker Compose はホスト側のポートを公開するため、ufw (Uncomplicated Firewall) のようなツールが有効になっていても、コンテナ外部からアクセスできてしまいます。これは Docker のネットワークスタックの仕様によるもので、明示的に設定しない限り、ホストレベルのファイアウォールルールをバイパスしてしまう可能性があります。
推奨事項:
本番運用で必要なポートだけを公開してください。通常は OTLP エンドポイント、API サーバー、フロントエンドのみです。
例えば、docker-compose.yml ファイル内で不要なポートマッピングを削除するか、コメントアウトしてください。
コンテナの分離やアクセス制御の強化の詳細については、Docker ネットワークに関するドキュメントを参照してください。
セッションシークレットの設定
本番環境では、セッションデータを保護し改ざんを防ぐために、EXPRESS_SESSION_SECRET 環境変数に十分に強力でランダムな値を必ず設定する必要があります。
アプリケーションサービス用に docker-compose.yml ファイルに追加する方法は次のとおりです。
openssl を使用して強度の高いシークレットを生成できます:
機密情報をバージョン管理システムにコミットしないようにしてください。本番環境では、Docker Secrets、HashiCorp Vault、環境ごとの CI/CD 設定などの環境変数管理ツールの利用を検討してください。
セキュアなインジェスト
すべてのインジェストは、ClickStack ディストリビューションに含まれる OpenTelemetry (OTel) collector が公開している OTLP ポート経由で行う必要があります。デフォルトでは、起動時に自動生成されるセキュアなインジェスト API key が必要です。このキーは OTel ポート経由でデータを送信する際に必須であり、HyperDX UI の Team Settings → API Keys で確認できます。

さらに、OTLP エンドポイントに対して TLS を有効にし、ClickHouse へのインジェスト専用ユーザーを作成することを推奨します。
ClickHouse
本番環境でのデプロイには、ClickHouse Cloud の利用を推奨します。ClickHouse Cloud は、強化された暗号化、認証と接続性、マネージドなアクセス制御を含む、業界標準のセキュリティ対策をデフォルトで適用します。ClickHouse Cloud をベストプラクティスに沿って利用するための手順については、「ClickHouse Cloud」を参照してください。
ユーザー権限
HyperDX ユーザー
HyperDX 用の ClickHouse ユーザーは、以下の設定にアクセスして変更できる権限を持つ readonly ユーザーであれば十分です。
max_rows_to_read(少なくとも 100 万行まで)read_overflow_modecancel_http_readonly_queries_on_client_closewait_end_of_query
デフォルトでは、OSS と ClickHouse Cloud の両方で default ユーザーがこれらの権限を持っていますが、これらの権限を付与した新しいユーザーを作成することを推奨します。
データベースおよびインジェスト用ユーザー
OTel collector が ClickHouse にデータをインジェストするための専用ユーザーを作成し、インジェスト先として特定のデータベース(例:otel)を指定することを推奨します。詳細については "Creating an ingestion user" を参照してください。
自前運用時のセキュリティ
自前で ClickHouse インスタンスを運用している場合は、SSL/TLS を有効化し、認証を必須とし、アクセスの堅牢化に関するベストプラクティスに従うことが不可欠です。実際の誤った設定例とその回避方法については、このブログ記事も参照してください。
ClickHouse OSS は標準で堅牢なセキュリティ機能を提供します。ただし、これらは適切な設定が必要です。
config.xmlのtcp_port_secureと<openSSL>を使用して SSL/TLS を利用 します。詳しくは guides/sre/configuring-ssl を参照してください。defaultユーザーに対して 強力なパスワードを設定 するか、無効化します。- 明示的な意図がない限り、ClickHouse を外部に公開しないようにします。デフォルトでは、
listen_hostが変更されない限り、ClickHouse はlocalhostのみにバインドされます。 - パスワード、証明書、SSH 鍵、または external authenticators などの 認証方式を利用 します。
- IP フィルタリングと
HOST句を使用して アクセスを制限 します。詳しくは sql-reference/statements/create/user#user-host を参照してください。 - ロールベースアクセス制御 (RBAC) を有効化 し、きめ細かな権限を付与します。詳しくは operations/access-rights を参照してください。
- quotas、settings profiles、および読み取り専用モードを使用して クォータと制限を適用 します。
- 保存データを暗号化 し、安全な外部ストレージを使用します。詳しくは operations/storing-data および cloud/security/CMEK を参照してください。
- 認証情報をハードコードしないでください。 named collections または ClickHouse Cloud の IAM ロールを使用します。
- system logs および session logs を使用して アクセスとクエリを監査 します。
ユーザー管理およびクエリやリソース制限を確実に適用するには、external authenticators や query complexity settings も参照してください。
Time To Live (TTL) の設定
ClickStack デプロイメントに対して、Time To Live (TTL) が適切に設定されていることを確認します。これはデータの保持期間を制御します。デフォルトは 3 日ですが、多くの場合は変更が必要になります。
MongoDB ガイドライン
公式の MongoDB セキュリティ チェックリスト に従ってください。
ClickHouse Cloud
以下は、ベストプラクティスに準拠した、ClickHouse Cloud を用いたシンプルな ClickStack のデプロイ例です。
サービスを作成する
サービスを作成するには、ClickHouse Cloud のクイックスタートガイドに従ってください。
接続情報をコピーする
HyperDX 用の接続情報を確認するには、ClickHouse Cloud コンソールにアクセスし、サイドバーの Connect ボタンをクリックして、HTTP 接続情報、特に URL を控えてください。
このステップで表示されるデフォルトのユーザー名とパスワードを使って HyperDX に接続することもできますが、専用ユーザーを作成することを推奨します。詳細は以下を参照してください。

HyperDX ユーザーを作成する
HyperDX 用に専用ユーザーを作成することを推奨します。Cloud SQL コンソールで、複雑性要件を満たす安全なパスワードを指定して、次の SQL コマンドを実行します。
ClickStack をデプロイする
ClickStack をデプロイします。Helm または Docker Compose(ClickHouse を除外するように修正)のデプロイメントモデルを推奨します。
上級ユーザーは、OTel collector と HyperDX を、それぞれのスタンドアロンデプロイメントモードで個別にデプロイできます。
ClickHouse Cloud を Helm チャートと併用するための手順はこちらを参照してください。Docker Compose 用の同等の手順はこちらを参照してください。
HyperDX UI に移動する
http://localhost:8080 にアクセスして HyperDX UI を開きます。
ユーザーを作成し、要件を満たすユーザー名とパスワードを入力します。

Create をクリックすると、接続情報の入力を求められます。
ClickStack にデータを送信する
ClickStack にデータを送信する方法については、「OpenTelemetry データの送信」を参照してください。
