メインコンテンツまでスキップ

パスワード · API キーの変更

データレイクのサービスアカウント(PostgreSQL · Cassandra · Valkey · MinIO · Kafka/MQTT …)と API キーはすべてのインストール環境が同じデフォルト値で始まります。コミッショニング時に必ず変更し、その後はポリシーに従ってローテーションします。

変更ツールはホスト上の**bin/passwd.sh 1つ**です。

cd /opt/kopens/plantpulse-platform-docker

bin/passwd.sh --list # 바꿀 수 있는 키 + 계정명 + 현재값(마스킹) + 정본 위치
bin/passwd.sh PP_PG_PASSWORD # 값을 생략하면 프롬프트 — 권장 (히스토리 · ps 에 안 남는다)
bin/passwd.sh PP_PG_PASSWORD=<새비밀번호> # 인라인
bin/passwd.sh PP_CASSANDRA_PASSWORD PP_MINIO_PASSWORD # 여러 개를 한 번에 — 재시작 1회
bin/passwd.sh --dry-run PP_MQ_PASSWORD # 계획만 — 아무것도 바꾸지 않는다
ファイルを開いてパスワード行を編集しないでください

パスワードは2つの場所に別々に存在します — サーバーが受け入れる値(PostgreSQL アカウント、Cassandra ロール …)とクライアントが提示する値(設定ファイル約20個)。両者は自動的には同期されません。サイドカーだけを編集すると次の再起動時にすべてのクライアントが認証に失敗し、サーバー側だけを変更するとすぐに失敗します。

passwd.sh は ① サーバー側アカウント変更 → ② サイドカー更新 → ③ 設定再レンダリング → ④ 再起動を1つのコマンド内で順序立てて実行します。

変更可能なキー

キーは環境変数名そのものです。postgres · mq のようなエイリアスはありません — どのキーがどのコンポーネントなのかは--list が示します。

キーコンポーネントアカウント値の正本はどこか
PP_PG_PASSWORDPostgreSQLplantpulseコマンドALTER ROLE (psql)
PP_TEMPORAL_PASSWORDTemporal のバックエンド PostgreSQL アカウントtemporalコマンドALTER ROLE (psql)
PP_HIVE_PASSWORDHive メタストアの PostgreSQL アカウント + Kyuubi インバウンド認証hiveコマンドALTER ROLE (psql) + 再レンダリング
PP_CASSANDRA_PASSWORDCassandracassandraコマンドALTER ROLE (cqlsh)
PP_REDIS_PASSWORDValkeyファイルplantpulse-storage/cache/valkey/conf/valkey.conf
PP_MINIO_PASSWORDMinIOminio起動 envMINIO_ROOT_PASSWORD
PP_MQ_PASSWORDKafka + HiveMQ — 1つの値を共有mqファイルkafka/config/jaas.conf + mqtt/conf/auth.properties
PP_CEP_API_KEYCEP API キー (X-API-Key)ファイルplantpulse-cep/config/plantpulse-cep.properties
PP_DATA_GATEWAY_API_KEYデータゲートウェイ API キーファイルplantpulse-data-gateway/config/plantpulse-jdbc.properties
PP_DATALAKE_ADMIN_PASSWORD管理コンソール ログインadmin起動 env — admin-api が自身の環境変数から読み込む
PP_DATALAKE_ADMIN_API_KEY管理コンソール ログエンドポイント X-API-Key起動 env

3つの意味:

  • コマンド — サーバーアカウントが正本です。SQL/CQL で変更し、設定ファイルは接続用のコピーに過ぎません。
  • ファイル — レンダリングされたそのファイルが正本です。再レンダリング + 再起動でのみ変更されます。
  • 起動 env — プロセス起動時に注入されます。ランタイム変更 API がないため、再起動が唯一の反映手段です。

アカウント名(PP_*_USER)は変更しません。--list に表示されるだけです。アカウント名の変更は、サーバー側ロール作成と権限移譲が必要な別のタスクです。

--list に管理コンソールキー2つが表示されない場合

PP_DATALAKE_ADMIN_PASSWORD · PP_DATALAKE_ADMIN_API_KEY2026-09-05 に追加されました。それ以前のインストールパッケージにはキーが9個だけです。その場合、コンソールパスワードはサーバー側アカウントがないためサイドカーを直接編集して再起動してください → ウェブ画面ログインアカウント

手順 — 初回のみ

コミッショニング時には、登録されたキーすべてをランダムな値でローテーションします。--allpasswd.sh ではなくローテーションエンジンrotate-secret.sh のオプションです。

cd /opt/kopens/plantpulse-platform-docker

bin/rotate-secret.sh --dry-run --all --generate # 어떤 키가 걸리는지 확인 — 아무것도 안 바꾼다
bin/rotate-secret.sh --all --generate # 실행. 키마다 20자 무작위 값
bin/passwd.sh --list --show # 결과 확인 — 값이 그대로 찍히니 화면 공유 중에는 치지 마세요
  • 必ずメンテナンスウィンドウで実行してください。ローテーション中に再起動が1回あり、Kafka/MQTT パスはその間切断されます。
  • 作業前にバックアップを取得してください。
  • 変更された値はサイドカー/etc/kopens/plantpulse-platform.env にのみあります。**引継資料には値ではなく「誰が保管するのか」**を記載してください。

