blockmine 1.24.0 → 1.27.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.
Files changed (476) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/README.en.md +427 -0
  3. package/README.md +40 -0
  4. package/backend/package.json +2 -2
  5. package/backend/prisma/migrations/20260328173000_add_plugin_source_ref/migration.sql +2 -0
  6. package/backend/prisma/migrations/migration_lock.toml +2 -2
  7. package/backend/prisma/schema.prisma +2 -0
  8. package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
  9. package/backend/src/api/routes/apiKeys.js +8 -0
  10. package/backend/src/api/routes/bots.js +271 -9
  11. package/backend/src/api/routes/eventGraphs.js +151 -1
  12. package/backend/src/api/routes/health.js +38 -0
  13. package/backend/src/api/routes/nodeRegistry.js +63 -0
  14. package/backend/src/api/routes/plugins.js +254 -29
  15. package/backend/src/api/routes/servers.js +14 -2
  16. package/backend/src/container.js +11 -8
  17. package/backend/src/core/BotCommandLoader.js +161 -0
  18. package/backend/src/core/BotConnection.js +125 -0
  19. package/backend/src/core/BotEventHandlers.js +234 -0
  20. package/backend/src/core/BotIPCHandler.js +445 -0
  21. package/backend/src/core/BotManager.js +15 -7
  22. package/backend/src/core/BotProcess.js +169 -140
  23. package/backend/src/core/EventGraphManager.js +7 -3
  24. package/backend/src/core/GraphDebugHandler.js +229 -0
  25. package/backend/src/core/GraphDebugIPC.js +117 -0
  26. package/backend/src/core/GraphExecutionEngine.js +545 -978
  27. package/backend/src/core/GraphTraversal.js +80 -0
  28. package/backend/src/core/GraphValidation.js +73 -0
  29. package/backend/src/core/NodeDefinition.js +138 -0
  30. package/backend/src/core/NodeRegistry.js +153 -141
  31. package/backend/src/core/PluginLoader.js +83 -3
  32. package/backend/src/core/PluginManager.js +346 -35
  33. package/backend/src/core/RewindSignal.js +9 -0
  34. package/backend/src/core/config/ConfigValidator.js +72 -0
  35. package/backend/src/core/config/FeatureFlags.js +52 -0
  36. package/backend/src/core/config/__tests__/ConfigValidator.test.js +232 -0
  37. package/backend/src/core/domain/entities/Bot.js +39 -0
  38. package/backend/src/core/domain/entities/Command.js +41 -0
  39. package/backend/src/core/domain/entities/EventGraph.js +39 -0
  40. package/backend/src/core/domain/entities/Plugin.js +45 -0
  41. package/backend/src/core/domain/entities/User.js +40 -0
  42. package/backend/src/core/domain/services/DependencyResolver.js +168 -0
  43. package/backend/src/core/domain/services/GraphValidator.js +117 -0
  44. package/backend/src/core/domain/services/PermissionChecker.js +34 -0
  45. package/backend/src/core/domain/services/__tests__/DependencyResolver.test.js +126 -0
  46. package/backend/src/core/domain/valueObjects/BotConfig.js +27 -0
  47. package/backend/src/core/domain/valueObjects/DependencyGraph.js +86 -0
  48. package/backend/src/core/domain/valueObjects/PluginManifest.js +36 -0
  49. package/backend/src/core/errors/BaseError.js +29 -0
  50. package/backend/src/core/errors/ErrorHandler.js +81 -0
  51. package/backend/src/core/errors/__tests__/ErrorHandler.test.js +188 -0
  52. package/backend/src/core/errors/index.js +68 -0
  53. package/backend/src/core/infrastructure/BatchingUtility.js +66 -0
  54. package/backend/src/core/infrastructure/CircuitBreaker.js +103 -0
  55. package/backend/src/core/infrastructure/ConnectionPool.js +81 -0
  56. package/backend/src/core/infrastructure/RateLimiter.js +64 -0
  57. package/backend/src/core/infrastructure/__tests__/BatchingUtility.test.js +86 -0
  58. package/backend/src/core/infrastructure/__tests__/CircuitBreaker.test.js +156 -0
  59. package/backend/src/core/infrastructure/__tests__/ConnectionPool.test.js +146 -0
  60. package/backend/src/core/infrastructure/__tests__/RateLimiter.test.js +171 -0
  61. package/backend/src/core/ipc/botApiFactory.js +72 -0
  62. package/backend/src/core/ipc/ipcMessageTypes.js +115 -0
  63. package/backend/src/core/logging/AuditLogger.js +61 -0
  64. package/backend/src/core/logging/StructuredLogger.js +80 -0
  65. package/backend/src/core/logging/__tests__/StructuredLogger.test.js +213 -0
  66. package/backend/src/core/logging/index.js +7 -0
  67. package/backend/src/core/metrics/MetricsCollector.js +104 -0
  68. package/backend/src/core/metrics/__tests__/MetricsCollector.test.js +131 -0
  69. package/backend/src/core/node-registries/actionsNodes.js +191 -0
  70. package/backend/src/core/node-registries/arraysNodes.js +152 -0
  71. package/backend/src/core/node-registries/botNodes.js +48 -0
  72. package/backend/src/core/node-registries/containerNodes.js +141 -0
  73. package/backend/src/core/node-registries/dataNodes.js +284 -0
  74. package/backend/src/core/node-registries/debugNodes.js +23 -0
  75. package/backend/src/core/node-registries/eventsNodes.js +223 -0
  76. package/backend/src/core/node-registries/flowNodes.js +151 -0
  77. package/backend/src/core/node-registries/furnaceNodes.js +123 -0
  78. package/backend/src/core/node-registries/index.js +108 -0
  79. package/backend/src/core/node-registries/inventory.js +102 -106
  80. package/backend/src/core/node-registries/logicNodes.js +54 -0
  81. package/backend/src/core/node-registries/mathNodes.js +38 -0
  82. package/backend/src/core/node-registries/navigationNodes.js +109 -0
  83. package/backend/src/core/node-registries/objectsNodes.js +90 -0
  84. package/backend/src/core/node-registries/stringsNodes.js +165 -0
  85. package/backend/src/core/node-registries/timeNodes.js +105 -0
  86. package/backend/src/core/node-registries/typeNodes.js +22 -0
  87. package/backend/src/core/node-registries/usersNodes.js +126 -0
  88. package/backend/src/core/nodes/arrays/shuffle.js +14 -0
  89. package/backend/src/core/nodes/bot/get_name.js +8 -0
  90. package/backend/src/core/nodes/bot/stop_bot.js +5 -0
  91. package/backend/src/core/nodes/container/open.js +101 -111
  92. package/backend/src/core/nodes/data/store_read.js +26 -0
  93. package/backend/src/core/nodes/data/store_write.js +23 -0
  94. package/backend/src/core/nodes/event/call_event.js +31 -0
  95. package/backend/src/core/nodes/event/custom_event.js +8 -0
  96. package/backend/src/core/nodes/flow/timer.js +35 -0
  97. package/backend/src/core/nodes/inventory/drop.js +73 -65
  98. package/backend/src/core/nodes/inventory/equip.js +54 -45
  99. package/backend/src/core/nodes/inventory/select_slot.js +48 -46
  100. package/backend/src/core/nodes/navigation/follow.js +54 -51
  101. package/backend/src/core/nodes/navigation/go_to.js +41 -53
  102. package/backend/src/core/nodes/navigation/go_to_entity.js +65 -69
  103. package/backend/src/core/nodes/navigation/go_to_player.js +65 -70
  104. package/backend/src/core/nodes/navigation/stop.js +17 -26
  105. package/backend/src/core/nodes/users/add_to_group.js +24 -0
  106. package/backend/src/core/nodes/users/check_permission.js +26 -0
  107. package/backend/src/core/nodes/users/remove_from_group.js +24 -0
  108. package/backend/src/core/services/BotIPCMessageRouter.js +337 -0
  109. package/backend/src/core/services/BotLifecycleService.js +43 -450
  110. package/backend/src/core/services/CacheManager.js +83 -23
  111. package/backend/src/core/services/CrashRestartManager.js +42 -0
  112. package/backend/src/core/services/DebugSessionManager.js +114 -12
  113. package/backend/src/core/services/EventGraphService.js +69 -0
  114. package/backend/src/core/services/MinecraftBotManager.js +9 -1
  115. package/backend/src/core/services/PluginManagementService.js +84 -0
  116. package/backend/src/core/services/TestModeContext.js +65 -0
  117. package/backend/src/core/services/__tests__/CacheManager.test.js +168 -0
  118. package/backend/src/core/services.js +1 -11
  119. package/backend/src/core/validation/InputValidator.js +167 -0
  120. package/backend/src/core/validation/__tests__/InputValidator.test.js +296 -0
  121. package/backend/src/real-time/botApi/index.js +1 -1
  122. package/backend/src/real-time/socketHandler.js +26 -0
  123. package/backend/src/server.js +21 -6
  124. package/frontend/dist/assets/browser-ponyfill-D8y0Ty7C.js +2 -0
  125. package/frontend/dist/assets/index-CFJLS0dk.css +32 -0
  126. package/frontend/dist/assets/index-D91UGNMG.js +11260 -0
  127. package/frontend/dist/flags/en.svg +32 -0
  128. package/frontend/dist/flags/ru.svg +5 -0
  129. package/frontend/dist/index.html +2 -2
  130. package/frontend/dist/locales/en/admin.json +100 -0
  131. package/frontend/dist/locales/en/api-keys.json +58 -0
  132. package/frontend/dist/locales/en/bots.json +113 -0
  133. package/frontend/dist/locales/en/common.json +53 -0
  134. package/frontend/dist/locales/en/configuration.json +22 -0
  135. package/frontend/dist/locales/en/console.json +10 -0
  136. package/frontend/dist/locales/en/dashboard.json +85 -0
  137. package/frontend/dist/locales/en/dialogs.json +70 -0
  138. package/frontend/dist/locales/en/event-graphs.json +50 -0
  139. package/frontend/dist/locales/en/graph-store.json +70 -0
  140. package/frontend/dist/locales/en/login.json +36 -0
  141. package/frontend/dist/locales/en/management.json +192 -0
  142. package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
  143. package/frontend/dist/locales/en/nodes.json +1132 -0
  144. package/frontend/dist/locales/en/permissions.json +50 -0
  145. package/frontend/dist/locales/en/plugin-detail.json +69 -0
  146. package/frontend/dist/locales/en/plugins.json +329 -0
  147. package/frontend/dist/locales/en/proxies.json +81 -0
  148. package/frontend/dist/locales/en/servers.json +39 -0
  149. package/frontend/dist/locales/en/setup.json +19 -0
  150. package/frontend/dist/locales/en/sidebar.json +195 -0
  151. package/frontend/dist/locales/en/tasks.json +62 -0
  152. package/frontend/dist/locales/en/visual-editor.json +418 -0
  153. package/frontend/dist/locales/en/websocket.json +86 -0
  154. package/frontend/dist/locales/ru/admin.json +100 -0
  155. package/frontend/dist/locales/ru/api-keys.json +58 -0
  156. package/frontend/dist/locales/ru/bots.json +113 -0
  157. package/frontend/dist/locales/ru/common.json +49 -0
  158. package/frontend/dist/locales/ru/configuration.json +22 -0
  159. package/frontend/dist/locales/ru/console.json +10 -0
  160. package/frontend/dist/locales/ru/dashboard.json +85 -0
  161. package/frontend/dist/locales/ru/dialogs.json +70 -0
  162. package/frontend/dist/locales/ru/event-graphs.json +50 -0
  163. package/frontend/dist/locales/ru/graph-store.json +70 -0
  164. package/frontend/dist/locales/ru/login.json +36 -0
  165. package/frontend/dist/locales/ru/management.json +192 -0
  166. package/frontend/dist/locales/ru/minecraft-viewer.json +30 -0
  167. package/frontend/dist/locales/ru/nodes.json +1131 -0
  168. package/frontend/dist/locales/ru/permissions.json +50 -0
  169. package/frontend/dist/locales/ru/plugin-detail.json +49 -0
  170. package/frontend/dist/locales/ru/plugins.json +209 -0
  171. package/frontend/dist/locales/ru/proxies.json +81 -0
  172. package/frontend/dist/locales/ru/servers.json +39 -0
  173. package/frontend/dist/locales/ru/setup.json +19 -0
  174. package/frontend/dist/locales/ru/sidebar.json +195 -0
  175. package/frontend/dist/locales/ru/tasks.json +62 -0
  176. package/frontend/dist/locales/ru/visual-editor.json +420 -0
  177. package/frontend/dist/locales/ru/websocket.json +86 -0
  178. package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
  179. package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
  180. package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
  181. package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
  182. package/frontend/package.json +6 -0
  183. package/nul +12 -0
  184. package/package.json +3 -3
  185. package/screen/3dviewer.png +0 -0
  186. package/screen/console.png +0 -0
  187. package/screen/dashboard.png +0 -0
  188. package/screen/graph_collabe.png +0 -0
  189. package/screen/graph_live_debug.png +0 -0
  190. package/screen/language_selector.png +0 -0
  191. package/screen/management_command.png +0 -0
  192. package/screen/node_debug_trace.png +0 -0
  193. package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
  194. package/screen/websocket.png +0 -0
  195. 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
  196. 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
  197. package/.claude/agents/README.md +0 -469
  198. package/.claude/agents/auth-route-debugger.md +0 -118
  199. package/.claude/agents/auth-route-tester.md +0 -93
  200. package/.claude/agents/auto-error-resolver.md +0 -97
  201. package/.claude/agents/build-optimizer.md +0 -236
  202. package/.claude/agents/code-architect.md +0 -34
  203. package/.claude/agents/code-architecture-reviewer.md +0 -83
  204. package/.claude/agents/code-explorer.md +0 -51
  205. package/.claude/agents/code-refactor-master.md +0 -94
  206. package/.claude/agents/code-reviewer.md +0 -46
  207. package/.claude/agents/cost-optimizer.md +0 -134
  208. package/.claude/agents/deployment-orchestrator.md +0 -113
  209. package/.claude/agents/documentation-architect.md +0 -82
  210. package/.claude/agents/frontend-error-fixer.md +0 -77
  211. package/.claude/agents/iac-code-generator.md +0 -71
  212. package/.claude/agents/incident-responder.md +0 -346
  213. package/.claude/agents/infrastructure-architect.md +0 -31
  214. package/.claude/agents/kubernetes-specialist.md +0 -56
  215. package/.claude/agents/migration-planner.md +0 -181
  216. package/.claude/agents/network-architect.md +0 -196
  217. package/.claude/agents/plan-reviewer.md +0 -52
  218. package/.claude/agents/refactor-planner.md +0 -63
  219. package/.claude/agents/security-scanner.md +0 -102
  220. package/.claude/agents/web-research-specialist.md +0 -78
  221. package/.claude/commands/cost-analysis.md +0 -315
  222. package/.claude/commands/dev-docs-update.md +0 -55
  223. package/.claude/commands/dev-docs.md +0 -51
  224. package/.claude/commands/feature-dev.md +0 -125
  225. package/.claude/commands/incident-debug.md +0 -247
  226. package/.claude/commands/infra-plan.md +0 -81
  227. package/.claude/commands/migration-plan.md +0 -478
  228. package/.claude/commands/route-research-for-testing.md +0 -37
  229. package/.claude/commands/security-review.md +0 -66
  230. package/.claude/hooks/CONFIG.md +0 -448
  231. package/.claude/hooks/README.md +0 -163
  232. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
  233. package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
  234. package/.claude/hooks/add-skill-activation-banners.ts +0 -132
  235. package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
  236. package/.claude/hooks/error-handling-reminder.sh +0 -12
  237. package/.claude/hooks/error-handling-reminder.ts +0 -222
  238. package/.claude/hooks/k8s-manifest-validator.sh +0 -56
  239. package/.claude/hooks/package-lock.json +0 -556
  240. package/.claude/hooks/package.json +0 -16
  241. package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
  242. package/.claude/hooks/post-tool-use-tracker.sh +0 -183
  243. package/.claude/hooks/security-policy-check.sh +0 -247
  244. package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
  245. package/.claude/hooks/skill-activation-prompt.sh +0 -10
  246. package/.claude/hooks/skill-activation-prompt.ts +0 -141
  247. package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
  248. package/.claude/hooks/terraform-validator.sh +0 -53
  249. package/.claude/hooks/test-input.json +0 -7
  250. package/.claude/hooks/test-skill-activation.ts +0 -427
  251. package/.claude/hooks/trigger-build-resolver.sh +0 -79
  252. package/.claude/hooks/tsc-check.sh +0 -173
  253. package/.claude/hooks/tsconfig.json +0 -19
  254. package/.claude/settings.json +0 -59
  255. package/.claude/settings.local.json +0 -67
  256. package/.claude/skills/README.md +0 -507
  257. package/.claude/skills/api-engineering/SKILL.md +0 -63
  258. package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
  259. package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
  260. package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
  261. package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
  262. package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
  263. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
  264. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
  265. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
  266. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
  267. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
  268. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
  269. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
  270. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
  271. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
  272. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
  273. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
  274. package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
  275. package/.claude/skills/build-engineering/SKILL.md +0 -431
  276. package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
  277. package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
  278. package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
  279. package/.claude/skills/build-engineering/resources/build-security.md +0 -95
  280. package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
  281. package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
  282. package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
  283. package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
  284. package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
  285. package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
  286. package/.claude/skills/cloud-engineering/SKILL.md +0 -675
  287. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
  288. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
  289. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
  290. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
  291. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
  292. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
  293. package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
  294. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
  295. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
  296. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
  297. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
  298. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
  299. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
  300. package/.claude/skills/cybersecurity/SKILL.md +0 -409
  301. package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
  302. package/.claude/skills/database-engineering/SKILL.md +0 -61
  303. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
  304. package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
  305. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
  306. package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
  307. package/.claude/skills/devsecops/SKILL.md +0 -374
  308. package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
  309. package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
  310. package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
  311. package/.claude/skills/devsecops/resources/container-security.md +0 -915
  312. package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
  313. package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
  314. package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
  315. package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
  316. package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
  317. package/.claude/skills/devsecops/resources/security-testing.md +0 -203
  318. package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
  319. package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
  320. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
  321. package/.claude/skills/documentation-as-code/SKILL.md +0 -323
  322. package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
  323. package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
  324. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
  325. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
  326. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
  327. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
  328. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
  329. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
  330. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
  331. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
  332. package/.claude/skills/engineering-management/SKILL.md +0 -356
  333. package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
  334. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
  335. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
  336. package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
  337. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
  338. package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
  339. package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
  340. package/.claude/skills/error-tracking/SKILL.md +0 -379
  341. package/.claude/skills/frontend-design/SKILL.md +0 -42
  342. package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
  343. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
  344. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
  345. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
  346. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
  347. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
  348. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
  349. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
  350. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
  351. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
  352. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
  353. package/.claude/skills/general-it-engineering/SKILL.md +0 -393
  354. package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
  355. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
  356. package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
  357. package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
  358. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
  359. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
  360. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
  361. package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
  362. package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
  363. package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
  364. package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
  365. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
  366. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
  367. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
  368. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
  369. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
  370. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
  371. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
  372. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
  373. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
  374. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
  375. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
  376. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
  377. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
  378. package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
  379. package/.claude/skills/network-engineering/SKILL.md +0 -385
  380. package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
  381. package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
  382. package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
  383. package/.claude/skills/network-engineering/resources/network-security.md +0 -921
  384. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
  385. package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
  386. package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
  387. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
  388. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
  389. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
  390. package/.claude/skills/node-development/SKILL.md +0 -317
  391. package/.claude/skills/observability-engineering/SKILL.md +0 -101
  392. package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
  393. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
  394. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
  395. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
  396. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
  397. package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
  398. package/.claude/skills/platform-engineering/SKILL.md +0 -555
  399. package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
  400. package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
  401. package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
  402. package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
  403. package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
  404. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
  405. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
  406. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
  407. package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
  408. package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
  409. package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
  410. package/.claude/skills/release-engineering/SKILL.md +0 -393
  411. package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
  412. package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
  413. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
  414. package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
  415. package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
  416. package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
  417. package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
  418. package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
  419. package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
  420. package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
  421. package/.claude/skills/route-tester/SKILL.md +0 -392
  422. package/.claude/skills/skill-developer/ADVANCED.md +0 -197
  423. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
  424. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
  425. package/.claude/skills/skill-developer/SKILL.md +0 -430
  426. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
  427. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
  428. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
  429. package/.claude/skills/skill-rules.json +0 -2989
  430. package/.claude/skills/sre/SKILL.md +0 -464
  431. package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
  432. package/.claude/skills/sre/resources/capacity-planning.md +0 -226
  433. package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
  434. package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
  435. package/.claude/skills/sre/resources/incident-management.md +0 -436
  436. package/.claude/skills/sre/resources/observability-stack.md +0 -240
  437. package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
  438. package/.claude/skills/sre/resources/performance-optimization.md +0 -108
  439. package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
  440. package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
  441. package/.claude/skills/sre/resources/toil-reduction.md +0 -145
  442. package/.claude/skills/systems-engineering/SKILL.md +0 -648
  443. package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
  444. package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
  445. package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
  446. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
  447. package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
  448. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
  449. package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
  450. package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
  451. package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
  452. package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
  453. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
  454. package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
  455. package/.claude/skills/technical-leadership/SKILL.md +0 -728
  456. package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
  457. package/backend/package-lock.json +0 -6801
  458. package/backend/src/core/node-registries/actions.js +0 -202
  459. package/backend/src/core/node-registries/arrays.js +0 -155
  460. package/backend/src/core/node-registries/bot.js +0 -23
  461. package/backend/src/core/node-registries/container.js +0 -162
  462. package/backend/src/core/node-registries/data.js +0 -290
  463. package/backend/src/core/node-registries/debug.js +0 -26
  464. package/backend/src/core/node-registries/events.js +0 -201
  465. package/backend/src/core/node-registries/flow.js +0 -139
  466. package/backend/src/core/node-registries/furnace.js +0 -143
  467. package/backend/src/core/node-registries/logic.js +0 -62
  468. package/backend/src/core/node-registries/math.js +0 -42
  469. package/backend/src/core/node-registries/navigation.js +0 -111
  470. package/backend/src/core/node-registries/objects.js +0 -98
  471. package/backend/src/core/node-registries/strings.js +0 -187
  472. package/backend/src/core/node-registries/time.js +0 -113
  473. package/backend/src/core/node-registries/type.js +0 -25
  474. package/backend/src/core/node-registries/users.js +0 -79
  475. package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
  476. package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
