TLS暗号化によるPrometheus APIおよびUIエンドポイントの保護

Prometheusは、Prometheusインスタンス(式ブラウザやHTTP API)への接続にTransport Layer Security (TLS) 暗号化をサポートしています。これらの接続にTLSを強制したい場合は、特定のWeb設定ファイルを作成する必要があります。

注記このガイドは、PrometheusインスタンスへのTLS接続についてです。PrometheusインスタンスからスクレイプターゲットへのTLS接続もサポートされています。

前提条件

Prometheusインスタンスが既に稼働しており、それを調整したいとします。このガイドでは、Prometheusの初期設定については説明しません。

TLSで提供されるPrometheusインスタンスをexample.comドメイン(あなたが所有している)で実行したいとします。

また、OpenSSLまたは同様のツールを使用して、以下のものを生成したとします。

  • SSL証明書: /home/prometheus/certs/example.com/example.com.crt
  • SSLキー: /home/prometheus/certs/example.com/example.com.key

次のコマンドを使用して、自己署名証明書と秘密鍵を生成できます。

mkdir -p /home/prometheus/certs/example.com && cd /home/prometheus/certs/certs/example.com
openssl req \
  -x509 \
  -newkey rsa:4096 \
  -nodes \
  -keyout example.com.key \
  -out example.com.crt

プロンプトで適切な情報を入力し、「Common Name」プロンプトには必ず「example.com」と入力してください。

Prometheus設定

以下は、web-config.yml 設定ファイルの例です。この設定により、PrometheusはすべてのエンドポイントをTLSの背後で提供します。

tls_server_config:
  cert_file: /home/prometheus/certs/example.com/example.com.crt
  key_file: /home/prometheus/certs/example.com/example.com.key

Prometheusでこの設定を使用するには、--web.config.fileフラグを指定して呼び出す必要があります。

prometheus \
  --config.file=/path/to/prometheus.yml \
  --web.config.file=/path/to/web-config.yml \
  --web.external-url=https://example.com/

--web.external-url= フラグはここではオプションです。

テスト

example.comドメインを使用してTLSをローカルでテストしたい場合は、/etc/hostsファイルにexample.comlocalhostにリダイレクトするエントリを追加できます。

127.0.0.1     example.com

その後、cURLを使用してローカルのPrometheusセットアップと対話できます。

curl --cacert /home/prometheus/certs/example.com/example.com.crt \
  https://example.com/api/v1/label/job/values

--insecureまたは-kフラグを使用すると、証明書を指定せずにPrometheusサーバーに接続できます。

curl -k https://example.com/api/v1/label/job/values

このページの内容