본문으로 건너뛰기

사용자 관리

개요

이 문서에서는 PlantPulse 플랫폼의 사용자 계정, 보안 그룹, 권한 관리 방법을 안내합니다. 사용자 관리는 좌측 메뉴 System > 사용자 (/user/index) 에서 수행합니다.

사용자 구조

PlantPulse의 사용자 관리는 세 가지 핵심 요소로 구성됩니다.

  • 사용자(User): 플랫폼에 로그인하는 개별 계정입니다.
  • 보안 그룹(Security Group): 사용자의 역할을 정의하는 그룹입니다. 각 사용자는 하나의 보안 그룹에 속합니다.
  • 권한(Permission): 보안 그룹에 할당된 기능별 접근 권한입니다. 메뉴, 화면, API에 대한 접근을 제어합니다.

역할 3종

제품이 제공하는 역할은 셋뿐입니다.

역할화면 표시용도
ADMIN시스템 관리자전체 기능. 타인 비밀번호 변경·사용자 관리 가능
APIAPI 개발자외부 시스템 연동 계정
USER일반 사용자기본 기능
OPERATOR · ENGINEER · VIEWER 는 없습니다

예전 문서에 이 이름들이 실려 있었지만 제품에 존재하지 않는 역할입니다. 사용자 등록 화면의 역할 선택지에도 나오지 않습니다. MANAGER 도 마찬가지입니다.

최소 권한 원칙: 사람이 쓰는 계정은 USER 로 시작하고, 관리가 필요한 사람에게만 ADMIN 을 주세요.

사용자 속성

속성필수설명
사용자 IDO로그인에 사용하는 고유 식별자 (영문, 숫자, 4~20자)
사용자 이름O화면에 표시되는 이름
비밀번호O로그인 비밀번호 (12~50자, 아래 비밀번호 정책 참고)
이메일-알림 수신 이메일 주소
역할OADMIN / API / USER 중 하나
상태O활성(Active) 또는 비활성(Inactive)
설명-사용자에 대한 메모
생성일자동계정 생성 일시
최종 로그인자동마지막 로그인 일시

사용자 목록 조회

좌측 메뉴 System > 사용자 를 선택하면 등록된 사용자 목록을 확인할 수 있습니다.

  • URL: /user/index
  • 사용자 ID, 이름, 보안 그룹, 상태, 최종 로그인 일시를 확인할 수 있습니다.
  • 검색 필터를 사용하여 특정 사용자를 빠르게 찾을 수 있습니다.

안내: 사용자 목록은 ADMIN 보안 그룹에 속한 사용자만 조회할 수 있습니다.

사용자 추가

  1. 사용자 목록 화면에서 추가 버튼을 클릭합니다.
  2. 필수 항목을 입력합니다.
    • 사용자 ID: 영문과 숫자로 구성된 고유 ID (4~20자)
    • 사용자 이름: 화면에 표시될 이름
    • 비밀번호: 12~50자이면서 영문 대문자·소문자·숫자·특수문자 4종 중 3종 이상을 포함해야 합니다. 미달이면 저장이 거부됩니다.
    • 역할: ADMIN / API / USER 중 하나를 선택합니다.
  3. 선택 항목 (이메일, 설명 등)을 필요에 따라 입력합니다.
  4. 저장 버튼을 클릭합니다.

참고: 사용자 ID는 생성 후 변경할 수 없습니다. 신중하게 설정해 주세요.

사용자 수정

  1. 사용자 목록에서 수정할 사용자를 클릭합니다.
  2. 수정 가능한 항목을 변경합니다 (이름, 이메일, 보안 그룹, 상태, 설명 등).
  3. 저장 버튼을 클릭합니다.

안내: 사용자 ID는 수정할 수 없습니다. ID를 변경하려면 기존 사용자를 삭제하고 새로 생성해야 합니다.

사용자 삭제

  1. 사용자 목록에서 삭제할 사용자를 선택합니다.
  2. 삭제 버튼을 클릭합니다.
  3. 확인 팝업에서 확인을 클릭합니다.

