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.com
をlocalhost
にリダイレクトするエントリを追加できます。
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