104 lines
11 KiB
Markdown
104 lines
11 KiB
Markdown
# Enterprise Admin Studio - 변경 이력 (CHANGELOG.md)
|
|
|
|
## [v1.7.0] - 2026-10-21
|
|
### Fixed & Improved
|
|
- **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` 제공
|