주의: 삭제된 사용자는 복구할 수 없습니다. 사용자를 일시적으로 차단하려면 삭제 대신 비활성화를 사용하는 것을 권장합니다.

사용자 비활성화

사용자 계정을 삭제하지 않고 로그인을 차단하려면 비활성화 기능을 사용합니다.

  1. 사용자 수정 화면에서 상태Inactive로 변경합니다.
  2. 저장 버튼을 클릭합니다.

비활성화된 사용자는 로그인이 차단되지만 데이터(감사 로그, 설정 이력 등)는 그대로 유지됩니다. 다시 활성화하려면 상태를 Active로 변경해 주세요.


비밀번호 관리

비밀번호는 화면 한 곳에서 바꿉니다 — 좌측 메뉴 System > 사용자 목록입니다.

비밀번호 변경 (기본 비밀번호 교체)

설치 직후 기본 비밀번호를 바꾸는 방법이 이것입니다.

  1. 좌측 메뉴 System > 사용자 를 엽니다.
  2. 대상 사용자 행의 🔑 열쇠 아이콘 을 클릭합니다 (툴팁: "비밀번호 변경").
  3. 새 비밀번호를 입력합니다. 본인 계정이면 현재 비밀번호도 함께 입력해야 합니다.
  4. 저장합니다.

누가 누구의 비밀번호를 바꿀 수 있는지는 규칙이 정해져 있습니다.

대상필요 권한현재 비밀번호 확인
본인없음 (로그인만 되어 있으면)필수 — 틀리면 거부
다른 사용자ADMIN불필요

ADMIN 이 아닌 사용자가 남의 비밀번호를 바꾸려 하면 거부되고 서버 로그에 감사 기록이 남습니다. 성공한 변경도 Password changed: session_user=[...], target_user=[...] 형태로 기록됩니다.

REST API 로도 같은 일을 할 수 있습니다.

POST /api/v5/user/{user_id}/password
Content-Type: application/json

{ "current_password": "<현재 비밀번호>", "password": "<새 비밀번호>" }

비밀번호 분실 처리

  • 관리자에게 요청: ADMIN 사용자가 위 절차로 초기화해 줍니다.
  • DB 직접 초기화 (비상 시): ADMIN 계정까지 전부 잠긴 경우에만 씁니다.
SHA-256 으로 넣으면 계정이 영구히 잠깁니다

비밀번호는 BCrypt 해시로 저장됩니다. 예전 문서에 실려 있던 encode(digest(..., 'sha256'), 'hex') 방식으로 값을 넣으면, 로그인 시 BCrypt 검증이 그 문자열을 해석하지 못해 어떤 비밀번호로도 로그인할 수 없게 됩니다. 하필 이미 잠긴 상황에서 쓰는 절차라 복구 수단이 사라집니다.

테이블 이름도 pp_user 가 아니라 USER_LOGIN 입니다.

BCrypt 해시를 먼저 만들고, 그 값을 넣습니다.

# BCrypt 해시 생성 (htpasswd — apache2-utils / httpd-tools 패키지)
htpasswd -bnBC 10 "" '<새 비밀번호>' | tr -d ':\n'
# → $2y$10$... 형태의 문자열이 나옵니다
-- 비상 시에만. 위에서 만든 BCrypt 해시를 그대로 넣습니다.
UPDATE USER_LOGIN
SET PASSWORD = '<$2y$10$... 붙여넣기>'
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_limit30회
계정 당 실패 허용engine.session.bruteforce.user_limit10회
집계 구간engine.session.bruteforce.window.seconds300초 (5분)

차단은 IP 기준과 계정 기준 두 갈래로 각각 셉니다. 사무실처럼 여러 사람이 같은 공인 IP 를 쓰면 다른 사람의 실패가 IP 한도(30회)를 함께 채울 수 있습니다. 차단·실패는 모두 감사 로그(LOGIN_BLOCKED / LOGIN_FAILURE)에 남습니다.