手順 — 運用中に1つずつ

cd /opt/kopens/plantpulse-platform-docker
bin/passwd.sh --dry-run PP_PG_PASSWORD # 계획 확인
bin/passwd.sh PP_PG_PASSWORD # 프롬프트에 새 값 입력

完了したら確認します。

bin/status.sh # 0 = 정상
docker exec plantpulse-datalake pd node psql -c "SELECT 1;" # 새 비밀번호로 실제 접속되나
docker exec plantpulse-datalake pd node cql -e "SELECT now() FROM system.local;"
curl -kfsS https://<server-ip>:4950/api/health | jq .status # OK 또는 WARN

失敗時 — 同じコマンドを再実行

ローテーションはロールバックしません。 失敗時点ではどの値が有効かが不確実なため、戻すことでステータスをさらに悪化させる可能性があります。代わりに前方復旧します。

ホストの/etc/kopens/rotation.journal(0600)に新 · 旧の値が事前に記録されています。同じコマンドをそのまま再実行すると、各コンポーネントが現在どの値を受け入れているかをプローブして続行します。すでに変更されたものはスキップされます。

メッセージ意味対応
probe=NEITHER新 · 旧どの値でも接続不可自動化が判断する根拠がありません。その コンポーネントに直接接続して状態を確認してください
apply 失敗サーバー側変更失敗、即座に中止原因を修正して同じコマンドを再実行
verify 失敗サーバーは変更されたが新値で接続不可最も危険です。ジャーナルがAPPLIED に残ります — 人間が確認する必要があります
configure 失敗再起動なしで中止意図した動作です(旧設定で起動すると全認証失敗)。原因を修正して再実行
variable not in the registry登録されていないキー以下のローテーション非対象値を参照
ワーカーノードがある場合は拒否されます

クラスタワーカーが設定されている場合、ローテーションツールは拒否して中止します。ワーカーごとに別のサイドカーがあるため、マスターだけをローテーションするとワーカーが旧値のままでクラスタが半分になってしまうからです。ワーカーがある環境は手動手順に従い、ワーカーごとにサイドカー更新と再起動を繰り返してください。

PP_MQ_PASSWORD — Kafka と HiveMQ は一緒に変更されます

1つの値が2つのブローカーのサーバー側認証情報ストレージであり、すべてのクライアントの接続パスワードです。別々に変更することはできず、ローテーションツールの検証は両方が新値に接続できる場合のみ成功と判定します。

静的 JAAS は新 · 旧の値を同時に受け入れることができないため、ブローカーとコンシューマーが順序立てて再起動されている間MQ パスが切断されます。 ノンストップローテーションはサポート範囲外です。

PP_HIVE_PASSWORD — 1つの値が双方向で使われます

Hive メタストアが PostgreSQL に接続する際に提示する値である一方、クライアントが Kyuubi に接続する際に検証される値でもあります。そのため、ローテーションツールはPostgreSQL アカウント変更と設定再レンダリングの両方を実行します。手動で行う場合、1つだけ行うとメタストアまたは Kyuubi の一方が停止します。

ローテーション非対象値 — 手動で変更

レジストリにないキーが指定された場合、静かにスキップされるのではなく拒否されます。以下はまだ登録されていないもので、手動手順で変更します。

変数何か手動変更のポイント
PP_SPARK_PASSWORDSpark/Kyuubi クライアントアカウントサーバーアカウントが存在しません。hive-auth.properties がこの値でアカウントを作成します — サイドカー更新 + 再起動
PP_TSE_PASSWORD時系列エンジンアカウントサイドカー更新 + 再起動
PP_GRAVITINO_PASSWORD · PP_KESTRA_DB_PASSWORD各々のバックエンド PostgreSQL アカウントデータレイクは起動のたびに PostgreSQL ロールパスワードをサイドカー値に同期します — サイドカー更新 + 再起動
PP_KESTRA_ADMIN_PASSWORDKestra 管理者ウェブ画面ログインアカウント
PP_TLS_KEYSTORE_PASSWORD (+ truststore 派生セット)証明書全体証明書再発行と関連しています → セキュリティ設定
PP_OPCUA_PASSWORDOPC-UA サーバー(アプリコンテナ)データレイク外
PP_API_KEY · PP_FLOW_WEBHOOK_API_KEY外部呼び出し者用(アプリコンテナ)データレイク外
PP_DATA_GATEWAY_WEB_PASSWORD · PP_CEP_WEB_PASSWORDクエリコンソール ブラウザログインローテーション対象ではないという決定です(2026-09-07)。サイドカー更新 + 再起動 → ウェブ画面ログインアカウント

しないでください

  • コンテナ内でpd secret rotate を直接編集しないでください。 ローテーションジャーナルとサイドカーはコンテナ再生成で生き残るようにホストに置かれます。ホストのpasswd.sh がそれを呼び出します。
  • bin/env.sh のパスワードデフォルト値を編集して反映されることを期待しないでください。 サイドカーが優先されます。
  • --list --show 出力をチケット · チャットに貼り付けないでください。
  • ローテーション中にCtrl+C で中止して別の値で再開しないでください。 ジャーナルが最初の値を記憶しています。同じ値で再実行して完了させた後、再び変更してください。

関連文書