Files
ModernAdminStudio/CHANGELOG.md
T

14 KiB

Enterprise Admin Studio - 변경 이력 (CHANGELOG.md)

[v1.8.0] - 2026-10-22

Added & Stabilized

  • 전방위 E2E 및 단위 테스트 슈트 구축 (Tests/ 디렉터리, 총 96개 테스트 100% 통과):
    • Tests/ADService.Tests.ps1: 다중 DC 복제 지연 격리, 특정 DC 직접 생성, WAN 지연 시뮬레이션 및 실서버 통신 엣지 케이스 검증 (17개 테스트)
    • Tests/NetAppService.Tests.ps1: server_name 등 REST JSON 스키마 변형 파싱, preference 가중치 정렬, Smart Retry 회랑 및 타임아웃 장애 복구 검증 (16개 테스트)
    • Tests/SqlService.Tests.ps1: Win32 LOGON32_LOGON_NEW_CREDENTIALS(/netonly) 위장 토큰, 연결 문자열 빌더, T-SQL 파서 및 백업 액션 검증 (18개 테스트)
    • Tests/UserResolverService.Tests.ps1: 단일/다중/대량 텍스트 파싱, 동명이인 검출, 와일드카드(*) 및 공백 입력 시 디렉터리 전체 폭발 매칭 방지 검증 (15개 테스트)
    • Tests/ConfigService.Tests.ps1: 설정 생성/저장/로드 및 JSON 손상 복구 검증 (7개 테스트)
    • Tests/BatchPipeline.Tests.ps1: 5단계 인프라 트랜잭션, Headless UI 렌더링, 페이지 라우팅 무결성 및 모달 ShowDialog() 수명주기 자동 검증 (23개 테스트)
  • 자체 구동형(Standalone) 테스트 러너 (Tests/RunAllTests.ps1):
    • Pester v5가 전역 설치되지 않은 환경에서도 자체 내장 테스트 엔진(Describe, Context, It, Mock, Should)으로 즉시 구동 가능하며, -Live 스위치를 통한 실서버 테스트 필터링 지원
    • Windows PowerShell 5.1 및 PowerShell 7(Core) 양방향 100% 통과 (96/96 Passed, 0 Failed)
  • PSScriptAnalyzer 정적 코드 분석 및 보안 감사 리포트 (Tests/AuditReport.md):
    • 미사용 변수 선언 제거, UI 요소 속성 일치화(DotGlobalStatus.Background), 인코딩 및 스코프 전수 감사 통과
  • 핵심 런타임 버그 6건 사전 발굴 및 수정:
    1. Modules/UserResolverService.ps1: 공백/와일드카드 토큰 입력 시 전체 사용자 풀이 동명이인으로 매칭되던 결함 수정 (리터럴 .IndexOf() 및 공백 가드 적용)
    2. Modules/ShareSyncService.ps1: 미사용 $Config 파라미터 경고 해소 및 모듈 연계 완료
    3. Start-App.ps1: WPF <Border> 요소의 잘못된 .Fill 참조를 .Background로 정상화
    4. Show-UserResolverDialog: Headless E2E 테스트를 위한 -AutoConfirm 비동기 수명주기 스위치 지원
    5. Tests/NetAppService.Tests.ps1: 복사본 테스트 로직을 실제 Invoke-NetAppRestRequest Pester Mocking으로 전면 교체
    6. 모든 신규/수정 .ps1 파일에 UTF-8 BOM(0xEF, 0xBB, 0xBF) 적용 완료

[v1.7.0] - 2026-10-21