보안 그룹 관리

기본 보안 그룹

PlantPulse는 세 가지 기본 보안 그룹을 제공합니다.

보안 그룹설명주요 권한
ADMIN시스템 관리자전체 기능 접근 (사용자 관리, 시스템 설정, 모든 메뉴)
OPERATOR운영자운영 관련 기능 접근 (모니터링, 알람 관리, 데이터 조회)
USER일반 사용자기본 기능 접근 (대시보드 조회, 데이터 조회)

보안 그룹 추가

기본 그룹 외에 조직의 역할에 맞는 보안 그룹을 추가할 수 있습니다.

  1. 보안 관리 > 보안 그룹 메뉴를 선택합니다.
  2. 추가 버튼을 클릭합니다.
  3. 그룹 ID, 그룹 이름, 설명을 입력합니다.
  4. 저장 버튼을 클릭합니다.

권한 설정

보안 그룹에 메뉴 및 기능별 권한을 설정합니다.

  1. 보안 관리 > 보안 그룹 메뉴에서 그룹을 선택합니다.
  2. 권한 설정 탭을 클릭합니다.
  3. 각 메뉴/기능에 대해 읽기, 쓰기, 삭제 권한을 체크합니다.
  4. 저장 버튼을 클릭합니다.

권한 설정 예시:

메뉴ADMINOPERATORUSER
연결 관리읽기/쓰기/삭제읽기/쓰기읽기
팩토리 관리읽기/쓰기/삭제읽기/쓰기읽기
알람 관리읽기/쓰기/삭제읽기/쓰기읽기
사용자 관리읽기/쓰기/삭제--
시스템 설정읽기/쓰기/삭제읽기-
캔버스읽기/쓰기/삭제읽기/쓰기읽기

접근 제어

사이트 접근 제어

멀티 사이트 환경에서는 사용자별로 접근 가능한 사이트를 제한할 수 있습니다.

  1. 사용자 수정 화면에서 사이트 접근 권한 탭을 선택합니다.
  2. 접근을 허용할 사이트를 체크합니다.
  3. 저장 버튼을 클릭합니다.

안내: 사이트 접근 권한이 설정되지 않은 사용자는 모든 사이트에 접근할 수 있습니다.

캔버스 공유

캔버스 화면은 특정 사용자 또는 보안 그룹과 공유할 수 있습니다.

  1. 캔버스 편집 화면에서 공유 설정을 클릭합니다.
  2. 공유 대상을 선택합니다.
    • 전체 공개: 모든 사용자가 접근 가능합니다.
    • 보안 그룹: 선택한 보안 그룹의 사용자만 접근 가능합니다.
    • 사용자 지정: 선택한 사용자만 접근 가능합니다.
  3. 저장 버튼을 클릭합니다.

세션 관리

세션 타임아웃

사용자의 세션 타임아웃은 기본 30분으로 설정되어 있습니다. 30분 동안 활동이 없으면 자동으로 로그아웃됩니다.

세션 타임아웃을 변경하려면 web.xml에서 설정을 수정합니다.

<!-- 웹앱 내부 WEB-INF/web.xml (WAR 에 포함 — 배포 시 초기화되므로 영구 변경은 소스에서) -->
<session-config>
<session-timeout>30</session-timeout> <!-- 분 단위 -->
</session-config>

동시 로그인

기본적으로 동일 계정으로 여러 브라우저/기기에서 동시 로그인이 가능합니다. 보안이 중요한 환경에서는 계정을 사용자별로 분리해 발급하고, 접근 IP 제한 등 네트워크 수준의 통제로 보완하는 것을 권장합니다.


감사 로그

사용자의 주요 활동은 감사 로그에 자동으로 기록됩니다. 감사 로그를 통해 시스템 변경 이력을 추적할 수 있습니다.

기록되는 활동:

