本番環境への移行
When deploying ClickStack in production, there are several additional considerations to ensure security, stability, and correct configuration.
ネットワークおよびポートのセキュリティ
デフォルトでは、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) コレクタによって公開されたOTLPポート経由で行う必要があります。デフォルトでは、これは起動時に生成されたセキュアな取り込みAPIキーが必要です。このキーはOTelポートにデータを送信する際に必要で、HyperDX UIのチーム設定 → APIキー
で見つけることができます。

加えて、OTLPエンドポイントのTLSを有効にし、ClickHouseの取り込み用に専用のユーザーを作成することを推奨します。
ClickHouse
本番デプロイメントには、業界標準のセキュリティプラクティスをデフォルトで適用するClickHouse Cloudの使用を推奨します - これには強化された暗号化、認証と接続、および管理されたアクセスコントロールが含まれます。ClickHouse Cloudを使用する際のベストプラクティスに関するステップバイステップのガイドは"ClickHouse Cloud"を参照してください。
ユーザーの権限
HyperDXユーザー
HyperDX用のClickHouseユーザーは、以下の設定を変更するアクセスを持つreadonly
ユーザーである必要があります。
max_rows_to_read
(少なくとも100万まで)read_overflow_mode
cancel_http_readonly_queries_on_client_close
wait_end_of_query
デフォルトでは、OSSおよびClickHouse Cloudの両方のdefault
ユーザーにこれらの権限が利用可能ですが、これらの権限を持つ新しいユーザーを作成することを推奨します。
データベースおよび取り込みユーザー
ClickHouseへの取り込みのためにOTelコレクタ用の専用ユーザーを作成し、取り込みが特定のデータベース(例:otel
)に送信されるようにすることを推奨します。詳細は"取り込みユーザーの作成"を参照してください。
セルフマネージドセキュリティ
独自のClickHouseインスタンスを管理している場合、SSL/TLSを有効にし、認証を強制し、アクセスの強化に関するベストプラクティスに従うことが不可欠です。実際の誤設定に関する文脈と、それを避ける方法についてはこのブログ記事を参照してください。
ClickHouse OSSは、基本的に堅牢なセキュリティ機能を提供します。ただし、これには設定が必要です。
- SSL/TLSの使用:
tcp_port_secure
およびconfig.xml
内の<openSSL>
を介して。詳しくはguides/sre/configuring-sslを参照。 default
ユーザーのために強力なパスワードを設定するか、無効にします。- ClickHouseを外部に公開しないことをお勧めします。デフォルトでは、ClickHouseは
listen_host
が変更されない限りlocalhost
のみにバインドします。 - パスワード、証明書、SSHキーのような認証方法を使用します、または外部認証機関を使用します。
- 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もご参照ください。
有効期限 (TTL) の設定
ClickStackデプロイメントに対してTime To Live (TTL)が適切に設定されていることを確認してください。これはデータがどのくらいの期間保持されるかを制御します - デフォルトの3日はしばしば変更する必要があります。
MongoDBガイドライン
公式のMongoDBセキュリティチェックリストに従ってください。
ClickHouse Cloud
以下は、ベストプラクティスを満たすClickHouse Cloudを使用したClickStackのシンプルなデプロイメントを示しています。
サービスを作成する
ClickHouse Cloudの開始ガイドに従って、サービスを作成します。
接続詳細をコピーする
HyperDXの接続詳細を見つけるには、ClickHouse Cloudコンソールに移動し、サイドバーの接続ボタンをクリックしてHTTP接続詳細、特にURLを記録します。
このステップに表示されるデフォルトのユーザー名とパスワードを使用してHyperDXに接続できますが、専用のユーザーを作成することを推奨します - 詳細は以下を参照

HyperDXユーザーを作成する
HyperDX用の専用ユーザーを作成することを推奨します。Cloud SQLコンソールで、複雑さ要件を満たす安全なパスワードを提供して、以下のSQLコマンドを実行します:
HyperDX UIに移動する
http://localhost:8080にアクセスしてHyperDX UIに移動します。
ユーザーを作成し、要件を満たすユーザー名とパスワードを提供します。

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