Commit Graph

765 Commits

Author SHA1 Message Date
Oliver Kieselbach cefdc5e8fb CORS fix 2026-03-28 09:16:27 +01:00
Oliver Kieselbach d0a79310f4 oauth flow changes 2026-03-28 09:02:23 +01:00
Oliver Kieselbach b7d040d33d CORS fix 2026-03-28 08:54:39 +01:00
Oliver Kieselbach b297923b59 fix mcp users sidebar entry 2026-03-28 08:35:00 +01:00
Oliver Kieselbach 8a4a7cf255 Remote MCP server: Streamable HTTP transport, Container App deployment, MCP user access control
- MCP server: stdio → Streamable HTTP (Express) with /health endpoint
- Auth: device code flow → token pass-through (JWT from Claude Code client)
- Dockerfile (multi-stage, node:22-slim) + .dockerignore
- Bicep template: ACR + Container App Environment + Container App (scale-to-zero)
- GitHub Actions: deploy-mcp.yml workflow, all backend workflows migrated to SP auth
- Removed unused dev/main deploy workflows
- Backend: McpAccessPolicy enum (Disabled/WhitelistOnly/AllMembers)
- Backend: McpUsers table + McpUserService (5min cache) + McpUserFunction (CRUD + access check)
- Backend: 6 endpoints registered in EndpointAccessPolicyCatalog
- Web UI: MCP Users management section at /settings/access/mcp-users
- Web UI: user list, add/remove/enable/disable, policy info banner

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 08:09:58 +01:00
Oliver Kieselbach 72d000e9a8 oauth flow change 2026-03-28 06:41:43 +01:00
Oliver Kieselbach 1609710fe3 oauh flow changes 2026-03-28 06:32:45 +01:00
Oliver Kieselbach 219f5c686a oauth for mcp server 2026-03-28 06:15:12 +01:00
Oliver Kieselbach be5a37e7bb oauth for mcp server 2026-03-28 06:15:08 +01:00
Oliver Kieselbach 7cae2515c1 change title 2026-03-28 05:42:08 +01:00
Oliver Kieselbach cb14e3afbe switch to managed identity 2026-03-28 04:32:34 +01:00
Oliver Kieselbach a6f552a877 added MCP capabilities 2026-03-28 04:20:50 +01:00
Oliver Kieselbach 802e59799c fix compiler nullable warnings 2026-03-27 22:36:36 +01:00
Oliver Kieselbach 4eec3767a7 fixed SEO meta and search route conflicts 2026-03-27 22:23:55 +01:00
Oliver Kieselbach e63929cb30 changed route for quick search 2026-03-27 22:16:30 +01:00
Oliver Kieselbach f016620a29 layout fix quick search 2026-03-27 22:06:11 +01:00
Oliver Kieselbach f2acfc06f1 changed bing auth 2026-03-27 22:01:43 +01:00
Oliver Kieselbach 99eac1369f layout fixes and fuzzy search 2026-03-27 21:50:46 +01:00
Oliver Kieselbach 22af37e994 added global quick search 2026-03-27 21:37:03 +01:00
Oliver Kieselbach 12880a8e1d renamings 2026-03-27 20:59:05 +01:00
Oliver Kieselbach c4dabeeef4 fix CVE data sync and signalr join 2026-03-27 20:48:35 +01:00
Oliver Kieselbach 8a1c8a553c fix timestamps in agent 2026-03-27 20:08:16 +01:00
Oliver Kieselbach 87ba9281f8 fix agent timestamps 2026-03-27 19:43:55 +01:00
Oliver Kieselbach 284cab5a24 check for unique rule id 2026-03-27 19:05:57 +01:00
Oliver Kieselbach d9bfd0c9af check for unique rule id 2026-03-27 19:05:29 +01:00
Oliver Kieselbach 769beaa14a Refactorings for many reusables, API URL builder, CollectorBaseClass, CorrelationID Middleware, added Polly for external APIs 2026-03-27 11:14:38 +01:00
Oliver Kieselbach 738f524083 fix nullables 2026-03-27 09:35:14 +01:00
Oliver Kieselbach 905e42064b fixed usings 2026-03-27 09:17:17 +01:00
Oliver Kieselbach 22215521f2 Merge pull request #31 from okieselbach/claude/data-access-layer-pyC29
Implement repository pattern for data access abstraction
2026-03-27 09:08:37 +01:00
Oliver Kieselbach d38d5b5906 Merge branch 'main' of https://github.com/okieselbach/Autopilot-Monitor 2026-03-27 09:00:39 +01:00
Oliver Kieselbach a2f14c1ee9 added IME process watcher 2026-03-27 09:00:33 +01:00
Claude f5ec4247e9 Migrate FeedbackFunction + TenantOffboardFunction to repositories
- FeedbackFunction → IConfigRepository (feedback CRUD)
- TenantOffboardFunction → IMaintenanceRepository.DeleteAllTenantDataAsync()

