ユーザー管理
概要
このドキュメントでは、PlantPulse プラットフォームのユーザーアカウント、セキュリティグループ、権限管理の方法について説明します。
ユーザー管理は、左側メニューの System > ユーザー (/user/index) で行います。
ユーザー構造
PlantPulse のユーザー管理は、3つの主要な要素で構成されます。
- ユーザー (User): プラットフォームにログインする個別のアカウントです。
- セキュリティグループ (Security Group): ユーザーの役割を定義するグループです。各ユーザーは1つのセキュリティグループに属します。
- 権限 (Permission): セキュリティグループに割り当てられた機能別のアクセス権限です。メニュー、画面、API へのアクセスを制御します。
3種類のロール
製品が提供するロールは3つだけです。
| ロール | 画面表示 | 用途 |
|---|---|---|
ADMIN | システム管理者 | 全機能。他者のパスワード変更・ユーザー管理が可能 |
API | API 開発者 | 外部システム連携アカウント |
USER | 一般ユーザー | 基本機能 |
以前のドキュメントにこれらの名前が記載されていましたが、製品に存在しないロールです。ユーザー登録 画面のロール選択肢にも表示されません。
MANAGER は«半分»あります — 使わないでくださいMANAGER は上記の3つとは事情が異なります。
| ユーザー登録画面 | 選択肢になし。保存パスが ADMIN·API·USER のみ受け付けます |
| サーバーアクセス制御 | あり — 設備コマンド実行ルール、タグ・接続・アラーム画面の書き込みボタン表示条件が «ADMIN または MANAGER» です |
POST /api/v5/user | ロール値を検証しないため、MANAGER がそのまま保存されます |
| ログイン後 | 遷移分岐が ADMIN・API → ダッシュボード、USER → 共有画面の2つだけ — MANAGER アカウントはローディング画面で停止します |
そのため、API で MANAGER を設定することは、アカウントを使用不能にする行為です。
すでにそのようなアカウントがある場合は、ロールを3つのいずれかに変更してください。
最小権限の原則: 人が使うアカウントは
USERから始め、管理が必要な人にのみADMINを付与してください。
ユーザー属性
| 属性 | 必須 | 説明 |
|---|---|---|
| ユーザー ID | O | ログインに使用する一意の識別子 (英字、数字、4〜20文字) |
| ユーザー名 | O | 画面に表示される名前 |
| パスワード | O | ログインパスワード (12〜50文字、下記のパスワードポリシー参照) |
| メール | - | 通知受信メールアドレス |
| ロール | O | ADMIN / API / USER のいずれか |
| ステータス | O | 有効 (Active) または無効 (Inactive) |
| 説明 | - | ユーザーに関するメモ |
| 作成日時 | 自動 | アカウント作成日時 |
| 最終ログイン | 自動 | 最終ログイン日時 |
ユーザー一覧の表示
左側メニュー System > ユーザー を選択すると、登録済みユーザーの一覧を確認できます。
- URL:
/user/index - ユーザー ID、名前、セキュリティグループ、ステータス、最終ログイン日時を確認できます。
- 検索フィルターを使用して、特定のユーザーをすばやく見つけることができます。
案内: ユーザー一覧は、ADMIN セキュリティグループに属するユーザーのみ閲覧できます。
ユーザー追加
- ユーザー一覧画面で追加ボタンをクリックします。
- 必須項目を入力します。
- ユーザー ID: 英字と数字で構成される一意の ID (4〜20文字)
- ユーザー名: 画面に表示される名前
- パスワード: 12〜50文字で、英字大文字・小文字・数字・特殊文字の4種類のうち3種類以上を含める必要があります。不足している場合、保存は拒否されます。
- ロール:
ADMIN/API/USERのいずれかを選択します。
- 任意項目 (メール、説明など) を必要に応じて入力します。
- 保存ボタンをクリックします。
参照: ユーザー ID は作成後に変更できません。慎重に設定してください。
ユーザー編集
- ユーザー一覧から編集するユーザーをクリックします。
- 編集可能な項目を変更します (名前、メール、セキュリティグループ、ステータス、説明など)。
- 保存ボタンをクリックします。
案内: ユーザー ID は編集できません。ID を変更するには、既存のユーザーを削除して新規作成する必要があります。
ユーザー削除
- ユーザー一覧から削除するユーザーを選択します。
- 削除ボタンをクリックします。
- 確認ポップアップで確認をクリックします。
注意: 削除されたユーザーは復元できません。ユーザーを一時的にブロックするには、削除ではなく無効化を使用することを推奨します。
ユーザー無効化
ユーザーアカウントを削除せずにログインをブロックするには、無効化機能を使用します。
- ユーザー編集画面でステータスを
Inactiveに変更します。 - 保存ボタンをクリックします。
無効化されたユーザーはログインがブロックされますが、データ (監査ログ、設定履歴など) はそのまま保持されます。再度有効化するには、ステータスを Active に変更してください。
パスワード管理
パスワードは画面の1か所で変更します — 左側メニュー System > ユーザー 一覧です。
パスワード変更 (初期パスワードの交換)
インストール直後に初期パスワードを変更する方法はこれです。
- 左側メニュー System > ユーザー を開きます。
- 対象ユーザー行の 🔑 鍵アイコン をクリックします (ツールチップ: "パスワード変更")。
- 新しいパスワードを入力します。自分のアカウントの場合は、現在のパスワードも一緒に入力する必要があります。
- 保存します。
誰が誰のパスワードを変更できるかは、ルールが定められています。
| 対象 | 必要な権限 | 現在のパスワード確認 |
|---|---|---|
| 自分自身 | なし (ログイン済みであれば) | 必須 — 間違っていると拒否 |
| 他のユーザー | ADMIN | 不要 |
ADMINではないユーザーが他人のパスワードを変更しようとすると拒否され、サーバーログに監査記録が残ります。 成功した変更もPassword changed: session_user=[...], target_user=[...]形式で記録されます。
REST API でも同じことができます。
POST /api/v5/user/{user_id}/password
Content-Type: application/json
{ "current_password": "<current-password>", "password": "<new-password>" }
パスワード紛失時の対応
- 管理者に依頼:
ADMINユーザーが上記の手順で初期化します。 - DB 直接初期化 (緊急時):
ADMINアカウントまで全てロックされた場合にのみ使用します。
パスワードは BCrypt ハッシュで保存されます。以前のドキュメントに記載されていた
encode(digest(..., 'sha256'), 'hex') 方式で値を入れると、ログイン時に BCrypt 検証が
その文字列を解釈できず、どのパスワードでもログインできなくなります。 あいにく、既に
ロックされた状況で使う手順のため、復旧手段がなくなります。
テーブル名も pp_user ではなく USER_LOGIN です。
BCrypt ハッシュをまず作成し、その値を入れます。
# BCrypt 해시 생성 (htpasswd — apache2-utils / httpd-tools 패키지)
htpasswd -bnBC 10 "" '<new-password>' | tr -d ':\n'
# → $2y$10$... 형태의 문자열이 나옵니다
-- 비상 시에만. 위에서 만든 BCrypt 해시를 그대로 넣습니다.
UPDATE USER_LOGIN
SET PASSWORD = '<$2y$10$... paste-here>'
WHERE USER_ID = 'admin';
入れた直後に必ずログインで確認し、成功したら画面で一度、通常の経路で変更してください。 インフラサービスアカウント (PostgreSQL・Aster TSDB・RustFS など) のパスワードは、このドキュメントではなく パスワード変更 (クレデンシャルローテーション) に従ってください — 順序を誤るとプラットフォームが起動しません。
パスワードポリシー
製品が強制するもの — 以下に違反すると、保存自体が拒否されます。
| 項目 | 値 |
|---|---|
| 長さ | 12文字以上 50文字以下 |
| 複雑さ | 英字大文字・小文字・数字・特殊文字の4種類のうち3種類以上 |
製品が強制しないもの — 運用規程で管理する必要があります。以下の項目はプラットフォームに 機能がないため、必要であれば組織の手順で対応してください。
| 項目 | ステータス |
|---|---|
| 変更周期の強制・有効期限 | なし |
| 以前のパスワード再利用禁止 | なし |
| 辞書 (dictionary) ブロック | なし |
| アカウントの恒久的ロック | なし — 代わりに下記の一時ブロックがあります |
ブルートフォース攻撃のブロック (一時ブロック)
ログイン失敗が蓄積すると、アカウントがロックされるのではなく、一定時間リクエストがブロックされます
(HTTP 429 + Retry-After)。時間が経過すると自動的に解除されるため、管理者が解除する必要はありません。
| 設定 | プロパティ | デフォルト値 |
|---|---|---|
| 機能使用 | engine.session.bruteforce.enabled | 使用 |
| IP あたりの失敗許容 | engine.session.bruteforce.ip_limit | 30回 |
| アカウントあたりの失敗許容 | engine.session.bruteforce.user_limit | 10回 |
| 集計区間 | engine.session.bruteforce.window.seconds | 300秒 (5分) |
ブロックはIP 基準とアカウント基準の2つの系統でそれぞれカウントされます。オフィスのように複数の人が同じ パブリック IP を使用する場合、他の人の失敗が IP 上限 (30回) を一緒に消費する可能性があります。 ブロック・失敗はすべて監査ログ (
LOGIN_BLOCKED/LOGIN_FAILURE) に記録されます。
セキュリティグループ管理
デフォルトのセキュリティグループ
PlantPulse は3つのデフォルトのセキュリティグループを提供します。
| セキュリティグループ | 説明 | 主な権限 |
|---|---|---|
| ADMIN | システム管理者 | 全機能アクセス (ユーザー管理、システム設定、すべてのメニュー) |
| OPERATOR | オペレーター | 運用関連機能へのアクセス (モニタリング、アラーム管理、データ参照) |
| USER | 一般ユーザー | 基本機能へのアクセス (ダッシュボード参照、データ参照) |
セキュリティグループの追加
デフォルトグループの他に、組織の役割に合わせたセキュリティグループを追加できます。
- セキュリティ管理 > セキュリティグループ メニューを選択します。
- 追加ボタンをクリックします。
- グループ ID、グループ名、説明を入力します。
- 保存ボタンをクリックします。
権限設定
セキュリティグループにメニューおよび機能別の権限を設定します。
- セキュリティ管理 > セキュリティグループ メニューでグループを選択します。
- 権限設定タブをクリックします。
- 各メニュー/機能について読み取り、書き込み、削除権限をチェックします。
- 保存ボタンをクリックします。
権限設定の例:
| メニュー | ADMIN | OPERATOR | USER |
|---|---|---|---|
| 接続管理 | 読み取り/書き込み/削除 | 読み取り/書き込み | 読み取り |
| ファクトリー管理 | 読み取り/書き込み/削除 | 読み取り/書き込み | 読み取り |
| アラーム管理 | 読み取り/書き込み/削除 | 読み取り/書き込み | 読み取り |
| ユーザー管理 | 読み取り/書き込み/削除 | - | - |
| システム設定 | 読み取り/書き込み/削除 | 読み取り | - |
| キャンバス | 読み取り/書き込み/削除 | 読み取り/書き込み | 読み取り |
アクセス制御
サイトアクセス制御
マルチサイト環境では、ユーザーごとにアクセス可能なサイトを制限できます。
- ユーザー編集画面でサイトアクセス権限タブを選択します。
- アクセスを許可するサイトをチェックします。
- 保存ボタンをクリックします。
案内: サイトアクセス権限が設定されていないユーザーは、すべてのサイトにアクセスできます。
キャンバス共有
キャンバス画面は、特定のユーザーまたはセキュリティグループと共有できます。
- キャンバス編集画面で共有設定をクリックします。
- 共有対象を選択します。
- 全体公開: すべてのユーザーがアクセス可能です。
- セキュリティグループ: 選択したセキュリティグループのユーザーのみアクセス可能です。
- ユーザー指定: 選択したユーザーのみアクセス可能です。
- 保存ボタンをクリックします。
セッション管理
セッションタイムアウト
ユーザーのセッションタイムアウトは、デフォルトで30分に設定されています。30分間アクティビティがない場合、自動的にログアウトされます。
セッションタイムアウトを変更するには、web.xml で設定を編集します。
<!-- WEB-INF/web.xml inside the webapp (bundled in the WAR — reset on deploy, so change it in the source) -->
<session-config>
<session-timeout>30</session-timeout> <!-- in minutes -->
</session-config>
同時ログイン
デフォルトでは、同じアカウントで複数のブラウザー/デバイスから同時にログインできます。セキュリティが重要な環境では、アカウントをユーザーごとに分けて発行し、アクセス IP 制限などのネットワークレベルの統制で補完することを推奨します。
監査ログ
ユーザーの主要なアクティビティは、監査ログに自動的に記録されます。監査ログを通じて、システム変更履歴を追跡できます。
記録されるアクティビティ:
| アクティビティタイプ | 説明 |
|---|---|
| ログイン/ログアウト | ユーザー認証イベント |
| ユーザー管理 | ユーザーの作成、編集、削除、無効化 |
| セキュリティグループ変更 | グループの作成、編集、削除、権限変更 |
| システム設定変更 | プロパティ、接続情報などの設定変更 |
| データ修正 | ファクトリー、設備、ポイントなどのマスターデータ変更 |
監査ログは ツール > 監査ログ メニューで閲覧でき、期間、ユーザー、アクティビティタイプでフィルタリングできます。
一括ユーザー登録
多数のユーザーを一度に登録するには、Excel ファイルを使用して一括登録できます。
登録手順
- セキュリティ管理 > ユーザー管理 メニューでExcel アップロードボタンをクリックします。
- テンプレートの Excel ファイルをダウンロードします。
- テンプレートに従ってユーザー情報を入力します。
| 列 | 必須 | 説明 | 例 |
|---|---|---|---|
| user_id | O | ユーザー ID | operator01 |
| user_name | O | ユーザー名 | 홍길동 |
| password | O | 初期パスワード | Temp1234! |
| - | メール | hong@example.com | |
| security_group | O | セキュリティグループ ID | OPERATOR |
| description | - | 説明 | 생산1팀 |
- 作成した Excel ファイルをアップロードします。
- プレビューで登録するユーザー情報を確認します。
- 登録ボタンをクリックします。
案内: アップロード時にバリデーションが実行されます。重複 ID、必須項目の欠落などのエラーがある場合、該当する行が表示され、修正後に再アップロードできます。
ベストプラクティス
- 最小権限の原則: ユーザーには業務に必要な最小限の権限のみを付与してください。
- 管理者アカウントの最小化: ADMIN グループのユーザーは最小限に抑え、通常の運用には OPERATOR グループを使用してください。
- 定期的な監査: 四半期ごとにユーザー一覧と権限をレビューし、不要なアカウントを無効化してください。
- 退職者への対応: 退職時には、すぐにアカウントを無効化または削除してください。
- 共有アカウントの禁止: 個人別のアカウントを使用し、共有アカウントの使用は避けてください。
- パスワード管理: 初期パスワードは必ず変更するよう案内し、定期的なパスワード変更を促してください。
- ログ監視: 異常なログイン試行 (繰り返しの失敗、異常な時間帯のアクセスなど) を監視してください。
よくある問題
ログイン失敗
| 症状 | 原因 | 解決方法 |
|---|---|---|
| ログイン失敗 ID またはパスワードを再確認してください。 | ID のタイプミス・パスワードのタイプミス・存在しないアカウント・無効なアカウント — 4つすべてがこの1つのメッセージです | ID・パスワードを再確認 (Caps Lock 含む)。それでもダメな場合、アカウントが有効かどうかをユーザー一覧で確認 |
ログイン試行が多すぎます (N秒後に再試行) | 連続失敗によるブロック (HTTP 429) | 表示された秒数だけ待ちます。管理者が解除できるロックではありません — 時間が経てば自動的に解除されます |
| ログイン画面が表示されない | Web サーバー未起動またはネットワーク問題 | サーバーの状態とネットワーク接続を確認してください |
連続失敗ブロックは時間窓でのみ解除されます (デフォルト 300秒) — 管理者画面に解除する
ボタンはありません。問い合わせがあれば「数秒後に再試行してください」が正解です。
しきい値を変更するには、ログイン失敗時の対応の
engine.session.bruteforce.* を参照してください。
無効なアカウントも間違ったパスワードと同じメッセージが表示されます。ユーザーは自分のアカウントが 無効化されていることを知ることができないため、管理者が一覧でステータスを代わりに確認する必要があります。
権限不足
| 症状 | 原因 | 解決方法 |
|---|---|---|
| メニューが表示されない | セキュリティグループにそのメニューへのアクセス権限がない | 管理者に権限の追加を依頼してください。 |
| "アクセス権限がありません" メッセージ | API または機能権限の不足 | セキュリティグループの権限設定を確認してください。 |
| 特定サイトのデータが表示されない | サイトアクセス権限が未設定 | ユーザーのサイトアクセス権限を確認してください。 |
セッション期限切れ
| 症状 | 原因 | 解決方法 |
|---|---|---|
| 作業中にログイン画面へ切り替わる | セッションタイムアウト (デフォルト 30分) | 再度ログインしてください。タイムアウトが短い場合は web.xml で調整してください。 |
| 他のデバイスでログアウトされる | 同時ログインポリシー (KICK) による強制終了 | 同時ログイン設定を確認してください。 |
| セッション関連エラーが繰り返される | Redis キャッシュ障害 | Redis サービスの状態を確認してください。 |