Fixed & Improved

  • WPF UI 이벤트 핸들러 스코프(& $null) 및 ShowDialog 런타임 예외 해결:
    • Start-App.ps1: BtnLaunchResolver, BtnDetectActiveDc, CmbSqlAuthType, BtnReloadConfig, BtnResolveUsers 등 WPF UI 컴포넌트 이벤트 발생 시, 함수 로컬 스코프 종료로 인해 변수가 $null로 평가되어 & $variable 호출 시 "파이프라인 요소의 '&' 뒤에 있는 식이 잘못된 개체를 생성했습니다" 예외를 발생시키던 스코프 바인딩 결함 수정
    • 모든 UI 이벤트 핸들러 스크립트블록($script:handleOpenResolver, $script:detectActiveDcAction, $script:updateSqlAuthUi, $script:runResolutionDialog, $script:appendShareLog)을 $script: 스코프로 격상하여 이벤트 디스패처 스레드에서 안전하게 호출되도록 보장
    • Show-UserResolverDialog: 단일 사용자 검증 시 DataGrid.ItemsSource에 단일 객체가 전달되어 IEnumerable 형 변환 예외가 발생하던 문제를 배열 강제 래핑(@($results))으로 원천 차단
  • NetApp ONTAP REST API Active DC 감지 및 단독 스크립트 실행(Standalone) 지원 강화:
    • REST API JSON 필드 매핑 수정 (Modules/NetAppService.ps1):
      • ONTAP REST API /api/protocols/cifs/domains의 discovered_servers 하위 개체에서 도메인 컨트롤러 호스트명 키(server_name)가 name으로 잘못 매핑되어 실서버 연결 시에도 항상 가상 데모 DC(dc04.corp.local)로 폴백되던 버그 수정
      • server_name, server_ip, server_type, state, node.name 필드 정상 파싱 및 Active Connected 상태 검증 로직 강화
    • 파라미터 해석 헬퍼 (Resolve-NetAppParameters) 신설:
      • NetAppService.ps1을 GUI 애플리케이션 외부의 독립 PowerShell 콘솔에서 단독 발췌 실행할 때, $Config 객체 없이도 -ClusterEndpoint, -Username, -Password, -SvmName, -UseLive 파라미터만으로 즉각 실제 스토리지와 통신하도록 구조 개선
      • Get-NetAppActiveDc, Get-NetAppQtrees, Get-NetAppQuotas, Get-NetAppShares, New-NetAppQtreeAction, New-NetAppShareAction, Set-NetAppShareAcl, Set-NetAppQuotaRule 등 모든 NetApp 모듈 함수에 단독 파라미터 전달 체계 적용
    • PowerShell 7 (Core) 자체 서명 SSL 인증서 우회(-SkipCertificateCheck) 호환성 확보:
      • Windows PowerShell 5.1의 ServicePointManager 방식 외에, PowerShell 7 Invoke-RestMethod의 -SkipCertificateCheck 매개변수를 동적 인식하여 SSL/TLS 핸드셰이크 예외 완벽 차단
    • 다단계 API 엔드포인트 폴백 및 타임아웃 현실화:
      • 클러스터 도메인 질의 시 기본 타임아웃을 3초에서 15초로 현실화하여 노드 간 브로드캐스트 지연에 의한 타임아웃 예외 방지
      • SVM별 필터 쿼리(/api/protocols/cifs/domains?svm.name=...), 전체 조회 쿼리(?fields=discovered_servers,svm.name), 컬렉션 단건 self-link 조회, 그리고 NetApp DataONTAP Toolkit(Get-NcCifsDomainDiscoveredServer)까지 4단계 복합 폴백 엔진 구축
    • 상세 오류 추적 지원:
      • 실제 접속 실패 시 Write-Warning으로 각 엔드포인트별 에러 메시지를 즉시 출력하고, 반환 객체의 FallbackReason 속성에 기록하여 원인 분석을 용이하게 함

[v1.6.0] - 2026-10-21

Added

  • MS SQL Server AD 도메인 계정 기반 Windows 통합 인증 위장(Impersonation) 엔진 탑재:
    • Modules/SqlService.ps1: Win32 advapi32.dll의 LogonUser API(Type 9 LOGON32_LOGON_NEW_CREDENTIALS, /netonly)와 WindowsIdentity.RunImpersonated를 결합하여, 사용자가 입력한 AD 도메인 ID/PW를 Windows 보안 토큰으로 위장한 뒤 SQL Server에 Integrated Security=True로 인증하는 엔진 구현
    • Test-SqlConnection: SQL Server가 실제로 누구로 인증했는지 SELECT SUSER_SNAME()을 질의하여 반환 메시지에 실시간 출력
    • Get-SqlDatabases, Invoke-SqlBackupAction, Invoke-SqlQuerySnippet: 모든 SQL 작업이 설정된 인증 컨텍스트(Invoke-WithSqlAuthContext) 하에서 안전하게 실행되도록 통합
  • 환경설정 UI (Views/SettingsView.xaml) 및 SQL 관리 화면 (Views/SqlDatabaseView.xaml) 연동:
    • 인증 방식 선택 옵션 3종 확장:
      1. 현재 PC Windows 통합 인증 (Current Session)
      2. AD 도메인 계정 위장 Windows 인증 (AD LogonUser /netonly)
      3. SQL Server 자체 계정 인증 (User ID / Password)
    • SettingsView.xaml: TxtSqlDomain (AD 도메인 입력칸), LblSqlDomain, 동적 설명 힌트(TxtSqlAuthHint) 및 선택 변경에 따른 입력 필드 실시간 활성화/비활성화 처리 연동
    • config.json: MsSql.Domain 필드 추가 및 영속적 저장 지원

