ユーザー管理
概要
このドキュメントでは、PlantPulse プラットフォームのユーザーアカウント、セキュリティグループ、権限管理の方法を説明します。
ユーザー管理は左側メニューの System > ユーザー (/user/index) で実行します。
ユーザー構造
PlantPulse のユーザー管理は 3 つの核となる要素で構成されています。
- ユーザー(User): プラットフォームにログインする個別のアカウントです。
- セキュリティグループ(Security Group): ユーザーのロールを定義するグループです。各ユーザーは 1 つのセキュリティグループに属します。
- 権限(Permission): セキュリティグループに割り当てられた機能別のアクセス権限です。メニュー、画面、API へのアクセスを制御します。
ロール 3 種
提供されるロールは3 つだけです。
| ロール | 画面表示 | 用途 |
|---|---|---|
ADMIN | システム管理者 | 全機能。他のユーザーのパスワード変更・ユーザー管理が可能 |
API | API 開発者 | 外部システム連携用アカウント |
USER | 一般ユーザー | 基本機能 |
古いドキュメントにこれらの名前が掲載されていますが、製品に存在しないロールです。ユーザー登録
画面のロール選択肢にも表示されません。MANAGER も同様です。
最小権限の原則: 人が使用するアカウントは
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・Cassandra・MinIO など) のパスワードはこのドキュメントではなく パスワード変更 (クレデンシャルローテーション) に従ってください — 順序を誤るとプラットフォームが起動しません。
パスワードポリシー
製品が強制する項目 — 以下に違反すると保存自体が拒否されます。
| 項目 | 値 |
|---|---|
| 長さ | 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 またはパスワードが正しくありません」 | パスワード入力誤り | パスワードを確認して再度試してください。Caps Lock の状態も確認してください。 |
| 「無効化されたアカウントです」 | アカウントが Inactive 状態 | 管理者にアカウント有効化を要求してください。 |
| 「アカウントがロックされています」 | ログイン連続失敗によるロック | 管理者にロック解除を要求してください。 |
| ログイン画面が表示されない | ウェブサーバー未実行またはネットワーク問題 | サーバー状態とネットワーク接続を確認してください。 |
権限不足
| 症状 | 原因 | 対応 |
|---|---|---|
| メニューが表示されない | セキュリティグループにメニューアクセス権限がない | 管理者に権限追加を要求してください。 |
| 「アクセス権限がありません」メッセージ | API または機能権限不足 | セキュリティグループの権限設定を確認してください。 |
| 特定サイトのデータが表示されない | サイトアクセス権限が未設定 | ユーザーのサイトアクセス権限を確認してください。 |
セッション有効期限切れ
| 症状 | 原因 | 対応 |
|---|---|---|
| 作業中にログイン画面に切り替わる | セッションタイムアウト (デフォルト 30分) | もう一度ログインしてください。タイムアウトが短すぎる場合は web.xmlで調整してください。 |
| 他のデバイスでログアウトになった | 同時ログインポリシー (KICK) による強制終了 | 同時ログイン設定を確認してください。 |
| セッション関連エラーが繰り返す | Redis キャッシュ障害 | Redis サービスの状態を確認してください。 |