Zero functions/services now create their own TableServiceClient.
All table access goes through repository interfaces.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:38:19 +00:00
Claude c8f308c60b Add Feedback + TenantOffboard repository methods (implementations ready)
- IConfigRepository: Add GetFeedbackEntryAsync, SaveFeedbackEntryAsync, GetAllFeedbackEntriesAsync
- IMaintenanceRepository: Add DeleteAllTenantDataAsync
- TableConfigRepository: Implement feedback CRUD against PreviewConfig table
- TableMaintenanceRepository: Implement bulk tenant data deletion with batch deletes

Function migrations (FeedbackFunction, TenantOffboardFunction) in progress.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:36:27 +00:00
Claude 878b762ca5 Consolidate all repositories to share single TableServiceClient
All 10 repository implementations now get their TableClient instances from
the central TableStorageService singleton instead of creating their own
TableServiceClient connections.

Before: 8 parallel TableServiceClient instances to same Storage Account
After:  1 shared TableServiceClient (+ 2 domain-specific functions)

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:29:56 +00:00
Claude be6d7b21f8 Update migration plan — all 4 phases complete
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:22:09 +00:00
Claude d9abf724a3 Migrate VulnerabilityCorrelationService to IVulnerabilityRepository — Phase 4 complete
- VulnerabilityCorrelationService: TableStorageService → IVulnerabilityRepository + ISessionRepository
- IAdminRepository: Add SetTenantMemberEnabledAsync
- TableAdminRepository, TenantAdminsService: Implement enable/disable via new method
- DataAccessServiceExtensions: Add IDeviceSecurityRepository registration

All 12 bypass services now use repository interfaces. Zero services create
their own TableServiceClient. Only repository implementations + TableStorageService
+ 2 domain-specific functions (Feedback, TenantOffboard) have direct table access.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:21:37 +00:00
Claude f6157ec8d0 TableAdminRepository refinement from background agent
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:18:27 +00:00
Claude 5cfed4e660 Phase 4 refinements: BootstrapSession, GlobalAdmin, Notification, SessionReport
Additional cleanup from background agents completing their migrations.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:17:47 +00:00
Claude 5405a40a5a Phase 4: Extract table storage from all bypass services into repositories
New repository implementations:
- TableConfigRepository: TenantConfig, AdminConfig, PreviewWhitelist, PreviewConfig
- TableBootstrapRepository: BootstrapSessions with dual-partition scheme
- TableNotificationRepository: GlobalNotifications + SessionReports
- TableDeviceSecurityRepository: BlockedDevices + BlockedVersions

Services migrated to use repository interfaces (keep caching + business logic):
- TenantConfigurationService → IConfigRepository
- AdminConfigurationService → IConfigRepository
- PreviewWhitelistService → IConfigRepository
- TelegramNotificationService → IConfigRepository
- GlobalAdminService → IAdminRepository
- TenantAdminsService → IAdminRepository
- BootstrapSessionService → IBootstrapRepository
- GlobalNotificationService → INotificationRepository
- SessionReportService → INotificationRepository
- BlockedDeviceService → IDeviceSecurityRepository
- BlockedVersionService → IDeviceSecurityRepository

