| ID | 대분류 | 중분류 | 요구사항명 | 상세 요구사항 | 지원 가능 범위 (API Server 신규 개발) | 참고 내용 | 우선순위 |
|---|---|---|---|---|---|---|---|
| REQ-01-01 | Prefix 동적 라이프사이클 관리 | Prefix 생성 | Prefix 동적 생성 | 요청한 이름으로 동적으로 prefix를 생성하고, 내부적으로 name validation이 있는 API 구현 | prefix 관리 모듈 | AIStor 기능 없음 - place holder 객체 생성 필요 | 1 |
| REQ-01-02 | Prefix 동적 라이프사이클 관리 | Prefix 생성 | 플레이스홀더 파일 자동 생성 | UI 상에서 '빈 폴더'로 노출하기 위하여 Prefix 생성 시 가상의 디렉토리 구조 시작 및 유지를 위해 내부 빈 플레이스홀더 파일(예: .keep) 자동 생성 기능 | prefix 관리 모듈 | place holder 객체 생성 | 1 |
| REQ-01-03 | Prefix 동적 라이프사이클 관리 | Prefix 조회 | Prefix 목록 및 상태 조회 | 특정 이름의 Prefix 검색 후 생성일, 현재 상태, 소유자 등을 조회하는 API 구현 | prefix 관리 모듈 | AIStor 기능 없음 - prefix 자체에는 timestamp 외 메타 정보 없음 | 1 |
| REQ-01-04 | Prefix 동적 라이프사이클 관리 | Prefix 조회 | Prefix 목록 및 상태 조회 | 전체 Prefix의 생성일, 현재 상태, 소유자 등을 조회하는 API 구현 | prefix 관리 모듈 | AIStor 기능 없음 - prefix 자체에는 timestamp 외 메타 정보 없음 | 1 |
| REQ-01-05 | Prefix 동적 라이프사이클 관리 | Prefix 조회 | Prefix 하위 객체 리스트 조회 | 인증된 사용자가 본인 Prefix 내의 하위 객체(파일) 리스트 및 크기, 수정일 등의 메타데이터 만큼 조회할 수 있는 API (Paging/검색/필터 기능 필수) | prefix 관리 모듈 | heavy한 ListObjectsV2 API 대신 메타 관리 DB 생성(Bucket Notification 시 내용 update) 후 이를 조회 | 1 |
| REQ-01-06 | Prefix 동적 라이프사이클 관리 | Prefix 수정 | Prefix 메타데이터(별칭) 수정 | S3 아키텍처상 Prefix명 자체를 변경하는 것은 대규모 Copy&Delete를 유발하므로 금지하며, DB 상의 별칭(Alias)이나 디스플레이 네이밍 수정 가능하도록 제한 | prefix 관리 모듈 | AIStor 기능 제약 - 메타 관리 DB에 구현, 이용 | 1 |
| REQ-01-07 | Prefix 동적 라이프사이클 관리 | Prefix 수정 | Prefix 메타데이터(별칭) 수정 | 매칭 된 별칭과 실제 s3 object storage를 조회할 수 있는 API | prefix 관리 모듈 | AIStor 기능 제약 - 메타 관리 DB에 구현, 이용 | 1 |
| REQ-01-08 | Prefix 동적 라이프사이클 관리 | Prefix 삭제 | 하위 객체 일괄 삭제 | Prefix 삭제 요청 시 하위의 모든 객체들을 안전하고 신속하게 삭제 처리하는 API 구현 | 현 제품 지원 | AIStor 기본 기능 이용 - DeleteObjects API 또는 Batch Jobs 호출 | 1 |
| REQ-01-09 | Prefix 동적 라이프사이클 관리 | Prefix 삭제 | 소프트 삭제 및 보존 정책 연계 | 오작동 및 실수 방지를 위해 즉시 완전 삭제 대신 소프트 삭제(Soft Delete) 상태로 전환 후, 일정 기간 보관 후 S3 Lifecycle 규칙과 연계하여 완전 삭제 | 현 제품 지원 | AIStor 기능 이용 (Versioning + ILM) - Versioning 사용 -> 삭제 시 DeleteMarker 생성 + ILM expire 기간 지정 -> noncurrent-expire-days 지정(prefix별 가능) 기간 이후 실제 삭제 됨 | 2 |
| REQ-02-01 | 테넌트별 인증 및 인가 | 인증/인가 | 인증/인가 | API 접근 사용자를 인증/인가하는 체계 (사용자가 소속되어 있는 Prefix에만 접근 가능) -> (인증/인가의 경우 사번으로 제어하면 내부적으로 token 설정을 어떻게 할지도 종합에 필요할 것 같습니다;) | 현 제품 지원 | Identity & Access Management (IAM) 시스템을 기본 내장하고 있으며, AWS IAM 정책과 100% 호환, Active Directory와 원활하므로 사용자의 사번이나 혹은 사내 계정 체계를 그대로 매핑할 수 있음 OR 대규모 환경에서는 인가용 외부 시스템(e.g. OPA) 연동 권장 STS AssumeRole API를 통한 임시 자격 증명 발급 방식 또한 적용 - AIStor에 정책 변수(${aws:username})가 포함된 글로벌 정책 1개만 등록하고 AD 그룹(또는 사용자)에 바인딩해 사용 | 1 |
| REQ-02-02 | 테넌트별 인증 및 인가 | 인증/인가 | 인증/인가 | 사용자가 접근 불가한 Prefix인 경우에는 에러 return | 현 제품 지원 | 권한이 없는 Prefix 경로로 접근 시 S3 API 표준에 따라 즉시 에러(Access Denied)를 반환 | 1 |
| REQ-02-03 | 테넌트별 인증 및 인가 | 인증/인가 | 인증/인가 | 특정 prefix에 신규 사용자에게도 권한을 줄 수 있는 API | 현재 지원 - workbench 에서 신규 사용자에 대해 기존 권한 바인딩 AND 추가적인 권한은 별도 요청을 통해 부여 | 동적 바인딩(mc idp ldap policy attach) 진행 -> 다음번 S3 세션 갱신(STS AssumeRole) 시, 새로 바인딩된 정책이 결합되어 해당 프리픽스에 즉시 접근(RO 또는 RW) 가능 | 1 |
| REQ-02-04 | 테넌트별 인증 및 인가 | 권한 그룹 관리 | 세부 권한(Read/Write/Admin) 분리 | 읽기 전용(Read-Only), 읽기/쓰기(Read-Write)의 권한 분리 필요 | 현 제품 지원 | Identity & Access Management (IAM) 기능 이용 | 2 |
| REQ-03-01 | Prefix 단위 용량 쿼터 및 관리 | 쿼터 설정 | Prefix별 쿼터 설정/수정/삭제 API | 각 Prefix별로 최대로 사용할 수 있는 용량 제한(Hard Limit) 및 임계치 경고 용량(Soft Limit)을 설정, 수정, 삭제하는 API (단위: GB/TB) | prefix 관리 모듈 | Bucket Notification 기반 prefix 용량 사용량 프로그램 개발 필요 | 2 |
| REQ-03-02 | Prefix 단위 용량 쿼터 및 관리 | 용량 트래킹 | 실시간/주기적 용량 집계 및 동기화 | Webhook 또는 Prometheus 메트릭 수집을 통해, 파일 변동 이벤트를 기반으로 Prefix별 현재 용량을 상시 집계하여 API 제공 및 모니터링 화면 출력 | prefix 관리 모듈 | Bucket Notification 기반 prefix 용량 사용량 프로그램 개발 필요 | 3 |
| REQ-03-03 | Prefix 단위 용량 쿼터 및 관리 | 쿼터 제어 | 용량 초과 시 쓰기 제한 차단 (Enforcement) | 사용자가 파일을 prefix에 추가시, API 서버단에서 해당 Prefix의 현재 용량과 Hard Limit를 비교하여 용량 초과 시 발급 거부(Deny) | prefix 관리 모듈 (구체적 | API Server 별도 구현 및 사용자의 AIStor 접근 시 API Server 거치도록 강제화 필요 (content-length-range로 용량 범위 지정된 post policy를 가진 URL 발급) + 사용자의 직접 접근으로 prefix quota 초과 시 사후 차단(정책 변경) 필요 | 3 |
| REQ-04-01 | 모니터링 및 대시보드 | 데이터 집계 | 전체 Bucket 메트릭 수집 | 전체 큰 하나의 Bucket 관점에서의 총 사용 용량, 총 객체 수, 인프라 레벨의 데이터 수집 및 데이터 제공 API 개발 | 현 제품 지원 | bucket metric(/cluster/usage/buckets) 사용 - minio_cluster_usage_buckets_total_bytes, minio_cluster_usage_buckets_objects_count 등 | 3 |
| REQ-04-02 | 모니터링 및 대시보드 | 데이터 집계 | Prefix별 세부 메트릭 가공 및 집계 | 각 Prefix 테넌트 단위의 개별 사용 용량, 전일 대비 증가율, 일일 업로드/다운로드 횟수, 최근 파일 접근 시간 통계 수집 및 시계열화 | prefix 관리 모듈 | Bucket Notification 기반 prefix 용량 및 요청 수 계산 프로그램 개발 필요 | 3 |
| REQ-04-03 | 모니터링 및 대시보드 | 시각화 | 멀티테넌시 통합/개별 대시보드 UI 연동 | Grafana Dashboard 임베딩 또는 권한별 화면 구성 제공 (admin은 전체 조회 가능) | 현재 지원 + 추가적인 요 | 3 | |
| RFQ-05-01 | 특이 이벤트 및 알람 | 알람 엔진 | Webhook 수신 및 라우팅 엔진 | MinIO 버킷 이벤트 알림 시스템 또는 내부 쿼터 통제 엔진에서 발생하는 이상 징후/이벤트를 실시간으로 수신 및 정규화하여 전달하는 Webhook 개발 | prefix 관리 모듈 | Audit Log(webhook or kafka): 사용자의 데이터 접근 행위, 관리자가 쿼터를 변경하거나 권한을 수정하는 행위 등 Server Log(webhook): 현재 Observability에서 pod log로 수집 중 - 엔진 에러 및 이상 징후 Event Log(Bucket Notification - webhook, kafka 등 다수): 객체 상태 변경 및 내부 발생 이벤트(스케줄, 복제 등) Metric: minio_cluster_usage_buckets_total_bytes, minio_cluster_usage_buckets_quota_bytes 수치 비교로 판단(쿼터 초과 여부) > 요건에 따라 위 소스들 선택, 수신 | 3 |
| REQ-05-02 | 특이 이벤트 및 알람 | 알람 규칙 | 쿼터 임계치 도달 알람 (Soft/Hard Limit) | 특정 Prefix의 사용 용량이 임계치(Soft Limit: 예 80%, Hard Limit: 100%)에 도달한 즉시 지정된 담당자에게 실시간 알람 발송 규칙 정의 및 연동 (알람은 큐브 알람 | prefix 관리 모듈 | Observability Alertmanager 이용 | 3 |
| REQ-05-03 | 특이 이벤트 및 알람 | 알람 규칙 | 이상 행위 및 보안 위협 탐지 알람 | 단시간 내 비정상적인 대용량 삭제 행위 발생 시 보안 위협 알람 발송 | prefix 관리 모듈 | Bucket Notification의 s3:ObjectRemoved 이벤트 이용 | 3 |
| REQ-05-04 | 특이 이벤트 및 알람 | 알람 방송 | 외부 채널 연동 및 메시지 포맷팅 | 큐브와 연동하여 가독성 높은 형태로 포맷팅 후 알람 전송 | prefix 관리 모듈 | Observability Alertmanager 이용 | 3 |
| REQ-06-01 | 안정성 및 운영 고도화 | 성능 최적화 | 비동기 이벤트 기반 용량 증감 업데이트 | 성능 저하가 발생할 가능성이 있어 파일 변동 시마다 전체 S3를 스캔(Scan)하지 않도록 함 | prefix 관리 모듈 | Bucket Notification 이용(kafka, http webhook 등), Bucket put/delete 이벤트 등록, prefix 단위 이벤트 라우팅 가능, object size 정보 이용 | 3 |
| REQ-06-02 | 안정성 및 운영 고도화 | 로그 | 행위 추적을 위한 Logging | 사용자/권한/쿼터 임계치 변경, 수동 권한 업데이트 등 시스템 동작과 관련된 모든 관리적 요청 및 수행 결과 History 추적 가능해야 함 | 현 제품 지원 | audit log에 저장됨(fluent-bit -> opensearch), api.name으로 행위 별 구분(accessKey:계정명, remotehost:출발지IP) | 3 |
| REQ-06-03 | 안정성 및 운영 고도화 | 데이터 정합성 | 정기 동기화 보정 배치 (Reconciliation Loop) | 비동기 큐의 유실이나 일시적 오류로 메타 DB의 Prefix별 용량 데이터와 MinIO S3의 실제 물리적 용량 간 정합성이 어긋날 가능성에 대비하여, 주기적(예: 매일 새벽)으로 실제 용량을 스캔해 DB를 자동 교정하는 배치 스케줄러 구현 | prefix 관리 모듈 | Inventory api (daily batch) 결과를 바탕으로 차이 보정, AIStor Table도 저장되어 SQL로 조회(or inventory 결과 parquet 파일 직접 이용) | 3 |
주: REQ-03-03의 F열(prefix 관리 모듈 (구체적) 및 REQ-04-03의 F열(현재 지원 + 추가적인 요)은 화면상 우측 셀에 가려져 잘린 부분까지만 있는 그대로 적었습니다.
| MetaDB | Table | Column | Column D/E | Prefix Management System (주요 기능) | Column G | 우선순위 |
|---|---|---|---|---|---|---|
| MetaDB | Table | Column | Prefix Management System (주요 기능) | 우선순위 | ||
| Object Table | 이름 | 1. 사용자가 생성한 경로의 prefix 마다 .placeholder 생성 | (25) | 높음 | ||
| 생성 시간 | 2. prefix name validation | (2) (3) | 보통 | |||
| 마지막 수정 시간 | 3. prefix 세부 정보 조회 | (2) | 보통 | |||
| 크기 | 4. prefix 내 객체 리스트 및 집계 정보 제공 | (4) (5) | 보통 | |||
| 소속 버킷 | 5. prefix quota 관리 및 초과 알람 | (6) (16) (19) | 높음 | |||
| 소속 Prefix | 6. 주기적으로 mc inventory 결과 비교 및 업데이트 | (15) (17) (22) | 높음 | |||
| Prefix Tab | 이름 | 7. prefix 사용량 예측 및 사전 알람 | (27) | 높음 | ||
| 경로 | 8. Prefix 별 전일 대비 증가율, 업로드/다운로드 횟수 | DevOps | 낮음 | |||
| alias | 9. Prefix 별 ILM 정책 적용 여부 확인 | (19) | 높음 | |||
| quota | (7) (8) | 10. 이상 징후 발생 시 알람 (대용량 삭제, 성능 저하, ...) | DevOps | 보통 | ||
| ILM 정책 | Grafana Dashboard | 권한 별 대시보드 구성 | (21) (23) (24) | 보통 | ||
| 관리자 | (20) | |||||
| 상태 | AIStor (현 제품 지원 기능) | prefix 내 객체 삭제 | (9) | |||
| 생성 시간 | 휴먼 에러 방지를 위한 ILM 정책 | (10) | ||||
| 마지막 수정 시간 | prefix 접근 권한 관리 | (11) (12) (13) (14) | ||||
| 버킷별 사용량 집계 | (18) | |||||
| Audit Log 추적 | (26) |