@@ -1,915 +0,0 @@
1
- # Container Security
2
-
3
- Comprehensive guide to securing container images and runtime environments, covering image scanning, base image selection, vulnerability remediation, distroless images, runtime security, and container best practices.
4
-
5
- ## Table of Contents
6
-
7
- - [Overview](#overview)
8
- - [Image Scanning](#image-scanning)
9
- - [Base Image Selection](#base-image-selection)
10
- - [Distroless Images](#distroless-images)
11
- - [Runtime Security](#runtime-security)
12
- - [Pod Security Standards](#pod-security-standards)
13
- - [Image Signing and Verification](#image-signing-and-verification)
14
- - [Container Hardening](#container-hardening)
15
- - [Best Practices](#best-practices)
16
- - [Anti-Patterns](#anti-patterns)
17
-
18
- ## Overview
19
-
20
- **Container Security Layers:**
21
-
22
- ```
23
- ┌────────────────────────────────────────────────┐
24
- │ Supply Chain Security │
25
- │ (Image signing, SBOM, provenance) │
26
- ├────────────────────────────────────────────────┤
27
- │ Build-Time Security │
28
- │ (Base image, dependencies, scanning) │
29
- ├────────────────────────────────────────────────┤
30
- │ Registry Security │
31
- │ (Access control, encryption, scanning) │
32
- ├────────────────────────────────────────────────┤
33
- │ Runtime Security │
34
- │ (Falco, AppArmor, Seccomp, monitoring) │
35
- └────────────────────────────────────────────────┘
36
- ```
37
-
38
- ## Image Scanning
39
-
40
- ### Trivy Image Scanning
41
-
42
- **Basic Scanning:**
43
- ```bash
44
- # Scan image
45
- trivy image nginx:latest
46
-
47
- # Scan with severity filter
48
- trivy image --severity HIGH,CRITICAL nginx:latest
49
-
50
- # Scan local Dockerfile
51
- trivy config Dockerfile
52
-
53
- # Scan and fail on vulnerabilities
54
- trivy image --exit-code 1 --severity CRITICAL nginx:latest
55
-
56
- # Generate SBOM
57
- trivy image --format cyclonedx nginx:latest
58
- ```
59
-
60
- **CI Integration:**
61
- ```yaml
62
- # .github/workflows/container-scan.yml
63
- name: Container Security Scan
64
-
65
- on:
66
- push:
67
- branches: [ main ]
68
- pull_request:
69
-
70
- jobs:
71
- trivy-scan:
72
- runs-on: ubuntu-latest
73
- steps:
74
- - uses: actions/checkout@v3
75
-
76
- - name: Build image
77
- run: |
78
- docker build -t myapp:${{ github.sha }} .
79
-
80
- - name: Run Trivy vulnerability scanner
81
- uses: aquasecurity/trivy-action@master
82
- with:
83
- image-ref: 'myapp:${{ github.sha }}'
84
- format: 'sarif'
85
- output: 'trivy-results.sarif'
86
- severity: 'CRITICAL,HIGH'
87
- exit-code: '1'
88
-
89
- - name: Upload Trivy results to GitHub Security
90
- uses: github/codeql-action/upload-sarif@v2
91
- if: always()
92
- with:
93
- sarif_file: 'trivy-results.sarif'
94
-
95
- - name: Generate SBOM
96
- uses: aquasecurity/trivy-action@master
97
- with:
98
- image-ref: 'myapp:${{ github.sha }}'
99
- format: 'cyclonedx'
100
- output: 'sbom.json'
101
-
102
- - name: Upload SBOM
103
- uses: actions/upload-artifact@v3
104
- with:
105
- name: sbom
106
- path: sbom.json
107
- ```
108
-
109
- **Trivy Configuration:**
110
- ```yaml
111
- # trivy.yaml
112
- scan:
113
- security-checks:
114
- - vuln
115
- - config
116
- - secret
117
-
118
- severity:
119
- - CRITICAL
120
- - HIGH
121
-
122
- vulnerability:
123
- type:
124
- - os
125
- - library
126
-
127
- ignore-unfixed: true
128
-
129
- secret:
130
- config: .trivyignore-secrets
131
- ```
132
-
133
- **Ignore File:**
134
- ```
135
- # .trivyignore
136
- # Temporary ignore for CVE with no fix available
137
- CVE-2023-12345
138
-
139
- # Ignore low severity in dev dependencies
140
- CVE-2023-67890 npm:dev-dependency
141
- ```
142
-
143
- ### Grype Scanning
144
-
145
- ```bash
146
- # Install Grype
147
- curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh
148
-
149
- # Scan image
150
- grype nginx:latest
151
-
152
- # Only high/critical
153
- grype nginx:latest --fail-on high
154
-
155
- # Output formats
156
- grype nginx:latest -o json > results.json
157
- grype nginx:latest -o sarif > results.sarif
158
- grype nginx:latest -o template -t grype-report.tmpl
159
- ```
160
-
161
- ### Snyk Container
162
-
163
- ```bash
164
- # Authenticate
165
- snyk auth
166
-
167
- # Scan image
168
- snyk container test nginx:latest
169
-
170
- # Monitor image
171
- snyk container monitor nginx:latest --project-name=nginx-prod
172
-
173
- # Test Dockerfile
174
- snyk container test nginx:latest --file=Dockerfile
175
-
176
- # Get remediation advice
177
- snyk container test nginx:latest --json | jq '.vulnerabilities[].remediation'
178
- ```
179
-
180
- **GitHub Action:**
181
- ```yaml
182
- - name: Snyk Container Scan
183
- uses: snyk/actions/docker@master
184
- env:
185
- SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
186
- with:
187
- image: myapp:latest
188
- args: --severity-threshold=high --file=Dockerfile
189
- ```
190
-
191
- ## Base Image Selection
192
-
193
- ### Official vs Custom Images
194
-
195
- **Official Images (Recommended):**
196
- ```dockerfile
197
- # ✅ Good: Official images, well-maintained
198
- FROM node:20-alpine
199
- FROM python:3.11-slim
200
- FROM nginx:1.25-alpine
201
- FROM postgres:15-alpine
202
- ```
203
-
204
- **Avoid:**
205
- ```dockerfile
206
- # ❌ Bad: Unknown source, no security updates
207
- FROM someuser/custom-node:latest
208
- FROM random-image:v1
209
- ```
210
-
211
- ### Choosing the Right Variant
212
-
213
- **Variants Comparison:**
214
-
215
- | Variant | Size | Use Case | Security |
216
- |---------|------|----------|----------|
217
- | `alpine` | ~5MB | Production, minimal | Excellent |
218
- | `slim` | ~50MB | Good balance | Very Good |
219
- | `standard` | ~200MB | Dev, all tools | Good |
220
- | `distroless` | ~20MB | Production, secure | Excellent |
221
-
222
- **Examples:**
223
-
224
- ```dockerfile
225
- # Alpine (smallest)
226
- FROM node:20-alpine
227
- # Size: ~50MB, Good for production
228
-
229
- # Slim (balanced)
230
- FROM python:3.11-slim
231
- # Size: ~150MB, Common packages included
232
-
233
- # Distroless (most secure)
234
- FROM gcr.io/distroless/nodejs20-debian11
235
- # Size: ~70MB, No shell, minimal attack surface
236
- ```
237
-
238
- ### Multi-Stage Builds
239
-
240
- **Security Benefits:**
241
- - Remove build tools from final image
242
- - Smaller attack surface
243
- - Reduced vulnerability count
244
-
245
- ```dockerfile
246
- # Multi-stage build for security
247
- FROM node:20-alpine AS builder
248
- WORKDIR /app
249
-
250
- # Install dependencies
251
- COPY package*.json ./
252
- RUN npm ci --only=production && \
253
- npm cache clean --force
254
-
255
- COPY . .
256
- RUN npm run build
257
-
258
- # Final production image
259
- FROM gcr.io/distroless/nodejs20-debian11
260
- WORKDIR /app
261
-
262
- # Copy only necessary files
263
- COPY --from=builder /app/dist ./dist
264
- COPY --from=builder /app/node_modules ./node_modules
265
- COPY --from=builder /app/package.json ./
266
-
267
- # Non-root user (distroless default)
268
- USER nonroot:nonroot
269
-
270
- # Start app
271
- CMD ["dist/index.js"]
272
- ```
273
-
274
- **Comparison:**
275
-
276
- ```bash
277
- # Standard build
278
- FROM node:20
279
- WORKDIR /app
280
- COPY . .
281
- RUN npm install
282
- CMD ["node", "index.js"]
283
- # Result: 900MB, 200+ vulnerabilities
284
-
285
- # Multi-stage + distroless
286
- FROM node:20-alpine AS builder
287
- # ... build steps
288
- FROM gcr.io/distroless/nodejs20-debian11
289
- # ... minimal copy
290
- # Result: 150MB, 5 vulnerabilities
291
- ```
292
-
293
- ## Distroless Images
294
-
295
- ### What are Distroless Images?
296
-
297
- **Traditional Image:**
298
- ```
299
- Application
300
- Node.js Runtime
301
- Shell, Package Manager, Utils
302
- Base OS (Debian/Alpine)
303
- ────────────────────
304
- Size: 200MB
305
- Attack Surface: Large
306
- CVEs: 100+
307
- ```
308
-
309
- **Distroless Image:**
310
- ```
311
- Application
312
- Node.js Runtime
313
- Base OS (minimal)
314
- ────────────────────
315
- Size: 70MB
316
- Attack Surface: Minimal
317
- CVEs: 5-10
318
- ```
319
-
320
- ### Using Distroless
321
-
322
- **Node.js Example:**
323
- ```dockerfile
324
- FROM node:20-alpine AS builder
325
- WORKDIR /app
326
- COPY package*.json ./
327
- RUN npm ci --only=production
328
- COPY . .
329
- RUN npm run build
330
-
331
- FROM gcr.io/distroless/nodejs20-debian11
332
- WORKDIR /app
333
- COPY --from=builder /app/dist ./dist
334
- COPY --from=builder /app/node_modules ./node_modules
335
- EXPOSE 3000
336
- USER nonroot:nonroot
337
- CMD ["dist/index.js"]
338
- ```
339
-
340
- **Python Example:**
341
- ```dockerfile
342
- FROM python:3.11-slim AS builder
343
- WORKDIR /app
344
- COPY requirements.txt .
345
- RUN pip install --user --no-cache-dir -r requirements.txt
346
- COPY . .
347
-
348
- FROM gcr.io/distroless/python3-debian11
349
- WORKDIR /app
350
- COPY --from=builder /root/.local /root/.local
351
- COPY --from=builder /app .
352
- ENV PATH=/root/.local/bin:$PATH
353
- USER nonroot:nonroot
354
- CMD ["app.py"]
355
- ```
356
-
357
- **Java Example:**
358
- ```dockerfile
359
- FROM maven:3.9-eclipse-temurin-17 AS builder
360
- WORKDIR /app
361
- COPY pom.xml .
362
- RUN mvn dependency:go-offline
363
- COPY src ./src
364
- RUN mvn package -DskipTests
365
-
366
- FROM gcr.io/distroless/java17-debian11
367
- WORKDIR /app
368
- COPY --from=builder /app/target/app.jar .
369
- USER nonroot:nonroot
370
- CMD ["app.jar"]
371
- ```
372
-
373
- ### Debugging Distroless Images
374
-
375
- **Problem:** No shell for debugging
376
-
377
- **Solution 1: Debug Variant**
378
- ```dockerfile
379
- # Use debug variant for troubleshooting
380
- FROM gcr.io/distroless/nodejs20-debian11:debug
381
- # Includes busybox shell
382
- ```
383
-
384
- ```bash
385
- # Debug with docker exec
386
- docker run -it --entrypoint=/busybox/sh myapp:debug
387
- ```
388
-
389
- **Solution 2: Ephemeral Debug Container**
390
- ```bash
391
- # Kubernetes ephemeral container
392
- kubectl debug pod/myapp -it --image=busybox --target=myapp
393
- ```
394
-
395
- ## Runtime Security
396
-
397
- ### Falco Implementation
398
-
399
- **Installation (Kubernetes):**
400
- ```yaml
401
- # falco-helm-values.yaml
402
- falco:
403
- rules_file:
404
- - /etc/falco/falco_rules.yaml
405
- - /etc/falco/falco_rules.local.yaml
406
- - /etc/falco/k8s_audit_rules.yaml
407
-
408
- json_output: true
409
- json_include_output_property: true
410
-
411
- priority: warning
412
-
413
- falcosidekick:
414
- enabled: true
415
- webui:
416
- enabled: true
417
- ```
418
-
419
- ```bash
420
- # Install via Helm
421
- helm repo add falcosecurity https://falcosecurity.github.io/charts
422
- helm repo update
423
-
424
- helm install falco falcosecurity/falco \
425
- --namespace falco --create-namespace \
426
- -f falco-helm-values.yaml
427
- ```
428
-
429
- **Custom Falco Rules:**
430
- ```yaml
431
- # custom-rules.yaml
432
- - rule: Unauthorized Process in Container
433
- desc: Detect unauthorized processes running in containers
434
- condition: >
435
- spawned_process and
436
- container and
437
- not proc.name in (node, npm, python, java)
438
- output: >
439
- Unauthorized process started in container
440
- (user=%user.name process=%proc.name
441
- container=%container.name image=%container.image)
442
- priority: WARNING
443
-
444
- - rule: Container Drift Detected
445
- desc: Detect file modifications in container
446
- condition: >
447
- evt.type = open and
448
- evt.dir = < and
449
- container and
450
- fd.name startswith /app/ and
451
- not proc.name in (node, npm)
452
- output: >
453
- File modified in running container
454
- (file=%fd.name process=%proc.name
455
- container=%container.name)
456
- priority: ERROR
457
-
458
- - rule: Sensitive File Access
459
- desc: Detect access to sensitive files
460
- condition: >
461
- open_read and
462
- sensitive_files and
463
- not trusted_process
464
- output: >
465
- Sensitive file accessed
466
- (file=%fd.name process=%proc.name user=%user.name)
467
- priority: CRITICAL
468
- ```
469
-
470
- ### AppArmor Profiles
471
-
472
- **Kubernetes with AppArmor:**
473
- ```yaml
474
- apiVersion: v1
475
- kind: Pod
476
- metadata:
477
- name: secured-app
478
- annotations:
479
- container.apparmor.security.beta.kubernetes.io/app: localhost/k8s-apparmor-example
480
- spec:
481
- containers:
482
- - name: app
483
- image: nginx:alpine
484
- securityContext:
485
- allowPrivilegeEscalation: false
486
- ```
487
-
488
- **AppArmor Profile:**
489
- ```
490
- #include <tunables/global>
491
-
492
- profile k8s-apparmor-example flags=(attach_disconnected,mediate_deleted) {
493
- #include <abstractions/base>
494
-
495
- # Allow network
496
- network inet tcp,
497
- network inet udp,
498
-
499
- # Deny all file writes except in specific directories
500
- deny /** w,
501
- /app/** rw,
502
- /tmp/** rw,
503
-
504
- # Deny process execution except allowed binaries
505
- deny /bin/** x,
506
- deny /usr/bin/** x,
507
- /usr/bin/node ix,
508
-
509
- # Deny capability
510
- deny capability sys_admin,
511
- deny capability net_admin,
512
- }
513
- ```
514
-
515
- ### Seccomp Profiles
516
-
517
- ```json
518
- {
519
- "defaultAction": "SCMP_ACT_ERRNO",
520
- "architectures": [
521
- "SCMP_ARCH_X86_64",
522
- "SCMP_ARCH_X86",
523
- "SCMP_ARCH_ARM64"
524
- ],
525
- "syscalls": [
526
- {
527
- "names": [
528
- "accept4", "bind", "listen", "connect", "socket",
529
- "read", "write", "open", "close", "stat",
530
- "fstat", "lstat", "poll", "epoll_wait",
531
- "rt_sigaction", "rt_sigprocmask", "clone",
532
- "execve", "wait4", "exit", "exit_group"
533
- ],
534
- "action": "SCMP_ACT_ALLOW"
535
- }
536
- ]
537
- }
538
- ```
539
-
540
- **Using in Kubernetes:**
541
- ```yaml
542
- apiVersion: v1
543
- kind: Pod
544
- metadata:
545
- name: secured-pod
546
- spec:
547
- securityContext:
548
- seccompProfile:
549
- type: Localhost
550
- localhostProfile: profiles/restricted.json
551
- containers:
552
- - name: app
553
- image: myapp:latest
554
- ```
555
-
556
- ## Pod Security Standards
557
-
558
- ### Pod Security Levels
559
-
560
- **Privileged (Unrestricted):**
561
- ```yaml
562
- # No restrictions - avoid in production
563
- ```
564
-
565
- **Baseline (Minimally Restrictive):**
566
- ```yaml
567
- apiVersion: v1
568
- kind: Pod
569
- metadata:
570
- name: baseline-pod
571
- spec:
572
- containers:
573
- - name: app
574
- image: nginx:alpine
575
- securityContext:
576
- allowPrivilegeEscalation: false
577
- capabilities:
578
- drop: ["ALL"]
579
- runAsNonRoot: true
580
- ```
581
-
582
- **Restricted (Highly Restrictive - Recommended):**
583
- ```yaml
584
- apiVersion: v1
585
- kind: Pod
586
- metadata:
587
- name: restricted-pod
588
- spec:
589
- securityContext:
590
- runAsNonRoot: true
591
- runAsUser: 1000
592
- fsGroup: 1000
593
- seccompProfile:
594
- type: RuntimeDefault
595
-
596
- containers:
597
- - name: app
598
- image: nginx:alpine
599
- securityContext:
600
- allowPrivilegeEscalation: false
601
- runAsNonRoot: true
602
- runAsUser: 1000
603
- capabilities:
604
- drop: ["ALL"]
605
- readOnlyRootFilesystem: true
606
-
607
- volumeMounts:
608
- - name: tmp
609
- mountPath: /tmp
610
- - name: cache
611
- mountPath: /var/cache/nginx
612
-
613
- volumes:
614
- - name: tmp
615
- emptyDir: {}
616
- - name: cache
617
- emptyDir: {}
618
- ```
619
-
620
- ### Namespace-Level Enforcement
621
-
622
- ```yaml
623
- # Enforce restricted standard for namespace
624
- apiVersion: v1
625
- kind: Namespace
626
- metadata:
627
- name: production
628
- labels:
629
- pod-security.kubernetes.io/enforce: restricted
630
- pod-security.kubernetes.io/audit: restricted
631
- pod-security.kubernetes.io/warn: restricted
632
- ```
633
-
634
- ## Image Signing and Verification
635
-
636
- ### Cosign (Sigstore)
637
-
638
- **Install Cosign:**
639
- ```bash
640
- # Linux
641
- wget https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64
642
- chmod +x cosign-linux-amd64
643
- mv cosign-linux-amd64 /usr/local/bin/cosign
644
-
645
- # macOS
646
- brew install cosign
647
- ```
648
-
649
- **Generate Keys:**
650
- ```bash
651
- # Generate key pair
652
- cosign generate-key-pair
653
-
654
- # Outputs:
655
- # - cosign.key (private key - keep secure!)
656
- # - cosign.pub (public key - distribute)
657
- ```
658
-
659
- **Sign Image:**
660
- ```bash
661
- # Sign image
662
- cosign sign --key cosign.key myregistry.com/myapp:v1.0.0
663
-
664
- # Keyless signing (OIDC)
665
- cosign sign myregistry.com/myapp:v1.0.0
666
-
667
- # Sign with annotations
668
- cosign sign --key cosign.key \
669
- -a git_commit=$(git rev-parse HEAD) \
670
- -a build_date=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
671
- myregistry.com/myapp:v1.0.0
672
- ```
673
-
674
- **Verify Image:**
675
- ```bash
676
- # Verify signature
677
- cosign verify --key cosign.pub myregistry.com/myapp:v1.0.0
678
-
679
- # Keyless verification
680
- cosign verify \
681
- --certificate-identity=user@example.com \
682
- --certificate-oidc-issuer=https://github.com/login/oauth \
683
- myregistry.com/myapp:v1.0.0
684
- ```
685
-
686
- **CI Integration:**
687
- ```yaml
688
- # .github/workflows/sign-image.yml
689
- name: Build and Sign Container
690
-
691
- on:
692
- push:
693
- tags: [ 'v*' ]
694
-
695
- jobs:
696
- build-sign:
697
- runs-on: ubuntu-latest
698
- permissions:
699
- contents: read
700
- packages: write
701
- id-token: write # For keyless signing
702
-
703
- steps:
704
- - uses: actions/checkout@v3
705
-
706
- - name: Login to registry
707
- uses: docker/login-action@v2
708
- with:
709
- registry: ghcr.io
710
- username: ${{ github.actor }}
711
- password: ${{ secrets.GITHUB_TOKEN }}
712
-
713
- - name: Build and push
714
- uses: docker/build-push-action@v4
715
- with:
716
- push: true
717
- tags: ghcr.io/${{ github.repository }}:${{ github.ref_name }}
718
-
719
- - name: Install Cosign
720
- uses: sigstore/cosign-installer@v3
721
-
722
- - name: Sign image
723
- run: |
724
- cosign sign --yes \
725
- ghcr.io/${{ github.repository }}:${{ github.ref_name }}
726
- ```
727
-
728
- ### Admission Controller Verification
729
-
730
- **Kyverno Policy:**
731
- ```yaml
732
- apiVersion: kyverno.io/v1
733
- kind: ClusterPolicy
734
- metadata:
735
- name: verify-image-signature
736
- spec:
737
- validationFailureAction: enforce
738
- background: false
739
- rules:
740
- - name: verify-signature
741
- match:
742
- any:
743
- - resources:
744
- kinds:
745
- - Pod
746
- verifyImages:
747
- - imageReferences:
748
- - "myregistry.com/*"
749
- attestors:
750
- - entries:
751
- - keys:
752
- publicKeys: |-
753
- -----BEGIN PUBLIC KEY-----
754
- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
755
- -----END PUBLIC KEY-----
756
- ```
757
-
758
- ## Container Hardening
759
-
760
- ### Minimal Dockerfile
761
-
762
- ```dockerfile
763
- # ✅ Secure Dockerfile
764
- FROM node:20-alpine AS builder
765
- WORKDIR /app
766
-
767
- # Install dependencies as non-root
768
- RUN addgroup -g 1001 -S nodejs && \
769
- adduser -S nodejs -u 1001
770
-
771
- # Copy dependency files
772
- COPY --chown=nodejs:nodejs package*.json ./
773
-
774
- # Install dependencies
775
- RUN npm ci --only=production && \
776
- npm cache clean --force
777
-
778
- # Copy application
779
- COPY --chown=nodejs:nodejs . .
780
-
781
- # Build application
782
- RUN npm run build
783
-
784
- # Production image
785
- FROM gcr.io/distroless/nodejs20-debian11
786
- WORKDIR /app
787
-
788
- # Copy from builder
789
- COPY --from=builder --chown=nonroot:nonroot /app/dist ./dist
790
- COPY --from=builder --chown=nonroot:nonroot /app/node_modules ./node_modules
791
- COPY --from=builder --chown=nonroot:nonroot /app/package.json ./
792
-
793
- # Use non-root user
794
- USER nonroot:nonroot
795
-
796
- # Health check
797
- HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
798
- CMD ["/nodejs/bin/node", "-e", "fetch('http://localhost:3000/health')"]
799
-
800
- # Expose port
801
- EXPOSE 3000
802
-
803
- # Start application
804
- CMD ["dist/index.js"]
805
- ```
806
-
807
- ### Security Best Practices
808
-
809
- ```dockerfile
810
- # ❌ Bad practices
811
- FROM ubuntu:latest # Don't use 'latest'
812
- RUN apt-get update # Don't run as root
813
- ADD http://example.com/file.tar.gz / # Unsafe ADD
814
- COPY secrets.env . # Never copy secrets
815
- RUN chmod 777 /app # Overly permissive
816
-
817
- # ✅ Good practices
818
- FROM ubuntu:22.04 # Use specific versions
819
- RUN apt-get update && apt-get install -y package \
820
- && rm -rf /var/lib/apt/lists/* # Clean up
821
- COPY --chown=user:user file.tar.gz / # Use COPY, set ownership
822
- # Use secret management, not files
823
- RUN chmod 755 /app # Minimal permissions
824
- USER nonroot # Run as non-root
825
- ```
826
-
827
- ## Best Practices
828
-
829
- ### 1. Use Minimal Base Images
830
-
831
- ```dockerfile
832
- # Size and security comparison
833
- alpine: 5 MB, ~5 CVEs
834
- distroless: 20 MB, ~3 CVEs
835
- slim: 50 MB, ~15 CVEs
836
- standard: 200 MB, ~50 CVEs
837
- ```
838
-
839
- ### 2. Multi-Stage Builds
840
-
841
- Keep build tools out of production images.
842
-
843
- ### 3. Scan Images Regularly
844
-
845
- ```bash
846
- # Scan on build
847
- # Scan on schedule (weekly)
848
- # Scan on new vulnerabilities
849
- ```
850
-
851
- ### 4. Sign Images
852
-
853
- Verify image authenticity and integrity.
854
-
855
- ### 5. Run as Non-Root
856
-
857
- ```dockerfile
858
- USER nonroot:nonroot
859
- ```
860
-
861
- ### 6. Drop Capabilities
862
-
863
- ```yaml
864
- securityContext:
865
- capabilities:
866
- drop: ["ALL"]
867
- ```
868
-
869
- ### 7. Read-Only Root Filesystem
870
-
871
- ```yaml
872
- securityContext:
873
- readOnlyRootFilesystem: true
874
- ```
875
-
876
- ### 8. Network Policies
877
-
878
- Restrict container network access.
879
-
880
- ### 9. Resource Limits
881
-
882
- Prevent resource exhaustion.
883
-
884
- ### 10. Runtime Monitoring
885
-
886
- Use Falco or similar tools.
887
-
888
- ## Anti-Patterns
889
-
890
- ❌ **Using `latest` tag** - Unpredictable, not reproducible
891
-
892
- ❌ **Running as root** - Unnecessary privilege
893
-
894
- ❌ **Including secrets in image** - Exposed in layers
895
-
896
- ❌ **Not scanning images** - Unknown vulnerabilities
897
-
898
- ❌ **Privileged containers** - Full host access
899
-
900
- ❌ **No resource limits** - Resource exhaustion risk
901
-
902
- ❌ **Mutable containers** - Configuration drift
903
-
904
- ❌ **Ignoring CVEs** - "Won't fix" attitude
905
-
906
- ❌ **No signature verification** - Supply chain risk
907
-
908
- ❌ **Large images** - More vulnerabilities, slow deployments
909
-
910
- ---
911
-
912
- **Related Resources:**
913
- - [security-scanning.md](security-scanning.md) - Vulnerability scanning tools
914
- - [supply-chain-security.md](supply-chain-security.md) - SBOM, provenance
915
- - [policy-enforcement.md](policy-enforcement.md) - OPA, Kyverno policies