[v1.5.0] - 2026-10-20

Added

  • 다중 도메인 컨트롤러(6대 DC) 환경 NetApp 활성 DC 감지 및 복제 지연(Replication Lag) 방지 전략 탑재:
    • Get-NetAppActiveDc (Modules/NetAppService.ps1): ONTAP REST API (/api/protocols/cifs/domains?fields=discovered_servers)를 질의하여 NetApp SVM이 현재 바인딩 중인 Active DC(예: dc04.corp.local)를 실시간 식별
    • New-ADSecurityGroupOnTargetDc (Modules/ADService.ps1): NetApp이 바라보는 활성 DC(LDAP://<ActiveDC>/<OU>)에 보안그룹 및 멤버십을 직접 생성하여 도메인 간 복제 대기 시간 0초 달성 (User or group does not exist 에러 원천 차단)
    • Sync-ADObjectToTargetDc (Modules/ADService.ps1): 특정 DC 생성 시 Sync-ADObject 또는 repadmin /replicate를 통해 나머지 5대 DC로 즉시 단방향 복제 큐잉
    • Set-NetAppShareAcl (Modules/NetAppService.ps1): 지수 백오프(Exponential Backoff)를 지원하는 스마트 재시도(Smart Retry, 최대 3회) 회랑 내장
  • 무중단 비동기(Task.Run) 백그라운드 트랜잭션 엔진:
    • Start-App.ps1: UI 스레드와 분리된 전용 백그라운드 Runspace에서 복합 작업(Active DC 감지 -> AD 그룹 생성 -> CIFS ACL 바인딩 -> Quota 변경 -> SQL 감사)을 비동기로 실행
    • WPF DispatcherTimer 기반 실시간 로그 스트리밍 콘솔 및 UI 멈춤(Freeze) 현상 완전 제거
  • 기술 아키텍처 및 운영 가이드 문서 추가:
    • MULTI_DC_SYNC_GUIDE.md: 6대 DC 복제 지연 원인 분석, NetApp 세션 고정 원리, 3중 해결 전략 및 트러블슈팅 명령어 완비

[v1.4.0] - 2026-10-20

Added

  • 다중 사용자 대량 입력 및 동명이인(Ambiguity) 자동 감지 엔진 (Modules/UserResolverService.ps1):
    • 줄바꿈, 쉼표, 세미콜론, 탭(엑셀 복사본)으로 구성된 텍스트를 자동 파싱 및 중복 제거
    • ID(SamAccountName) 정확 매칭, 이름(DisplayName) 단일 매칭, 동명이인 다수 매칭(부서/사번 비교 확정), 미발견 계정으로 4단계 정밀 분류
  • 동명이인 검증 전용 모달 다이얼로그 (Views/UserResolverDialog.xaml):
    • 엑셀/클립보드 붙여넣기 지원, 검증 상태별 색상 배지(정상: 초록, 동명이인: 주황, 미발견: 빨강)
    • 동명이인 발생 시 부서, 직급, 사번을 대조하여 운영자가 올바른 계정만 체크박스로 확정 가능
  • 인프라 일괄 작업 센터 (Batch Workstation) (Views/BatchWorkstationView.xaml):
    • 사용자 다중 입력칸: 텍스트 직접 입력 및 동명이인 검증기 연동
    • Share 권한 및 AD 보안그룹 설정: 대상 Share 선택, 추가/해제 라디오, 동명 AD 보안그룹 자동 동기화 토글
    • NetApp Qtree & Quota 용량 조정: Quota 조정 활성화 토글, 대상 Qtree 경로, Soft/Hard Limit(GB) 입력
    • 감사 및 결재 정보: 처리 사유(Reason) 필수 입력, ITSM 결재 티켓 번호, 권한 만료일자 관리
    • 영향도 사전 시뮬레이션 (Dry-Run Preview): 실제 반영 전 단계별 변경 사항 및 충돌 여부 사전 검증 표 제공
    • 최종 일괄 실행 (Apply): 단일 트랜잭션 단위 실행 및 실시간 콘솔 로그 기록

[v1.3.0] - 2026-10-20

Added

  • 공유 권한 및 AD 보안그룹 1:1 연계 관리 (Share Permission & AD Group Sync) 워크플로우 틀 구축:
    • 신규 뷰 (Views/ShareAccessManagerView.xaml):
      • 상단 Share 목록 드롭다운 및 DB/AD 새로고침
      • 좌측: DB 조회 사용자 목록 (다중 선택 체크박스, SamAccountName, 이름, 부서, 상태)
      • 중앙: [그룹 추가] / [그룹 해제] 대화형 액션 트리거 버튼
      • 우측: Share와 동일한 이름의 AD 보안그룹 소속 멤버 실시간 조회 그리드
      • 하단: 동기화 단계별 상세 실행 로그 및 결과 추적 콘솔
    • 신규 서비스 스켈레톤 (Modules/ShareSyncService.ps1):
      • Get-DbShareList: DB에서 관리 대상 Share 목록 조회 쿼리 공간
      • Get-DbUsersForShare: 특정 Share의 권한 대상자 DB 조회 쿼리 공간
      • Get-ADGroupMembersByShareName: Share 이름과 동명의 AD 보안그룹 멤버십 실시간 조회
      • Add-UsersToShareAndGroup: 사용자(sAMAccountName)를 Share 동명 AD 그룹에 추가 + DB UPDATE 처리 골격
      • Remove-UsersFromShareAndGroup: 사용자(sAMAccountName)를 Share 동명 AD 그룹에서 제거 + DB UPDATE 처리 골격
    • 사용자가 본인 DB 스키마 및 쿼리, 실제 AD 그룹 규칙을 손쉽게 채워 넣을 수 있도록 명확한 TODO 주석 및 구조 제공

[v1.2.0] - 2026-10-20

Added (신규 기능 추가)

  • 실제 엔터프라이즈 인프라 연결 엔진 구현:
    • Active Directory: .NET 내장 System.DirectoryServices를 활용한 실제 LDAP/LDAPS 연결, DirectorySearcher 기반 실시간 사용자 검색, 계정 잠금 해제(lockoutTime = 0), 임시 비밀번호 초기화 및 강제 변경(pwdLastSet = 0), 계정 활성/비활성 제어 구현
    • NetApp ONTAP 스토리지: ONTAP 9.6+ 표준 REST API(https://<cluster>/api/...) 호출 엔진 구현. Qtree 목록/생성, Quota 한도/모니터링 조회, CIFS/NFS 공유 생성 및 목록 조회, 자체 서명 SSL 인증서 우회(IgnoreSslErrors) 옵션 탑재
    • MS SQL Server: System.Data.SqlClient를 활용한 실제 인스턴스 접속, sys.databases 카탈로그 뷰 조인 실시간 DB 용량/복구모델/최근백업 집계, BACKUP DATABASE 실시간 백업 파일 생성, T-SQL 간이 쿼리 파서 및 실행기 구현
  • 동작 모드 토글 (Live vs Mock) 시스템:
    • 상단 헤더에 현재 모드(Live 초록색 배지 vs Mock 보라색 배지) 실시간 시각화
    • 실제 대상 서버가 없거나 네트워크가 단절된 경우에도 안전하게 목업 데이터로 자동 폴백되는 안전장치 구축
  • 영속적 설정 관리 (config.json & ConfigService.ps1):
    • AD, NetApp, MS SQL의 모든 접속 엔드포인트 및 자격증명을 JSON 기반으로 저장/로드
    • 환경설정 화면에서 원클릭 "전체 인프라 일괄 진단" 기능 추가
  • 문서화 강화:
    • 시스템 구조도 및 C# 마이그레이션 청사진을 담은 ARCHITECTURE.md 작성
    • 실제 운영 및 메뉴얼 가이드 USAGE.md 작성

[v1.0.0] - 2026-10-20

Added

  • 프로젝트 초기 구축 (Initial Release):
    • PowerShell + WPF (XAML) 기반 아키텍처 스캐폴딩
    • Windows 11 Fluent Dark 모던 테마(Styles/Theme.xaml) 및 Segoe MDL2 Assets 글리프 아이콘 적용
    • 사이드바 내비게이션 및 ViewCache 기반의 부드러운 페이지 전환 라우팅 구현
    • 메뉴별 독립 View 5종 분리 (DashboardView, ActiveDirectoryView, NetAppView, SqlDatabaseView, SettingsView)
    • 원클릭 백그라운드 실행을 위한 Run.bat 제공