zioinfo-mail/workspace/guardia-docs/25_GUARDiA_Manager_라이선스_관리_가이드.md
DESKTOP-TKLFCPR\ython cfe2901a55 refactor(structure): consolidate all projects under workspace/
- itsm/    -> workspace/guardia-itsm/
- manager/ -> workspace/guardia-manager/
- app/     -> workspace/guardia-messenger/
- manual/  -> workspace/guardia-docs/

workspace/zioinfo-web/ unchanged.
git mv preserves full commit history.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 23:50:56 +09:00

11 KiB

GUARDiA Manager — 라이선스 키 등록 및 관리 가이드

버전: 2.0.0 | 작성일: 2026-05-30
접속 URL: http://zioinfo.co.kr:8090/licenses
대상: 시스템 관리자 (admin 역할)


1. 개요

GUARDiA Manager의 라이선스 관리 페이지는 GUARDiA ITSM 플랫폼의 라이선스를 통합 관제하는 화면입니다.

주요 기능

기능 설명
현재 상태 확인 에디션, 만료일, 남은 기간, 허용 한도 실시간 표시
라이선스 키 등록 발급받은 라이선스 키를 붙여 넣고 즉시 활성화
무료 체험 시작 7/14/30일 체험 라이선스 즉시 발급 (설치당 1회)
키 검증 등록 없이 키 유효성만 검증 (발급 전 사전 확인)
라이선스 비활성화 현재 라이선스 비활성화 (서비스 제한 발생)
이력 조회 과거 등록된 모든 라이선스 이력 테이블
에디션 비교 TRIAL/COMMUNITY/STANDARD/ENTERPRISE 기능 비교

2. 라이선스 에디션

2-1. 에디션 비교표

구분 TRIAL COMMUNITY STANDARD ENTERPRISE
가격 무료 (7일) 무료 협의 협의
기관 수 1 1 50 무제한
사용자 수 10명 10명 200명 무제한
서버 수 20대 50대 500대 무제한
AI 에이전트
LDAP/MFA
SLA 관리 기본 기본 고급 고급
취약점 스캔
FinOps
Scouter APM
기술 지원 커뮤니티 이메일 전담 지원

2-2. 라이선스 키 형식

TRIAL:      GRD-{Base64URL 인코딩 페이로드}  (자동 생성)
COMMUNITY/  grd_lic_{발급기관코드}_{서명}
STANDARD/
ENTERPRISE:

3. 화면 구성 (NCloud 콘솔 스타일)

┌─────────────────────────────────────────────────────────────────┐
│  업그레이드 배너 (만료 3일 전 표시)                                │
│  ⚠️ 체험판이 X일 후 만료됩니다. [라이선스 등록] 버튼              │
├─────────────────────────────────────────────────────────────────┤
│  현재 라이선스 상태 카드                                          │
│  [에디션 배지] [체험판/만료 배지]                                  │
│  고객명: 지오정보기술 체험판                                       │
│  메시지: TRIAL 라이선스 활성 (6일 남음)                            │
│                         [🔑 등록] [🎁 체험] [🔍 검증] [비활성화] │
│  ─────────────────────────────────────────────────────────────  │
│  [만료 게이지 바]      [라이선스 ID]      [허용 한도]              │
│  ████████░░ 6일 남음   TRL-290EA0FB       기관:1/사용자:10/서버:20 │
├─────────────────────────────────────────────────────────────────┤
│  액션 패널 (선택한 액션에 따라 표시)                               │
│  예) 라이선스 키 등록: [textarea] [활성화 버튼]                    │
├─────────────────────────────────────────────────────────────────┤
│  에디션 비교 (4개 카드 — 현재 에디션 강조)                         │
│  [TRIAL]  [COMMUNITY]  [STANDARD ★]  [ENTERPRISE]               │
├─────────────────────────────────────────────────────────────────┤
│  라이선스 이력 테이블                                              │
│  ID | 라이선스ID | 에디션 | 고객명 | 체험판 | 만료일 | 상태 | 등록자│
└─────────────────────────────────────────────────────────────────┘

4. 기능별 사용 방법

4-1. 라이선스 키 등록

사전 조건: admin 역할로 로그인, GUARDiA ITSM 서버에 GUARDIA_LICENSE_KEY 환경변수 설정

  1. [🔑 라이선스 등록] 버튼 클릭
  2. 발급받은 라이선스 키를 텍스트 영역에 붙여 넣기
  3. [활성화] 버튼 클릭
  4. 성공 시 현재 상태 카드가 즉시 갱신됨
# 라이선스 키 발급 (서버 관리자용 — Python 직접 실행)
ssh root@zioinfo.co.kr

source /opt/guardia/venv/bin/activate
cd /opt/guardia/app
python -m core.license \
  --customer "서울특별시 정보화부" \
  --edition STANDARD \
  --days 365 \
  --key $GUARDIA_LICENSE_KEY

4-2. 무료 체험 시작

제한: 설치당 1회만 가능

  1. [🎁 무료 체험] 버튼 클릭
  2. 고객/기관명 입력 (기본값: "GUARDiA 체험판")
  3. 체험 기간 선택: 7일 / 14일 / 30일
  4. [🎁 체험 시작] 버튼 클릭
  5. 발급된 체험 키가 팝업으로 1회만 표시 → 반드시 복사 보관
  6. 즉시 TRIAL 에디션으로 활성화