TableAdminRepository rewritten with direct table CRUD (removed circular service deps).
IVulnerabilityRepository: Added GetCveCacheEntryAsync for VulnerabilityCorrelationService.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:16:23 +00:00
Claude 6fec275d9e Update IConfigRepository, IBootstrapRepository, INotificationRepository for Phase 4
- IConfigRepository: Add GetNotificationEmailAsync, SaveNotificationEmailAsync
- IBootstrapRepository: Add CleanupExpiredAsync
- INotificationRepository: Add DismissAllNotificationsAsync, GlobalNotification.Type/Href

Phase 4 agents running in background creating repository implementations.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 07:10:45 +00:00
Claude fdbbfcb1c6 Update migration plan — Phase 1-3 complete, zero direct TableStorageService consumers
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:57:06 +00:00
Claude 36b8594ff0 Migrate all Vulnerability functions, ApiKey, bypass services to DAL (Phase 3)
Vulnerability Functions (8 files):
- GetCpeMappings, SaveCustomCpeMapping, DeleteCustomCpeMapping → IVulnerabilityRepository
- GetUnmatchedSoftware, GetSoftwareInventory → IVulnerabilityRepository
- GetVulnerabilityReport → IVulnerabilityRepository + ISessionRepository
- TriggerVulnerabilityDataSync, VulnerabilityDataSync → IVulnerabilityRepository

Admin:
- ReseedFromGitHubFunction → IVulnerabilityRepository + IRuleRepository
- ApiKeyManagementFunction → IAdminRepository
- ApiKeyMiddleware → IAdminRepository

Bypass Services (removed TableStorageService dependency):
- BlockedDeviceService → own TableClient from IConfiguration
- BlockedVersionService → own TableClient from IConfiguration
- SessionReportService → own TableClient from IConfiguration

New: TableAdminRepository implementation for IAdminRepository

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:54:35 +00:00
Claude 782f81f1a6 Expand IVulnerabilityRepository, IAdminRepository, INotificationRepository for Phase 3
- IVulnerabilityRepository: Add CPE mapping CRUD, CVE cache, cross-tenant inventory
- IAdminRepository: Add GetAllApiKeysAsync, GetApiKeyAsync, IncrementApiKeyRequestCountAsync
- INotificationRepository: Add UpdateSessionReportAdminNoteAsync
- TableVulnerabilityRepository: Implement all new methods with direct table access

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:48:47 +00:00
Claude 799ec0a39b Migrate GetPlatformStatsFunction to IMetricsRepository
Completes non-Vulnerability function migrations. Remaining 14 files still
using TableStorageService are: 8 Vulnerability functions (use GetTableClient),
ReseedFromGitHub, ApiKeyManagement, BlockedDevice/VersionService,
SessionReportService, ApiKeyMiddleware — these need interface additions first.

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:42:39 +00:00
Claude b3187d9ef3 Migrate AuditLogs, RuleResults, Progress, Feedback, Auth functions to DAL
- GetAuditLogsFunction, GetGlobalAuditLogsFunction → IMaintenanceRepository
- GetRuleResultsFunction → IRuleRepository + IMaintenanceRepository + ISessionRepository
- ProgressPortalFunction, FeedbackFunction → ISessionRepository
- AuthFunction → IMetricsRepository

https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:42:06 +00:00
Claude 6582faad17 Migrate GetGlobalGeographicMetricsFunction to DAL
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:38:20 +00:00
Claude 85cd9ae688 Migrate GetGeographicMetricsFunction to DAL
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:37:58 +00:00
Claude ff6e43cecc Migrate Geographic Location Sessions functions to DAL
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:37:41 +00:00
Claude cae99b445f Migrate GetAppMetrics, GetGlobalAppMetrics, TenantOffboard refinements
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:37:11 +00:00
Claude d89e2a2ad1 Migrate TenantAdminManagement, TenantOffboard functions to DAL
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
2026-03-27 06:36:38 +00:00