활동 유형설명
로그인/로그아웃사용자 인증 이벤트
사용자 관리사용자 생성, 수정, 삭제, 비활성화
보안 그룹 변경그룹 생성, 수정, 삭제, 권한 변경
시스템 설정 변경프로퍼티, 연결 정보 등 설정 변경
데이터 수정팩토리, 설비, 포인트 등 마스터 데이터 변경

감사 로그는 도구 > 감사 로그 메뉴에서 조회할 수 있으며, 기간, 사용자, 활동 유형별로 필터링할 수 있습니다.


대량 사용자 등록

다수의 사용자를 한 번에 등록하려면 Excel 파일을 사용하여 일괄 등록할 수 있습니다.

등록 절차

  1. 보안 관리 > 사용자 관리 메뉴에서 Excel 업로드 버튼을 클릭합니다.
  2. 템플릿 Excel 파일을 다운로드합니다.
  3. 템플릿에 맞게 사용자 정보를 입력합니다.
필수설명예시
user_idO사용자 IDoperator01
user_nameO사용자 이름홍길동
passwordO초기 비밀번호Temp1234!
email-이메일hong@example.com
security_groupO보안 그룹 IDOPERATOR
description-설명생산1팀
  1. 작성한 Excel 파일을 업로드합니다.
  2. 미리보기에서 등록할 사용자 정보를 확인합니다.
  3. 등록 버튼을 클릭합니다.

안내: 업로드 시 유효성 검사가 수행됩니다. 중복 ID, 필수 항목 누락 등의 오류가 있으면 해당 행이 표시되며 수정 후 재업로드할 수 있습니다.


모범 사례

  • 최소 권한 원칙: 사용자에게 업무에 필요한 최소한의 권한만 부여해 주세요.
  • 관리자 계정 최소화: ADMIN 그룹의 사용자는 최소한으로 유지하고, 일반 운영은 OPERATOR 그룹을 사용하세요.
  • 주기적 감사: 분기별로 사용자 목록과 권한을 검토하여 불필요한 계정을 비활성화해 주세요.
  • 퇴직자 처리: 퇴직 시 즉시 계정을 비활성화하거나 삭제해 주세요.
  • 공유 계정 금지: 개인별 계정을 사용하고, 공유 계정 사용은 지양해 주세요.
  • 비밀번호 관리: 초기 비밀번호는 반드시 변경하도록 안내하고, 정기적인 비밀번호 변경을 유도해 주세요.
  • 로그 모니터링: 비정상적인 로그인 시도(반복 실패, 비정상 시간대 접근 등)를 모니터링해 주세요.

자주 발생하는 문제

로그인 실패

증상원인해결 방법
"사용자 ID 또는 비밀번호가 잘못되었습니다"잘못된 비밀번호 입력비밀번호를 확인하고 다시 시도해 주세요. Caps Lock 상태도 확인해 주세요.
"비활성화된 계정입니다"계정이 Inactive 상태관리자에게 계정 활성화를 요청해 주세요.
"계정이 잠겼습니다"로그인 연속 실패로 잠금관리자에게 잠금 해제를 요청해 주세요.
로그인 화면이 표시되지 않음웹서버 미실행 또는 네트워크 문제서버 상태와 네트워크 연결을 확인해 주세요.

권한 부족

증상원인해결 방법
메뉴가 보이지 않음보안 그룹에 해당 메뉴 접근 권한 없음관리자에게 권한 추가를 요청해 주세요.
"접근 권한이 없습니다" 메시지API 또는 기능 권한 부족보안 그룹의 권한 설정을 확인해 주세요.
특정 사이트 데이터 미표시사이트 접근 권한 미설정사용자의 사이트 접근 권한을 확인해 주세요.

세션 만료

증상원인해결 방법
작업 중 로그인 화면 전환세션 타임아웃 (기본 30분)다시 로그인해 주세요. 타임아웃이 짧다면 web.xml에서 조정해 주세요.
다른 기기에서 로그아웃됨동시 로그인 정책(KICK)으로 강제 종료동시 로그인 설정을 확인해 주세요.
세션 관련 에러 반복Redis 캐시 장애Redis 서비스 상태를 확인해 주세요.