⚠️ 체험 라이선스 키는 발급 시 화면에 1회만 표시됩니다. 화면을 닫으면 다시 확인할 수 없습니다.

4-3. 라이선스 키 검증

등록 전 키가 유효한지 먼저 확인할 때 사용합니다.

  1. [🔍 키 검증] 버튼 클릭
  2. 확인할 키 입력
  3. [검증] 버튼 클릭
  4. 결과 확인: 에디션, 고객명, 발급일, 만료일 표시
  5. 유효한 경우 [이 키로 활성화] 버튼으로 즉시 등록 가능

4-4. 라이선스 비활성화

주의: 비활성화 시 서비스 제한이 발생합니다.

  1. [비활성화] 버튼 클릭 (빨간 버튼)
  2. 확인 다이얼로그에서 [확인]
  3. 상태가 "활성 라이선스가 없습니다."로 변경됨

5. API 명세

GUARDiA ITSM API를 직접 호출하는 엔드포인트입니다.

기본 정보

항목
Base URL http://zioinfo.co.kr:8001
인증 Authorization: Bearer {JWT Token}
로그인 POST /api/auth/login (JSON, admin 역할 필요)

엔드포인트 목록

메서드 경로 인증 설명
GET /api/license/status 로그인 현재 라이선스 상태
POST /api/license/trial admin 체험 라이선스 발급
POST /api/license/activate admin 라이선스 키 활성화
POST /api/license/verify admin 라이선스 키 검증만
DELETE /api/license admin 라이선스 비활성화
GET /api/license/history admin 등록 이력 조회

요청/응답 예시

체험 라이선스 발급

curl -X POST http://zioinfo.co.kr:8001/api/license/trial \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"customer":"지오정보기술","days":7}'
{
  "message": "🎁 7일 무료 체험이 시작되었습니다!",
  "license_id": "TRL-XXXXXXXXXX",
  "edition": "TRIAL",
  "customer": "지오정보기술",
  "expires_at": "2026-06-06T11:37:25",
  "days_remaining": 7,
  "is_trial": true,
  "license_key": "GRD-..."
}

라이선스 상태 조회

curl http://zioinfo.co.kr:8001/api/license/status \
  -H "Authorization: Bearer $TOKEN"
{
  "activated": true,
  "valid": true,
  "expired": false,
  "is_trial": true,
  "edition": "TRIAL",
  "customer": "지오정보기술",
  "days_remaining": 6,
  "limits": {
    "max_institutions": 1,
    "max_users": 10,
    "max_servers": 20
  },
  "message": "TRIAL [체험판] 라이선스 활성 (6일 남음)"
}

6. 테스트 결과

6-1. 테스트 환경

항목
서버 Ubuntu 24.04 (zioinfo.co.kr)
GUARDiA ITSM v2.0.0
GUARDiA Manager v1.0.0
테스트 일자 2026-05-30

6-2. 테스트 결과 (7/7 PASS)

테스트 항목 결과
T1 admin 로그인 (JSON) PASS
T2 라이선스 현재 상태 조회 PASS
T3 체험 라이선스 발급 (7일) PASS
T4 활성화 후 상태 확인 (TRIAL, 6일) PASS
T5 라이선스 이력 조회 (1건) PASS
T6 잘못된 키 검증 (에러 처리) PASS
T7 Manager UI 접속 PASS
T8 Manager Backend API PASS

6-3. 버그 수정 이력

날짜 파일 버그 수정 내용
2026-05-30 routers/license.py datetime timezone-aware/naive 충돌 datetime.fromisoformat(...).replace(tzinfo=None) 적용

7. 운영 절차

7-1. 정기 만료일 모니터링

# 라이선스 만료일 확인 (서버 직접 확인)
ssh root@zioinfo.co.kr
curl -s -X POST http://localhost:8001/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"1111"}' \
  | python3 -c "import json,sys; print(json.load(sys.stdin).get('access_token')[:20])"

TOKEN=$(...)
curl -s http://localhost:8001/api/license/status \
  -H "Authorization: Bearer $TOKEN" \
  | python3 -m json.tool | grep -E "edition|days_remaining|expires_at"

7-2. 라이선스 갱신 절차

  1. 새 라이선스 키 발급 (담당자에게 요청)
  2. GUARDiA Manager → 라이선스 관리 → [🔍 키 검증]으로 사전 확인
  3. [🔑 라이선스 등록] → 새 키 입력 → 활성화
  4. 기존 라이선스는 자동 비활성화됨

7-3. 라이선스 환경변수 설정

STANDARD/ENTERPRISE 라이선스 사용 시 서버에 마스터 키 설정이 필요합니다:

# /opt/guardia/app/.env 에 추가
GUARDIA_LICENSE_KEY=<64자리 hex 마스터 키>

# 서비스 재시작
systemctl restart guardia

8. 트러블슈팅

증상 원인 해결
체험판 발급 실패 (409) 이미 체험 이력 존재 체험은 1회 한정, 정식 키 필요
키 검증/등록 500 에러 GUARDIA_LICENSE_KEY 미설정 .env에 마스터 키 설정
이력 조회 403 admin 역할 아님 admin 계정으로 로그인
만료 배너 표시 만료 3일 이내 새 라이선스 등록
datetime 오류 timezone aware/naive 충돌 license.py 패치 적용 (완료)

GUARDiA ITSM v2.0.0 | (주)지오정보기술 | 2026-05-30