blockmine 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +59 -0
- package/.claude/settings.local.json +36 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +102 -42
- package/CLAUDE.md +284 -0
- package/README.md +315 -71
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6801 -0
- package/backend/package.json +24 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/migrations/20251116111851_add_execution_trace/migration.sql +22 -0
- package/backend/prisma/migrations/20251120154914_add_panel_api_keys/migration.sql +21 -0
- package/backend/prisma/migrations/20251121110241_add_proxy_table/migration.sql +45 -0
- package/backend/prisma/migrations/migration_lock.toml +2 -2
- package/backend/prisma/schema.prisma +103 -1
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +416 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/ai/plugin-assistant-system-prompt.md +788 -0
- package/backend/src/api/middleware/auth.js +27 -0
- package/backend/src/api/middleware/botAccess.js +7 -3
- package/backend/src/api/middleware/panelApiAuth.js +135 -0
- package/backend/src/api/routes/aiAssistant.js +995 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/auth.js +669 -633
- package/backend/src/api/routes/botCommands.js +107 -0
- package/backend/src/api/routes/botGroups.js +165 -0
- package/backend/src/api/routes/botHistory.js +108 -0
- package/backend/src/api/routes/botPermissions.js +99 -0
- package/backend/src/api/routes/botStatus.js +36 -0
- package/backend/src/api/routes/botUsers.js +162 -0
- package/backend/src/api/routes/bots.js +2451 -2360
- package/backend/src/api/routes/eventGraphs.js +4 -1
- package/backend/src/api/routes/logs.js +13 -3
- package/backend/src/api/routes/panel.js +66 -66
- package/backend/src/api/routes/panelApiKeys.js +179 -0
- package/backend/src/api/routes/pluginIde.js +1715 -135
- package/backend/src/api/routes/plugins.js +376 -218
- package/backend/src/api/routes/proxies.js +130 -0
- package/backend/src/api/routes/search.js +4 -0
- package/backend/src/api/routes/servers.js +20 -3
- package/backend/src/api/routes/settings.js +5 -0
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/api/routes/traces.js +131 -0
- package/backend/src/config/debug.config.js +36 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotHistoryStore.js +180 -0
- package/backend/src/core/BotManager.js +149 -868
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +850 -191
- package/backend/src/core/EventGraphManager.js +194 -198
- package/backend/src/core/GraphExecutionEngine.js +709 -57
- package/backend/src/core/MessageQueue.js +39 -12
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginLoader.js +99 -5
- package/backend/src/core/PluginManager.js +126 -15
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/TaskScheduler.js +1 -1
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +202 -0
- package/backend/src/core/node-registries/arrays.js +155 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +201 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +62 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +187 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/type.js +25 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/actions/create_command.js +189 -0
- package/backend/src/core/nodes/actions/delete_command.js +92 -0
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/actions/update_command.js +133 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/arrays/join.js +28 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +10 -1
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/logic/not.js +22 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +1 -1
- package/backend/src/core/nodes/strings/to_lower.js +22 -0
- package/backend/src/core/nodes/strings/to_upper.js +22 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/type/to_string.js +32 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +835 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +430 -0
- package/backend/src/core/services/DebugSessionManager.js +347 -0
- package/backend/src/core/services/GraphCollaborationManager.js +501 -0
- package/backend/src/core/services/MinecraftBotManager.js +259 -0
- package/backend/src/core/services/MinecraftViewerService.js +216 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/TraceCollectorService.js +545 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/RuntimeCommandRegistry.js +116 -0
- package/backend/src/core/system/Transport.js +74 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +65 -0
- package/backend/src/real-time/panelNamespace.js +387 -0
- package/backend/src/real-time/presence.js +7 -2
- package/backend/src/real-time/socketHandler.js +400 -5
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +21 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-B1serztM.js +11210 -0
- package/frontend/dist/assets/index-t6K1u4OV.css +32 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package-lock.json +9437 -0
- package/frontend/package.json +8 -5
- package/package.json +3 -2
- package/screen/console.png +0 -0
- package/screen/dashboard.png +0 -0
- package/screen/graph_collabe.png +0 -0
- package/screen/graph_live_debug.png +0 -0
- package/screen/management_command.png +0 -0
- package/screen/node_debug_trace.png +0 -0
- package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
- package/screen/websocket.png +0 -0
- package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
- package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
|
@@ -0,0 +1,1000 @@
|
|
|
1
|
+
# Workload Classification
|
|
2
|
+
|
|
3
|
+
Data classification, workload categorization, and separation patterns for Unclassified, CUI, Secret, Top Secret/SCI, and ITAR-controlled workloads.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Overview](#overview)
|
|
8
|
+
- [Classification Levels](#classification-levels)
|
|
9
|
+
- [Classification Criteria](#classification-criteria)
|
|
10
|
+
- [Architectural Patterns](#architectural-patterns)
|
|
11
|
+
- [Data Flow Controls](#data-flow-controls)
|
|
12
|
+
- [Implementation Guide](#implementation-guide)
|
|
13
|
+
- [Best Practices](#best-practices)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
**Workload Classification** determines security controls, infrastructure separation, personnel requirements, and compliance obligations for systems and data.
|
|
20
|
+
|
|
21
|
+
**Classification Hierarchy:**
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Security Classification Levels:
|
|
25
|
+
┌─────────────────────────────────────────────────────┐
|
|
26
|
+
│ TOP SECRET / SCI │
|
|
27
|
+
│ - Highest classification │
|
|
28
|
+
│ - Compartmented information │
|
|
29
|
+
│ - Clearance + need-to-know │
|
|
30
|
+
│ - Air-gapped or classified networks │
|
|
31
|
+
├─────────────────────────────────────────────────────┤
|
|
32
|
+
│ SECRET │
|
|
33
|
+
│ - Serious damage to national security │
|
|
34
|
+
│ - Secret clearance required │
|
|
35
|
+
│ - Dedicated infrastructure │
|
|
36
|
+
│ - Enhanced monitoring │
|
|
37
|
+
├─────────────────────────────────────────────────────┤
|
|
38
|
+
│ CONTROLLED UNCLASSIFIED INFORMATION (CUI) │
|
|
39
|
+
│ - Requires safeguarding │
|
|
40
|
+
│ - NIST 800-171 compliance │
|
|
41
|
+
│ - Government cloud regions │
|
|
42
|
+
│ - U.S. persons access │
|
|
43
|
+
├─────────────────────────────────────────────────────┤
|
|
44
|
+
│ ITAR (Export-Controlled) │
|
|
45
|
+
│ - Defense articles/services │
|
|
46
|
+
│ - U.S. persons only │
|
|
47
|
+
│ - U.S. geographic restrictions │
|
|
48
|
+
│ - Export license required │
|
|
49
|
+
├─────────────────────────────────────────────────────┤
|
|
50
|
+
│ UNCLASSIFIED │
|
|
51
|
+
│ - No special handling required │
|
|
52
|
+
│ - Standard security controls │
|
|
53
|
+
│ - Public or commercial cloud │
|
|
54
|
+
└─────────────────────────────────────────────────────┘
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Classification Levels
|
|
60
|
+
|
|
61
|
+
### Level 1: Unclassified
|
|
62
|
+
|
|
63
|
+
**Definition:** Information that does not require special protection.
|
|
64
|
+
|
|
65
|
+
**Characteristics:**
|
|
66
|
+
- Public or internal business information
|
|
67
|
+
- No national security implications
|
|
68
|
+
- Standard IT security controls
|
|
69
|
+
- Commercial cloud suitable
|
|
70
|
+
|
|
71
|
+
**Infrastructure Requirements:**
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
unclassified:
|
|
75
|
+
environment: "Commercial cloud (AWS, Azure, GCP)"
|
|
76
|
+
encryption:
|
|
77
|
+
at_rest: "AES-256 (recommended)"
|
|
78
|
+
in_transit: "TLS 1.2+"
|
|
79
|
+
access_control:
|
|
80
|
+
authentication: "SSO, MFA recommended"
|
|
81
|
+
authorization: "Role-based access control"
|
|
82
|
+
monitoring:
|
|
83
|
+
logging: "Standard application logs"
|
|
84
|
+
retention: "90 days minimum"
|
|
85
|
+
personnel:
|
|
86
|
+
clearance: "None required"
|
|
87
|
+
citizenship: "No restrictions"
|
|
88
|
+
compliance:
|
|
89
|
+
frameworks: ["SOC 2", "ISO 27001"]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Example Workloads:**
|
|
93
|
+
- Public-facing websites
|
|
94
|
+
- Marketing materials
|
|
95
|
+
- General business applications
|
|
96
|
+
- Non-sensitive customer data
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Level 2: CUI (Controlled Unclassified Information)
|
|
101
|
+
|
|
102
|
+
**Definition:** Information that requires safeguarding or dissemination controls per law, regulation, or government policy (NIST SP 800-171).
|
|
103
|
+
|
|
104
|
+
**Characteristics:**
|
|
105
|
+
- Federal contract information
|
|
106
|
+
- Privacy-sensitive data
|
|
107
|
+
- Law enforcement sensitive
|
|
108
|
+
- Requires NIST 800-171 compliance
|
|
109
|
+
|
|
110
|
+
**Infrastructure Requirements:**
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
cui:
|
|
114
|
+
environment: "GovCloud, Azure Government, or FedRAMP High"
|
|
115
|
+
encryption:
|
|
116
|
+
at_rest: "FIPS 140-2 validated (AES-256)"
|
|
117
|
+
in_transit: "TLS 1.3 with approved cipher suites"
|
|
118
|
+
access_control:
|
|
119
|
+
authentication: "MFA required (all users)"
|
|
120
|
+
authorization: "Least privilege, separation of duties"
|
|
121
|
+
session: "15-minute inactivity timeout"
|
|
122
|
+
monitoring:
|
|
123
|
+
logging: "Comprehensive audit logs"
|
|
124
|
+
retention: "1 year minimum"
|
|
125
|
+
siem: "Security information and event management"
|
|
126
|
+
personnel:
|
|
127
|
+
clearance: "Not required (but background check recommended)"
|
|
128
|
+
citizenship: "U.S. citizens or lawful permanent residents"
|
|
129
|
+
compliance:
|
|
130
|
+
frameworks: ["NIST 800-171", "CMMC Level 2", "FedRAMP"]
|
|
131
|
+
network:
|
|
132
|
+
segmentation: "Isolated from public networks"
|
|
133
|
+
boundaries: "Controlled ingress/egress"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**CUI Categories (Examples):**
|
|
137
|
+
```
|
|
138
|
+
CUI Categories:
|
|
139
|
+
┌─────────────────────────────────────────────────────┐
|
|
140
|
+
│ CONTROLLED TECHNICAL INFORMATION (CTI) │
|
|
141
|
+
│ - Technical data with military/space application │
|
|
142
|
+
│ - Not classified but export-controlled │
|
|
143
|
+
├─────────────────────────────────────────────────────┤
|
|
144
|
+
│ LAW ENFORCEMENT SENSITIVE (LES) │
|
|
145
|
+
│ - Criminal investigations │
|
|
146
|
+
│ - Witness protection information │
|
|
147
|
+
├─────────────────────────────────────────────────────┤
|
|
148
|
+
│ PRIVACY INFORMATION │
|
|
149
|
+
│ - PII (Personally Identifiable Information) │
|
|
150
|
+
│ - Medical records │
|
|
151
|
+
│ - Financial data │
|
|
152
|
+
├─────────────────────────────────────────────────────┤
|
|
153
|
+
│ PROPRIETARY BUSINESS INFORMATION (PROPIN) │
|
|
154
|
+
│ - Trade secrets │
|
|
155
|
+
│ - Commercial financial information │
|
|
156
|
+
└─────────────────────────────────────────────────────┘
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### Level 3: Secret
|
|
162
|
+
|
|
163
|
+
**Definition:** Information that, if disclosed, could cause serious damage to national security.
|
|
164
|
+
|
|
165
|
+
**Characteristics:**
|
|
166
|
+
- Military operations
|
|
167
|
+
- Intelligence sources/methods
|
|
168
|
+
- Cryptographic systems
|
|
169
|
+
- Weapons systems data
|
|
170
|
+
|
|
171
|
+
**Infrastructure Requirements:**
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
secret:
|
|
175
|
+
environment: "Azure Government DoD, AWS Secret Region, or on-premises classified"
|
|
176
|
+
encryption:
|
|
177
|
+
at_rest: "FIPS 140-2 Level 3+ (Suite B cryptography)"
|
|
178
|
+
in_transit: "IPsec with Suite B, TLS 1.3"
|
|
179
|
+
access_control:
|
|
180
|
+
authentication: "CAC/PIV card + PIN"
|
|
181
|
+
authorization: "Need-to-know basis, mandatory access control"
|
|
182
|
+
session: "10-minute inactivity timeout"
|
|
183
|
+
monitoring:
|
|
184
|
+
logging: "All actions logged and reviewed"
|
|
185
|
+
retention: "7 years minimum"
|
|
186
|
+
siem: "Real-time security monitoring"
|
|
187
|
+
ids_ips: "Intrusion detection/prevention required"
|
|
188
|
+
personnel:
|
|
189
|
+
clearance: "Secret clearance required"
|
|
190
|
+
citizenship: "U.S. citizens only"
|
|
191
|
+
training: "Annual security awareness, role-based training"
|
|
192
|
+
compliance:
|
|
193
|
+
frameworks: ["DoD SRG IL6", "NIST 800-53 High", "ICD 503"]
|
|
194
|
+
network:
|
|
195
|
+
segmentation: "Air-gapped or dedicated classified network"
|
|
196
|
+
boundaries: "Cross-domain solutions for data transfer"
|
|
197
|
+
physical:
|
|
198
|
+
location: "SCIF or secure facility"
|
|
199
|
+
access: "Two-person integrity, visitor escorts"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Level 4: Top Secret / SCI
|
|
205
|
+
|
|
206
|
+
**Definition:** Information that, if disclosed, could cause exceptionally grave damage to national security. SCI (Sensitive Compartmented Information) requires special handling.
|
|
207
|
+
|
|
208
|
+
**Characteristics:**
|
|
209
|
+
- Highest classification level
|
|
210
|
+
- Compartmented (need-to-know + access approval)
|
|
211
|
+
- Intelligence operations
|
|
212
|
+
- Special access programs
|
|
213
|
+
|
|
214
|
+
**Infrastructure Requirements:**
|
|
215
|
+
|
|
216
|
+
```yaml
|
|
217
|
+
top_secret_sci:
|
|
218
|
+
environment: "Air-gapped JWICS, on-premises SCIF"
|
|
219
|
+
encryption:
|
|
220
|
+
at_rest: "NSA-approved Type 1 encryption"
|
|
221
|
+
in_transit: "Type 1 encryption, Suite B crypto"
|
|
222
|
+
access_control:
|
|
223
|
+
authentication: "CAC/PIV + biometric"
|
|
224
|
+
authorization: "Compartmented access, polygraph may be required"
|
|
225
|
+
session: "5-minute inactivity timeout, auto-logoff"
|
|
226
|
+
monitoring:
|
|
227
|
+
logging: "All actions logged, real-time monitoring"
|
|
228
|
+
retention: "25 years"
|
|
229
|
+
siem: "24/7 security operations center"
|
|
230
|
+
anomaly_detection: "AI/ML-based threat detection"
|
|
231
|
+
personnel:
|
|
232
|
+
clearance: "TS/SCI clearance required"
|
|
233
|
+
citizenship: "U.S. citizens only (born or naturalized)"
|
|
234
|
+
training: "Initial indoctrination, annual refresher, CI awareness"
|
|
235
|
+
investigation: "SSBI (Single Scope Background Investigation)"
|
|
236
|
+
compliance:
|
|
237
|
+
frameworks: ["ICD 503", "ICD 705", "NIST 800-53 High"]
|
|
238
|
+
network:
|
|
239
|
+
segmentation: "Completely air-gapped"
|
|
240
|
+
boundaries: "One-way data diode or trusted guard"
|
|
241
|
+
wireless: "Prohibited"
|
|
242
|
+
physical:
|
|
243
|
+
location: "Accredited SCIF"
|
|
244
|
+
access: "Continuous monitoring, no personal devices"
|
|
245
|
+
tempest: "Required for certain systems"
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
### Special Category: ITAR (International Traffic in Arms Regulations)
|
|
251
|
+
|
|
252
|
+
**Definition:** Export-controlled defense articles, services, and technical data on the U.S. Munitions List.
|
|
253
|
+
|
|
254
|
+
**Characteristics:**
|
|
255
|
+
- Defense-related technology
|
|
256
|
+
- Strictly U.S. persons access
|
|
257
|
+
- Geographic data restrictions
|
|
258
|
+
- Export license required
|
|
259
|
+
|
|
260
|
+
**Infrastructure Requirements:**
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
itar:
|
|
264
|
+
environment: "U.S. GovCloud only (no international regions)"
|
|
265
|
+
encryption:
|
|
266
|
+
at_rest: "FIPS 140-2 validated (AES-256)"
|
|
267
|
+
in_transit: "TLS 1.3, no international transit"
|
|
268
|
+
access_control:
|
|
269
|
+
authentication: "MFA required"
|
|
270
|
+
authorization: "U.S. persons only (citizenship verified)"
|
|
271
|
+
foreign_national_access: "Requires DSP-5 or TAA authorization"
|
|
272
|
+
monitoring:
|
|
273
|
+
logging: "All access logged with citizenship tracking"
|
|
274
|
+
retention: "5 years minimum"
|
|
275
|
+
audit: "Quarterly access reviews"
|
|
276
|
+
personnel:
|
|
277
|
+
clearance: "Not required (but common in defense)"
|
|
278
|
+
citizenship: "U.S. persons only (citizens + permanent residents + protected persons)"
|
|
279
|
+
verification: "I-9 verification, citizenship proof"
|
|
280
|
+
compliance:
|
|
281
|
+
frameworks: ["ITAR 22 CFR 120-130", "EAR"]
|
|
282
|
+
network:
|
|
283
|
+
segmentation: "Isolated from non-ITAR systems"
|
|
284
|
+
geography: "U.S. data centers only"
|
|
285
|
+
data:
|
|
286
|
+
storage: "No replication outside U.S."
|
|
287
|
+
transfer: "No international transfers"
|
|
288
|
+
destruction: "Certificate of destruction required"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Classification Criteria
|
|
294
|
+
|
|
295
|
+
### Data Classification Matrix
|
|
296
|
+
|
|
297
|
+
| Data Type | Unclassified | CUI | Secret | TS/SCI | ITAR |
|
|
298
|
+
|-----------|--------------|-----|--------|--------|------|
|
|
299
|
+
| **Public information** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
300
|
+
| **Internal business** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
301
|
+
| **Personal data (PII)** | ⚠️ | ✅ | ❌ | ❌ | ❌ |
|
|
302
|
+
| **Federal contract info** | ❌ | ✅ | ❌ | ❌ | ⚠️ |
|
|
303
|
+
| **Defense technical data** | ❌ | ⚠️ | ⚠️ | ⚠️ | ✅ |
|
|
304
|
+
| **Military operations** | ❌ | ❌ | ✅ | ⚠️ | ❌ |
|
|
305
|
+
| **Intelligence sources** | ❌ | ❌ | ⚠️ | ✅ | ❌ |
|
|
306
|
+
| **Nuclear weapons data** | ❌ | ❌ | ❌ | ✅ | ❌ |
|
|
307
|
+
|
|
308
|
+
**Legend:** ✅ Appropriate | ⚠️ May apply | ❌ Not applicable
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Architectural Patterns
|
|
313
|
+
|
|
314
|
+
### Pattern 1: Classification-Based Network Segmentation
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
Multi-Level Security Architecture:
|
|
318
|
+
┌─────────────────────────────────────────────────────┐
|
|
319
|
+
│ INTERNET (Unclassified) │
|
|
320
|
+
│ ↓ │
|
|
321
|
+
│ ┌─────────────────────────────────────────────────┐ │
|
|
322
|
+
│ │ DMZ (Public-Facing Services) │ │
|
|
323
|
+
│ │ - Web servers │ │
|
|
324
|
+
│ │ - Load balancers │ │
|
|
325
|
+
│ │ - WAF │ │
|
|
326
|
+
│ └─────────────────────────────────────────────────┘ │
|
|
327
|
+
│ ↓ Firewall │
|
|
328
|
+
└────────────────┬────────────────────────────────────┘
|
|
329
|
+
│
|
|
330
|
+
┌────────────────┴────────────────────────────────────┐
|
|
331
|
+
│ INTERNAL NETWORK (Unclassified) │
|
|
332
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
333
|
+
│ │ Application Tier │ │
|
|
334
|
+
│ │ - Business logic │ │
|
|
335
|
+
│ │ - APIs │ │
|
|
336
|
+
│ └─────────────────────────────────────────────┘ │
|
|
337
|
+
│ ↓ Firewall │
|
|
338
|
+
└────────────────┬────────────────────────────────────┘
|
|
339
|
+
│
|
|
340
|
+
┌────────────────┴────────────────────────────────────┐
|
|
341
|
+
│ CUI NETWORK (NIST 800-171 Zone) │
|
|
342
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
343
|
+
│ │ CUI Processing Systems │ │
|
|
344
|
+
│ │ - Federal contract data │ │
|
|
345
|
+
│ │ - Encrypted storage │ │
|
|
346
|
+
│ │ - Access logging │ │
|
|
347
|
+
│ └─────────────────────────────────────────────┘ │
|
|
348
|
+
│ ↓ CDS (Cross-Domain Solution) │
|
|
349
|
+
└────────────────┬────────────────────────────────────┘
|
|
350
|
+
│
|
|
351
|
+
┌────────────────┴────────────────────────────────────┐
|
|
352
|
+
│ SECRET NETWORK (Classified) │
|
|
353
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
354
|
+
│ │ Secret Workloads │ │
|
|
355
|
+
│ │ - Military systems │ │
|
|
356
|
+
│ │ - Intelligence data │ │
|
|
357
|
+
│ │ - Type 1 encryption │ │
|
|
358
|
+
│ └─────────────────────────────────────────────┘ │
|
|
359
|
+
│ ↓ Trusted Guard │
|
|
360
|
+
└────────────────┬────────────────────────────────────┘
|
|
361
|
+
│
|
|
362
|
+
┌────────────────┴────────────────────────────────────┐
|
|
363
|
+
│ TS/SCI NETWORK (Air-Gapped) │
|
|
364
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
365
|
+
│ │ TS/SCI Workloads │ │
|
|
366
|
+
│ │ - JWICS connectivity │ │
|
|
367
|
+
│ │ - SCIF environment │ │
|
|
368
|
+
│ │ - Physical isolation │ │
|
|
369
|
+
│ └─────────────────────────────────────────────┘ │
|
|
370
|
+
└─────────────────────────────────────────────────────┘
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Pattern 2: Cloud Account Separation
|
|
374
|
+
|
|
375
|
+
```hcl
|
|
376
|
+
# Multi-account strategy for classification levels
|
|
377
|
+
|
|
378
|
+
# Organization structure
|
|
379
|
+
resource "aws_organizations_organization" "main" {
|
|
380
|
+
feature_set = "ALL"
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
# Unclassified OU (Commercial AWS)
|
|
384
|
+
resource "aws_organizations_organizational_unit" "unclassified" {
|
|
385
|
+
name = "Unclassified"
|
|
386
|
+
parent_id = aws_organizations_organization.main.roots[0].id
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
resource "aws_organizations_account" "unclassified_prod" {
|
|
390
|
+
name = "Production-Unclassified"
|
|
391
|
+
email = "aws-unclass-prod@company.com"
|
|
392
|
+
parent_id = aws_organizations_organizational_unit.unclassified.id
|
|
393
|
+
|
|
394
|
+
tags = {
|
|
395
|
+
Classification = "Unclassified"
|
|
396
|
+
Environment = "Production"
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
# CUI OU (GovCloud)
|
|
401
|
+
resource "aws_organizations_organizational_unit" "cui" {
|
|
402
|
+
name = "CUI-GovCloud"
|
|
403
|
+
parent_id = aws_organizations_organization.main.roots[0].id
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
resource "aws_organizations_account" "cui_prod" {
|
|
407
|
+
name = "Production-CUI"
|
|
408
|
+
email = "aws-cui-prod@company.com"
|
|
409
|
+
parent_id = aws_organizations_organizational_unit.cui.id
|
|
410
|
+
|
|
411
|
+
tags = {
|
|
412
|
+
Classification = "CUI"
|
|
413
|
+
Environment = "Production"
|
|
414
|
+
Compliance = "NIST-800-171"
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
# ITAR OU (GovCloud, isolated)
|
|
419
|
+
resource "aws_organizations_organizational_unit" "itar" {
|
|
420
|
+
name = "ITAR"
|
|
421
|
+
parent_id = aws_organizations_organization.main.roots[0].id
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
resource "aws_organizations_account" "itar_prod" {
|
|
425
|
+
name = "Production-ITAR"
|
|
426
|
+
email = "aws-itar-prod@company.com"
|
|
427
|
+
parent_id = aws_organizations_organizational_unit.itar.id
|
|
428
|
+
|
|
429
|
+
tags = {
|
|
430
|
+
Classification = "ITAR"
|
|
431
|
+
Environment = "Production"
|
|
432
|
+
AccessRestriction = "US-Persons-Only"
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
# Service Control Policies
|
|
437
|
+
resource "aws_organizations_policy" "cui_scp" {
|
|
438
|
+
name = "CUI-Restrictions"
|
|
439
|
+
description = "Enforce CUI compliance requirements"
|
|
440
|
+
|
|
441
|
+
content = jsonencode({
|
|
442
|
+
Version = "2012-10-17"
|
|
443
|
+
Statement = [
|
|
444
|
+
{
|
|
445
|
+
Effect = "Deny"
|
|
446
|
+
Action = ["*"]
|
|
447
|
+
Resource = "*"
|
|
448
|
+
Condition = {
|
|
449
|
+
StringNotEquals = {
|
|
450
|
+
"aws:RequestedRegion" = ["us-gov-west-1", "us-gov-east-1"]
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
Effect = "Deny"
|
|
456
|
+
Action = ["s3:PutObject"]
|
|
457
|
+
Resource = "*"
|
|
458
|
+
Condition = {
|
|
459
|
+
StringNotEquals = {
|
|
460
|
+
"s3:x-amz-server-side-encryption" = "aws:kms"
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
})
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
resource "aws_organizations_policy_attachment" "cui_attach" {
|
|
469
|
+
policy_id = aws_organizations_policy.cui_scp.id
|
|
470
|
+
target_id = aws_organizations_organizational_unit.cui.id
|
|
471
|
+
}
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Pattern 3: Kubernetes Namespace Isolation
|
|
475
|
+
|
|
476
|
+
```yaml
|
|
477
|
+
# Workload classification using Kubernetes namespaces
|
|
478
|
+
|
|
479
|
+
# Unclassified namespace
|
|
480
|
+
apiVersion: v1
|
|
481
|
+
kind: Namespace
|
|
482
|
+
metadata:
|
|
483
|
+
name: unclassified
|
|
484
|
+
labels:
|
|
485
|
+
classification: unclassified
|
|
486
|
+
pod-security.kubernetes.io/enforce: baseline
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
# CUI namespace with strict controls
|
|
490
|
+
apiVersion: v1
|
|
491
|
+
kind: Namespace
|
|
492
|
+
metadata:
|
|
493
|
+
name: cui
|
|
494
|
+
labels:
|
|
495
|
+
classification: cui
|
|
496
|
+
compliance: nist-800-171
|
|
497
|
+
pod-security.kubernetes.io/enforce: restricted
|
|
498
|
+
annotations:
|
|
499
|
+
scheduler.alpha.kubernetes.io/node-selector: "classification=cui"
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
# Network policy: Default deny for CUI
|
|
503
|
+
apiVersion: networking.k8s.io/v1
|
|
504
|
+
kind: NetworkPolicy
|
|
505
|
+
metadata:
|
|
506
|
+
name: cui-default-deny
|
|
507
|
+
namespace: cui
|
|
508
|
+
spec:
|
|
509
|
+
podSelector: {}
|
|
510
|
+
policyTypes:
|
|
511
|
+
- Ingress
|
|
512
|
+
- Egress
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
# Network policy: Allow CUI-to-CUI only
|
|
516
|
+
apiVersion: networking.k8s.io/v1
|
|
517
|
+
kind: NetworkPolicy
|
|
518
|
+
metadata:
|
|
519
|
+
name: cui-isolation
|
|
520
|
+
namespace: cui
|
|
521
|
+
spec:
|
|
522
|
+
podSelector: {}
|
|
523
|
+
policyTypes:
|
|
524
|
+
- Ingress
|
|
525
|
+
- Egress
|
|
526
|
+
ingress:
|
|
527
|
+
- from:
|
|
528
|
+
- namespaceSelector:
|
|
529
|
+
matchLabels:
|
|
530
|
+
classification: cui
|
|
531
|
+
egress:
|
|
532
|
+
- to:
|
|
533
|
+
- namespaceSelector:
|
|
534
|
+
matchLabels:
|
|
535
|
+
classification: cui
|
|
536
|
+
- to:
|
|
537
|
+
- namespaceSelector:
|
|
538
|
+
matchLabels:
|
|
539
|
+
name: kube-system
|
|
540
|
+
ports:
|
|
541
|
+
- protocol: UDP
|
|
542
|
+
port: 53
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
# ITAR namespace
|
|
546
|
+
apiVersion: v1
|
|
547
|
+
kind: Namespace
|
|
548
|
+
metadata:
|
|
549
|
+
name: itar
|
|
550
|
+
labels:
|
|
551
|
+
classification: itar
|
|
552
|
+
export-control: "true"
|
|
553
|
+
pod-security.kubernetes.io/enforce: restricted
|
|
554
|
+
annotations:
|
|
555
|
+
scheduler.alpha.kubernetes.io/node-selector: "classification=itar,citizenship=us-persons"
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
# Resource quota for ITAR workloads
|
|
559
|
+
apiVersion: v1
|
|
560
|
+
kind: ResourceQuota
|
|
561
|
+
metadata:
|
|
562
|
+
name: itar-quota
|
|
563
|
+
namespace: itar
|
|
564
|
+
spec:
|
|
565
|
+
hard:
|
|
566
|
+
requests.cpu: "100"
|
|
567
|
+
requests.memory: 200Gi
|
|
568
|
+
persistentvolumeclaims: "50"
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Data Flow Controls
|
|
574
|
+
|
|
575
|
+
### Cross-Classification Data Flow
|
|
576
|
+
|
|
577
|
+
```
|
|
578
|
+
Controlled Data Transfer:
|
|
579
|
+
┌─────────────────────────────────────────────────────┐
|
|
580
|
+
│ SOURCE: TS/SCI Environment │
|
|
581
|
+
│ ┌──────────────────┐ │
|
|
582
|
+
│ │ Classified Data │ │
|
|
583
|
+
│ └────────┬─────────┘ │
|
|
584
|
+
└───────────┼─────────────────────────────────────────┘
|
|
585
|
+
│
|
|
586
|
+
↓ Data Preparation
|
|
587
|
+
┌───────────┴─────────────────────────────────────────┐
|
|
588
|
+
│ REVIEW PROCESS │
|
|
589
|
+
│ 1. Classification review │
|
|
590
|
+
│ 2. Sanitization/redaction │
|
|
591
|
+
│ 3. Approval by Original Classification Authority │
|
|
592
|
+
│ 4. Document declassification decision │
|
|
593
|
+
└───────────┬─────────────────────────────────────────┘
|
|
594
|
+
│
|
|
595
|
+
↓ Cross-Domain Solution (CDS)
|
|
596
|
+
┌───────────┴─────────────────────────────────────────┐
|
|
597
|
+
│ TRUSTED GUARD / DATA DIODE │
|
|
598
|
+
│ - Content inspection │
|
|
599
|
+
│ - Malware scanning │
|
|
600
|
+
│ - Policy enforcement │
|
|
601
|
+
│ - One-way transfer only │
|
|
602
|
+
└───────────┬─────────────────────────────────────────┘
|
|
603
|
+
│
|
|
604
|
+
↓
|
|
605
|
+
┌───────────┴─────────────────────────────────────────┐
|
|
606
|
+
│ DESTINATION: Lower Classification or Unclassified │
|
|
607
|
+
│ ┌──────────────────┐ │
|
|
608
|
+
│ │ Sanitized Data │ │
|
|
609
|
+
│ └──────────────────┘ │
|
|
610
|
+
└─────────────────────────────────────────────────────┘
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
### Data Labeling
|
|
614
|
+
|
|
615
|
+
```python
|
|
616
|
+
# data_classification.py
|
|
617
|
+
"""Data classification tagging system"""
|
|
618
|
+
|
|
619
|
+
class DataClassification:
|
|
620
|
+
LEVELS = {
|
|
621
|
+
'UNCLASSIFIED': {
|
|
622
|
+
'numeric': 0,
|
|
623
|
+
'marking': 'UNCLASSIFIED',
|
|
624
|
+
'color': 'green'
|
|
625
|
+
},
|
|
626
|
+
'CUI': {
|
|
627
|
+
'numeric': 1,
|
|
628
|
+
'marking': 'CUI',
|
|
629
|
+
'color': 'purple',
|
|
630
|
+
'handling': 'CUI Basic'
|
|
631
|
+
},
|
|
632
|
+
'SECRET': {
|
|
633
|
+
'numeric': 2,
|
|
634
|
+
'marking': 'SECRET',
|
|
635
|
+
'color': 'red',
|
|
636
|
+
'handling': 'DoD 5200.1-R'
|
|
637
|
+
},
|
|
638
|
+
'TOP_SECRET': {
|
|
639
|
+
'numeric': 3,
|
|
640
|
+
'marking': 'TOP SECRET',
|
|
641
|
+
'color': 'orange',
|
|
642
|
+
'handling': 'EO 13526'
|
|
643
|
+
},
|
|
644
|
+
'TS_SCI': {
|
|
645
|
+
'numeric': 4,
|
|
646
|
+
'marking': 'TOP SECRET//SCI',
|
|
647
|
+
'color': 'yellow',
|
|
648
|
+
'handling': 'ICD 705',
|
|
649
|
+
'compartment': 'REQUIRED'
|
|
650
|
+
},
|
|
651
|
+
'ITAR': {
|
|
652
|
+
'numeric': 1,
|
|
653
|
+
'marking': 'ITAR CONTROLLED',
|
|
654
|
+
'color': 'blue',
|
|
655
|
+
'handling': '22 CFR 120-130',
|
|
656
|
+
'export_control': True
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
@staticmethod
|
|
661
|
+
def tag_data(data, classification, metadata=None):
|
|
662
|
+
"""Tag data with classification"""
|
|
663
|
+
if classification not in DataClassification.LEVELS:
|
|
664
|
+
raise ValueError(f"Invalid classification: {classification}")
|
|
665
|
+
|
|
666
|
+
level = DataClassification.LEVELS[classification]
|
|
667
|
+
|
|
668
|
+
tagged_data = {
|
|
669
|
+
'data': data,
|
|
670
|
+
'classification': {
|
|
671
|
+
'level': classification,
|
|
672
|
+
'marking': level['marking'],
|
|
673
|
+
'numeric_level': level['numeric'],
|
|
674
|
+
'timestamp': datetime.now().isoformat(),
|
|
675
|
+
'classifier': metadata.get('classifier') if metadata else 'SYSTEM'
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
if 'handling' in level:
|
|
680
|
+
tagged_data['classification']['handling_caveat'] = level['handling']
|
|
681
|
+
|
|
682
|
+
if metadata:
|
|
683
|
+
tagged_data['classification']['metadata'] = metadata
|
|
684
|
+
|
|
685
|
+
return tagged_data
|
|
686
|
+
|
|
687
|
+
@staticmethod
|
|
688
|
+
def can_access(user_clearance, data_classification):
|
|
689
|
+
"""Check if user can access data"""
|
|
690
|
+
user_level = DataClassification.LEVELS[user_clearance]['numeric']
|
|
691
|
+
data_level = DataClassification.LEVELS[data_classification]['numeric']
|
|
692
|
+
|
|
693
|
+
# Simple clearance level check
|
|
694
|
+
if user_level < data_level:
|
|
695
|
+
return False
|
|
696
|
+
|
|
697
|
+
# Additional checks for special categories
|
|
698
|
+
if data_classification == 'TS_SCI':
|
|
699
|
+
# Would check compartment access here
|
|
700
|
+
pass
|
|
701
|
+
|
|
702
|
+
if data_classification == 'ITAR':
|
|
703
|
+
# Would check U.S. person status here
|
|
704
|
+
pass
|
|
705
|
+
|
|
706
|
+
return True
|
|
707
|
+
|
|
708
|
+
# Usage example
|
|
709
|
+
classifier = DataClassification()
|
|
710
|
+
|
|
711
|
+
# Tag CUI data
|
|
712
|
+
cui_data = classifier.tag_data(
|
|
713
|
+
data={'contract': 'DoD-12345', 'specifications': '...'},
|
|
714
|
+
classification='CUI',
|
|
715
|
+
metadata={
|
|
716
|
+
'classifier': 'john.doe@contractor.com',
|
|
717
|
+
'cui_category': 'CTI',
|
|
718
|
+
'distribution': 'FED ONLY'
|
|
719
|
+
}
|
|
720
|
+
)
|
|
721
|
+
|
|
722
|
+
# Check access
|
|
723
|
+
can_access = classifier.can_access(
|
|
724
|
+
user_clearance='CUI',
|
|
725
|
+
data_classification='CUI'
|
|
726
|
+
)
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## Implementation Guide
|
|
732
|
+
|
|
733
|
+
### Step 1: Data Discovery and Classification
|
|
734
|
+
|
|
735
|
+
```bash
|
|
736
|
+
#!/bin/bash
|
|
737
|
+
# classify-data.sh - Discover and classify data
|
|
738
|
+
|
|
739
|
+
echo "🔍 Starting data classification scan..."
|
|
740
|
+
|
|
741
|
+
# Scan for potential CUI
|
|
742
|
+
echo "Scanning for CUI indicators..."
|
|
743
|
+
rg -i "controlled unclassified|export control|fouo|for official use" . --type-not binary
|
|
744
|
+
|
|
745
|
+
# Scan for potential ITAR
|
|
746
|
+
echo "Scanning for ITAR indicators..."
|
|
747
|
+
rg -i "itar|munitions list|defense article|technical data.*export" . --type-not binary
|
|
748
|
+
|
|
749
|
+
# Scan for PII
|
|
750
|
+
echo "Scanning for PII..."
|
|
751
|
+
rg -i "ssn|social security|passport|driver.*license" . --type-not binary
|
|
752
|
+
|
|
753
|
+
echo "✅ Classification scan complete. Review findings and apply appropriate labels."
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
### Step 2: Infrastructure Tagging
|
|
757
|
+
|
|
758
|
+
```hcl
|
|
759
|
+
# Apply classification tags to all resources
|
|
760
|
+
|
|
761
|
+
locals {
|
|
762
|
+
classification_tags = {
|
|
763
|
+
# Data classification
|
|
764
|
+
DataClassification = var.data_classification # "Unclassified", "CUI", "Secret", "ITAR"
|
|
765
|
+
|
|
766
|
+
# Compliance requirements
|
|
767
|
+
ComplianceFramework = lookup({
|
|
768
|
+
"Unclassified" = "SOC2"
|
|
769
|
+
"CUI" = "NIST-800-171,CMMC-L2"
|
|
770
|
+
"Secret" = "DoD-SRG-IL6"
|
|
771
|
+
"ITAR" = "ITAR-22-CFR-120"
|
|
772
|
+
}, var.data_classification, "None")
|
|
773
|
+
|
|
774
|
+
# Access restrictions
|
|
775
|
+
AccessRestriction = lookup({
|
|
776
|
+
"Unclassified" = "Standard"
|
|
777
|
+
"CUI" = "U.S.-Persons"
|
|
778
|
+
"Secret" = "Secret-Clearance"
|
|
779
|
+
"ITAR" = "U.S.-Persons-Only"
|
|
780
|
+
}, var.data_classification, "Standard")
|
|
781
|
+
|
|
782
|
+
# Environment designation
|
|
783
|
+
Environment = var.environment
|
|
784
|
+
|
|
785
|
+
# Encryption requirements
|
|
786
|
+
EncryptionRequired = var.data_classification != "Unclassified" ? "FIPS-140-2" : "Standard"
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
# Apply to all resources
|
|
791
|
+
resource "aws_s3_bucket" "classified_data" {
|
|
792
|
+
bucket = "data-${var.data_classification}-${var.environment}"
|
|
793
|
+
|
|
794
|
+
tags = merge(
|
|
795
|
+
local.classification_tags,
|
|
796
|
+
{
|
|
797
|
+
Purpose = "Classified data storage"
|
|
798
|
+
}
|
|
799
|
+
)
|
|
800
|
+
}
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
### Step 3: Access Control Implementation
|
|
804
|
+
|
|
805
|
+
```yaml
|
|
806
|
+
# RBAC for classified workloads
|
|
807
|
+
|
|
808
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
|
809
|
+
kind: Role
|
|
810
|
+
metadata:
|
|
811
|
+
namespace: cui
|
|
812
|
+
name: cui-developer
|
|
813
|
+
rules:
|
|
814
|
+
- apiGroups: [""]
|
|
815
|
+
resources: ["pods", "services", "configmaps"]
|
|
816
|
+
verbs: ["get", "list", "watch"]
|
|
817
|
+
- apiGroups: ["apps"]
|
|
818
|
+
resources: ["deployments", "replicasets"]
|
|
819
|
+
verbs: ["get", "list", "watch"]
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
|
823
|
+
kind: Role
|
|
824
|
+
metadata:
|
|
825
|
+
namespace: itar
|
|
826
|
+
name: itar-developer
|
|
827
|
+
rules:
|
|
828
|
+
- apiGroups: [""]
|
|
829
|
+
resources: ["pods", "services"]
|
|
830
|
+
verbs: ["get", "list", "watch"]
|
|
831
|
+
- apiGroups: ["apps"]
|
|
832
|
+
resources: ["deployments"]
|
|
833
|
+
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
|
834
|
+
|
|
835
|
+
---
|
|
836
|
+
# RoleBinding with citizenship verification
|
|
837
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
|
838
|
+
kind: RoleBinding
|
|
839
|
+
metadata:
|
|
840
|
+
name: itar-developers
|
|
841
|
+
namespace: itar
|
|
842
|
+
roleRef:
|
|
843
|
+
apiGroup: rbac.authorization.k8s.io
|
|
844
|
+
kind: Role
|
|
845
|
+
name: itar-developer
|
|
846
|
+
subjects:
|
|
847
|
+
# Only bind to verified U.S. persons
|
|
848
|
+
- kind: User
|
|
849
|
+
name: john.doe@company.com # Verified U.S. citizen
|
|
850
|
+
apiGroup: rbac.authorization.k8s.io
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
---
|
|
854
|
+
|
|
855
|
+
## Best Practices
|
|
856
|
+
|
|
857
|
+
### 1. Classification Decision Tree
|
|
858
|
+
|
|
859
|
+
```
|
|
860
|
+
Data Classification Decision Tree:
|
|
861
|
+
┌─────────────────────────────────────────────────────┐
|
|
862
|
+
│ START: What type of data? │
|
|
863
|
+
└───────────────┬─────────────────────────────────────┘
|
|
864
|
+
│
|
|
865
|
+
↓
|
|
866
|
+
Does it contain:
|
|
867
|
+
- Military operations?
|
|
868
|
+
- Intelligence sources?
|
|
869
|
+
│
|
|
870
|
+
┌───────┴───────┐
|
|
871
|
+
YES NO
|
|
872
|
+
↓ ↓
|
|
873
|
+
Extremely Very serious
|
|
874
|
+
grave damage? damage?
|
|
875
|
+
│ │
|
|
876
|
+
YES │ NO YES │ NO
|
|
877
|
+
↓ ↓ ↓ ↓
|
|
878
|
+
TS/SCI SECRET SECRET CUI?
|
|
879
|
+
│
|
|
880
|
+
┌───────┴───────┐
|
|
881
|
+
YES NO
|
|
882
|
+
↓ ↓
|
|
883
|
+
CUI Category: UNCLASSIFIED
|
|
884
|
+
- CTI (ITAR?)
|
|
885
|
+
- PII
|
|
886
|
+
- FOUO
|
|
887
|
+
- etc.
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
### 2. Separation Enforcement
|
|
891
|
+
|
|
892
|
+
```yaml
|
|
893
|
+
# Gatekeeper policy: Enforce namespace classification
|
|
894
|
+
apiVersion: constraints.gatekeeper.sh/v1beta1
|
|
895
|
+
kind: K8sRequiredLabels
|
|
896
|
+
metadata:
|
|
897
|
+
name: namespace-must-have-classification
|
|
898
|
+
spec:
|
|
899
|
+
match:
|
|
900
|
+
kinds:
|
|
901
|
+
- apiGroups: [""]
|
|
902
|
+
kinds: ["Namespace"]
|
|
903
|
+
parameters:
|
|
904
|
+
labels:
|
|
905
|
+
- key: "classification"
|
|
906
|
+
allowedRegex: "^(unclassified|cui|secret|itar)$"
|
|
907
|
+
|
|
908
|
+
---
|
|
909
|
+
# Deny cross-classification communication
|
|
910
|
+
apiVersion: templates.gatekeeper.sh/v1beta1
|
|
911
|
+
kind: ConstraintTemplate
|
|
912
|
+
metadata:
|
|
913
|
+
name: denyunclas sifiedtocuiflow
|
|
914
|
+
spec:
|
|
915
|
+
crd:
|
|
916
|
+
spec:
|
|
917
|
+
names:
|
|
918
|
+
kind: DenyUnclassifiedToCUIFlow
|
|
919
|
+
targets:
|
|
920
|
+
- target: admission.k8s.gatekeeper.sh
|
|
921
|
+
rego: |
|
|
922
|
+
package denycrossclassflow
|
|
923
|
+
|
|
924
|
+
violation[{"msg": msg}] {
|
|
925
|
+
input.review.kind.kind == "NetworkPolicy"
|
|
926
|
+
input.review.object.spec.ingress[_].from[_].namespaceSelector
|
|
927
|
+
ns_label := input.review.object.spec.ingress[_].from[_].namespaceSelector.matchLabels.classification
|
|
928
|
+
ns_label == "unclassified"
|
|
929
|
+
input.review.namespace == "cui"
|
|
930
|
+
|
|
931
|
+
msg := "Cannot allow traffic from unclassified namespace to CUI namespace"
|
|
932
|
+
}
|
|
933
|
+
```
|
|
934
|
+
|
|
935
|
+
### 3. Audit and Monitoring
|
|
936
|
+
|
|
937
|
+
```python
|
|
938
|
+
# classification_audit.py
|
|
939
|
+
"""Audit workload classification compliance"""
|
|
940
|
+
|
|
941
|
+
def audit_classification_compliance():
|
|
942
|
+
"""Audit all resources for proper classification"""
|
|
943
|
+
findings = []
|
|
944
|
+
|
|
945
|
+
# Check tagging compliance
|
|
946
|
+
untagged_resources = find_untagged_resources()
|
|
947
|
+
if untagged_resources:
|
|
948
|
+
findings.append({
|
|
949
|
+
'severity': 'HIGH',
|
|
950
|
+
'finding': f'{len(untagged_resources)} resources without classification tags',
|
|
951
|
+
'resources': untagged_resources
|
|
952
|
+
})
|
|
953
|
+
|
|
954
|
+
# Check data flow violations
|
|
955
|
+
flow_violations = check_data_flow_rules()
|
|
956
|
+
if flow_violations:
|
|
957
|
+
findings.append({
|
|
958
|
+
'severity': 'CRITICAL',
|
|
959
|
+
'finding': 'Cross-classification data flow detected',
|
|
960
|
+
'violations': flow_violations
|
|
961
|
+
})
|
|
962
|
+
|
|
963
|
+
# Check access violations
|
|
964
|
+
access_violations = check_access_compliance()
|
|
965
|
+
if access_violations:
|
|
966
|
+
findings.append({
|
|
967
|
+
'severity': 'CRITICAL',
|
|
968
|
+
'finding': 'Unauthorized access to classified data',
|
|
969
|
+
'violations': access_violations
|
|
970
|
+
})
|
|
971
|
+
|
|
972
|
+
return findings
|
|
973
|
+
|
|
974
|
+
def generate_classification_report():
|
|
975
|
+
"""Generate classification compliance report"""
|
|
976
|
+
report = {
|
|
977
|
+
'timestamp': datetime.now().isoformat(),
|
|
978
|
+
'summary': {
|
|
979
|
+
'total_workloads': count_workloads(),
|
|
980
|
+
'by_classification': {
|
|
981
|
+
'unclassified': count_by_classification('unclassified'),
|
|
982
|
+
'cui': count_by_classification('cui'),
|
|
983
|
+
'secret': count_by_classification('secret'),
|
|
984
|
+
'itar': count_by_classification('itar')
|
|
985
|
+
}
|
|
986
|
+
},
|
|
987
|
+
'compliance_status': audit_classification_compliance(),
|
|
988
|
+
'recommendations': generate_recommendations()
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
return report
|
|
992
|
+
```
|
|
993
|
+
|
|
994
|
+
---
|
|
995
|
+
|
|
996
|
+
**Related Resources:**
|
|
997
|
+
- [cleared-environment-architecture.md](cleared-environment-architecture.md) - Architectural patterns
|
|
998
|
+
- [cleared-cloud-environments.md](../../cloud-engineering/resources/cleared-cloud-environments.md) - Cloud implementations
|
|
999
|
+
- [compliance-frameworks.md](../../devsecops/resources/compliance-frameworks.md) - Compliance requirements
|
|
1000
|
+
- [security-architecture.md](security-architecture.md) - Security patterns
|