blockmine 1.24.0 → 1.25.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/CHANGELOG.md +32 -0
- package/README.en.md +427 -0
- package/README.md +40 -0
- package/backend/cli.js +1 -1
- package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
- package/backend/src/api/routes/bots.js +13 -0
- package/backend/src/api/routes/servers.js +14 -2
- package/backend/src/core/BotProcess.js +98 -2
- package/backend/src/core/PluginLoader.js +83 -3
- package/backend/src/core/PluginManager.js +75 -5
- package/backend/src/core/services/BotLifecycleService.js +186 -2
- package/backend/src/server.js +11 -1
- package/frontend/dist/assets/browser-ponyfill-DN7pwmHT.js +2 -0
- package/frontend/dist/assets/index-LSy71uwm.js +11261 -0
- package/frontend/dist/assets/index-SfhKxI4-.css +32 -0
- package/frontend/dist/flags/en.svg +32 -0
- package/frontend/dist/flags/ru.svg +5 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/locales/en/admin.json +100 -0
- package/frontend/dist/locales/en/api-keys.json +58 -0
- package/frontend/dist/locales/en/bots.json +110 -0
- package/frontend/dist/locales/en/common.json +47 -0
- package/frontend/dist/locales/en/configuration.json +22 -0
- package/frontend/dist/locales/en/console.json +10 -0
- package/frontend/dist/locales/en/dashboard.json +85 -0
- package/frontend/dist/locales/en/dialogs.json +70 -0
- package/frontend/dist/locales/en/event-graphs.json +50 -0
- package/frontend/dist/locales/en/graph-store.json +70 -0
- package/frontend/dist/locales/en/login.json +34 -0
- package/frontend/dist/locales/en/management.json +114 -0
- package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/en/nodes.json +1077 -0
- package/frontend/dist/locales/en/permissions.json +50 -0
- package/frontend/dist/locales/en/plugin-detail.json +49 -0
- package/frontend/dist/locales/en/plugins.json +110 -0
- package/frontend/dist/locales/en/proxies.json +81 -0
- package/frontend/dist/locales/en/servers.json +39 -0
- package/frontend/dist/locales/en/setup.json +17 -0
- package/frontend/dist/locales/en/sidebar.json +27 -0
- package/frontend/dist/locales/en/tasks.json +62 -0
- package/frontend/dist/locales/en/visual-editor.json +219 -0
- package/frontend/dist/locales/en/websocket.json +86 -0
- package/frontend/dist/locales/ru/admin.json +100 -0
- package/frontend/dist/locales/ru/api-keys.json +58 -0
- package/frontend/dist/locales/ru/bots.json +110 -0
- package/frontend/dist/locales/ru/common.json +49 -0
- package/frontend/dist/locales/ru/configuration.json +22 -0
- package/frontend/dist/locales/ru/console.json +10 -0
- package/frontend/dist/locales/ru/dashboard.json +85 -0
- package/frontend/dist/locales/ru/dialogs.json +70 -0
- package/frontend/dist/locales/ru/event-graphs.json +50 -0
- package/frontend/dist/locales/ru/graph-store.json +70 -0
- package/frontend/dist/locales/ru/login.json +34 -0
- package/frontend/dist/locales/ru/management.json +114 -0
- package/frontend/dist/locales/ru/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/ru/nodes.json +1077 -0
- package/frontend/dist/locales/ru/permissions.json +50 -0
- package/frontend/dist/locales/ru/plugin-detail.json +49 -0
- package/frontend/dist/locales/ru/plugins.json +110 -0
- package/frontend/dist/locales/ru/proxies.json +81 -0
- package/frontend/dist/locales/ru/servers.json +39 -0
- package/frontend/dist/locales/ru/setup.json +17 -0
- package/frontend/dist/locales/ru/sidebar.json +27 -0
- package/frontend/dist/locales/ru/tasks.json +62 -0
- package/frontend/dist/locales/ru/visual-editor.json +221 -0
- package/frontend/dist/locales/ru/websocket.json +86 -0
- package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
- package/frontend/package.json +4 -0
- package/package.json +1 -1
- package/screen/3dviewer.png +0 -0
- 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/language_selector.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/.claude/agents/README.md +0 -469
- package/.claude/agents/auth-route-debugger.md +0 -118
- package/.claude/agents/auth-route-tester.md +0 -93
- package/.claude/agents/auto-error-resolver.md +0 -97
- package/.claude/agents/build-optimizer.md +0 -236
- package/.claude/agents/code-architect.md +0 -34
- package/.claude/agents/code-architecture-reviewer.md +0 -83
- package/.claude/agents/code-explorer.md +0 -51
- package/.claude/agents/code-refactor-master.md +0 -94
- package/.claude/agents/code-reviewer.md +0 -46
- package/.claude/agents/cost-optimizer.md +0 -134
- package/.claude/agents/deployment-orchestrator.md +0 -113
- package/.claude/agents/documentation-architect.md +0 -82
- package/.claude/agents/frontend-error-fixer.md +0 -77
- package/.claude/agents/iac-code-generator.md +0 -71
- package/.claude/agents/incident-responder.md +0 -346
- package/.claude/agents/infrastructure-architect.md +0 -31
- package/.claude/agents/kubernetes-specialist.md +0 -56
- package/.claude/agents/migration-planner.md +0 -181
- package/.claude/agents/network-architect.md +0 -196
- package/.claude/agents/plan-reviewer.md +0 -52
- package/.claude/agents/refactor-planner.md +0 -63
- package/.claude/agents/security-scanner.md +0 -102
- package/.claude/agents/web-research-specialist.md +0 -78
- package/.claude/commands/cost-analysis.md +0 -315
- package/.claude/commands/dev-docs-update.md +0 -55
- package/.claude/commands/dev-docs.md +0 -51
- package/.claude/commands/feature-dev.md +0 -125
- package/.claude/commands/incident-debug.md +0 -247
- package/.claude/commands/infra-plan.md +0 -81
- package/.claude/commands/migration-plan.md +0 -478
- package/.claude/commands/route-research-for-testing.md +0 -37
- package/.claude/commands/security-review.md +0 -66
- package/.claude/hooks/CONFIG.md +0 -448
- package/.claude/hooks/README.md +0 -163
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
- package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
- package/.claude/hooks/add-skill-activation-banners.ts +0 -132
- package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
- package/.claude/hooks/error-handling-reminder.sh +0 -12
- package/.claude/hooks/error-handling-reminder.ts +0 -222
- package/.claude/hooks/k8s-manifest-validator.sh +0 -56
- package/.claude/hooks/package-lock.json +0 -556
- package/.claude/hooks/package.json +0 -16
- package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
- package/.claude/hooks/post-tool-use-tracker.sh +0 -183
- package/.claude/hooks/security-policy-check.sh +0 -247
- package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
- package/.claude/hooks/skill-activation-prompt.sh +0 -10
- package/.claude/hooks/skill-activation-prompt.ts +0 -141
- package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
- package/.claude/hooks/terraform-validator.sh +0 -53
- package/.claude/hooks/test-input.json +0 -7
- package/.claude/hooks/test-skill-activation.ts +0 -427
- package/.claude/hooks/trigger-build-resolver.sh +0 -79
- package/.claude/hooks/tsc-check.sh +0 -173
- package/.claude/hooks/tsconfig.json +0 -19
- package/.claude/settings.json +0 -59
- package/.claude/settings.local.json +0 -67
- package/.claude/skills/README.md +0 -507
- package/.claude/skills/api-engineering/SKILL.md +0 -63
- package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
- package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
- package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
- package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
- package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
- package/.claude/skills/build-engineering/SKILL.md +0 -431
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
- package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
- package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
- package/.claude/skills/build-engineering/resources/build-security.md +0 -95
- package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
- package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
- package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
- package/.claude/skills/cloud-engineering/SKILL.md +0 -675
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
- package/.claude/skills/cybersecurity/SKILL.md +0 -409
- package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
- package/.claude/skills/database-engineering/SKILL.md +0 -61
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
- package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
- package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
- package/.claude/skills/devsecops/SKILL.md +0 -374
- package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
- package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
- package/.claude/skills/devsecops/resources/container-security.md +0 -915
- package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
- package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
- package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
- package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
- package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
- package/.claude/skills/devsecops/resources/security-testing.md +0 -203
- package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
- package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
- package/.claude/skills/documentation-as-code/SKILL.md +0 -323
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
- package/.claude/skills/engineering-management/SKILL.md +0 -356
- package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
- package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
- package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
- package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
- package/.claude/skills/error-tracking/SKILL.md +0 -379
- package/.claude/skills/frontend-design/SKILL.md +0 -42
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
- package/.claude/skills/general-it-engineering/SKILL.md +0 -393
- package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
- package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
- package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
- package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
- package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
- package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
- package/.claude/skills/network-engineering/SKILL.md +0 -385
- package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
- package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
- package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
- package/.claude/skills/network-engineering/resources/network-security.md +0 -921
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
- package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
- package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
- package/.claude/skills/node-development/SKILL.md +0 -317
- package/.claude/skills/observability-engineering/SKILL.md +0 -101
- package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
- package/.claude/skills/platform-engineering/SKILL.md +0 -555
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
- package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
- package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
- package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
- package/.claude/skills/release-engineering/SKILL.md +0 -393
- package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
- package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
- package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
- package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
- package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
- package/.claude/skills/route-tester/SKILL.md +0 -392
- package/.claude/skills/skill-developer/ADVANCED.md +0 -197
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
- package/.claude/skills/skill-developer/SKILL.md +0 -430
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
- package/.claude/skills/skill-rules.json +0 -2989
- package/.claude/skills/sre/SKILL.md +0 -464
- package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
- package/.claude/skills/sre/resources/capacity-planning.md +0 -226
- package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
- package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
- package/.claude/skills/sre/resources/incident-management.md +0 -436
- package/.claude/skills/sre/resources/observability-stack.md +0 -240
- package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
- package/.claude/skills/sre/resources/performance-optimization.md +0 -108
- package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
- package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
- package/.claude/skills/sre/resources/toil-reduction.md +0 -145
- package/.claude/skills/systems-engineering/SKILL.md +0 -648
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
- package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
- package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
- package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
- package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
- package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
- package/.claude/skills/technical-leadership/SKILL.md +0 -728
- package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
- package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
- package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
# Security Testing
|
|
2
|
-
|
|
3
|
-
Penetration testing, security chaos engineering, threat modeling, fuzz testing, and security test automation.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Penetration Testing](#penetration-testing)
|
|
8
|
-
- [Security Chaos Engineering](#security-chaos-engineering)
|
|
9
|
-
- [Threat Modeling](#threat-modeling)
|
|
10
|
-
- [Fuzz Testing](#fuzz-testing)
|
|
11
|
-
- [Security Test Automation](#security-test-automation)
|
|
12
|
-
|
|
13
|
-
## Penetration Testing
|
|
14
|
-
|
|
15
|
-
### Types
|
|
16
|
-
|
|
17
|
-
**Black Box:** No internal knowledge
|
|
18
|
-
**White Box:** Full system knowledge
|
|
19
|
-
**Gray Box:** Partial knowledge
|
|
20
|
-
|
|
21
|
-
### Tools
|
|
22
|
-
|
|
23
|
-
**OWASP ZAP:**
|
|
24
|
-
```bash
|
|
25
|
-
# Automated scan
|
|
26
|
-
docker run -t owasp/zap2docker-stable zap-baseline.py \
|
|
27
|
-
-t https://example.com \
|
|
28
|
-
-r report.html
|
|
29
|
-
|
|
30
|
-
# Full scan
|
|
31
|
-
docker run -t owasp/zap2docker-stable zap-full-scan.py \
|
|
32
|
-
-t https://example.com
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Burp Suite:**
|
|
36
|
-
```bash
|
|
37
|
-
# Professional automated scanning
|
|
38
|
-
burp-scanner --url=https://example.com \
|
|
39
|
-
--report=burp-report.html
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
**Metasploit:**
|
|
43
|
-
```bash
|
|
44
|
-
msfconsole
|
|
45
|
-
use exploit/multi/handler
|
|
46
|
-
set PAYLOAD windows/meterpreter/reverse_tcp
|
|
47
|
-
set LHOST 192.168.1.100
|
|
48
|
-
set LPORT 4444
|
|
49
|
-
exploit
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Security Chaos Engineering
|
|
53
|
-
|
|
54
|
-
### Principles
|
|
55
|
-
|
|
56
|
-
1. **Assume breach:** System already compromised
|
|
57
|
-
2. **Test defenses:** Verify detection and response
|
|
58
|
-
3. **Controlled experiments:** Measured impact
|
|
59
|
-
4. **Continuous testing:** Regular security drills
|
|
60
|
-
|
|
61
|
-
### Implementation
|
|
62
|
-
|
|
63
|
-
**Attack Simulation:**
|
|
64
|
-
```yaml
|
|
65
|
-
# chaos-mesh experiment
|
|
66
|
-
apiVersion: chaos-mesh.org/v1alpha1
|
|
67
|
-
kind: NetworkChaos
|
|
68
|
-
metadata:
|
|
69
|
-
name: simulate-attack
|
|
70
|
-
spec:
|
|
71
|
-
action: partition
|
|
72
|
-
mode: all
|
|
73
|
-
selector:
|
|
74
|
-
namespaces:
|
|
75
|
-
- production
|
|
76
|
-
labelSelectors:
|
|
77
|
-
app: database
|
|
78
|
-
duration: "5m"
|
|
79
|
-
direction: to
|
|
80
|
-
target:
|
|
81
|
-
mode: all
|
|
82
|
-
selector:
|
|
83
|
-
namespaces:
|
|
84
|
-
- production
|
|
85
|
-
labelSelectors:
|
|
86
|
-
app: api
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Threat Modeling
|
|
90
|
-
|
|
91
|
-
### STRIDE Framework
|
|
92
|
-
|
|
93
|
-
- **S**poofing
|
|
94
|
-
- **T**ampering
|
|
95
|
-
- **R**epudiation
|
|
96
|
-
- **I**nformation Disclosure
|
|
97
|
-
- **D**enial of Service
|
|
98
|
-
- **E**levation of Privilege
|
|
99
|
-
|
|
100
|
-
### Example
|
|
101
|
-
|
|
102
|
-
```yaml
|
|
103
|
-
# threat-model.yaml
|
|
104
|
-
application: payment-api
|
|
105
|
-
assets:
|
|
106
|
-
- credit_card_data
|
|
107
|
-
- user_credentials
|
|
108
|
-
- transaction_history
|
|
109
|
-
|
|
110
|
-
threats:
|
|
111
|
-
- id: T001
|
|
112
|
-
category: Information Disclosure
|
|
113
|
-
description: Unauthorized access to credit card data
|
|
114
|
-
likelihood: medium
|
|
115
|
-
impact: critical
|
|
116
|
-
mitigations:
|
|
117
|
-
- Encryption at rest (AES-256)
|
|
118
|
-
- TLS 1.3 in transit
|
|
119
|
-
- Access logging
|
|
120
|
-
- Data masking in logs
|
|
121
|
-
|
|
122
|
-
- id: T002
|
|
123
|
-
category: Elevation of Privilege
|
|
124
|
-
description: Container escape to host
|
|
125
|
-
likelihood: low
|
|
126
|
-
impact: critical
|
|
127
|
-
mitigations:
|
|
128
|
-
- Non-root containers
|
|
129
|
-
- seccomp profiles
|
|
130
|
-
- AppArmor/SELinux
|
|
131
|
-
- Pod Security Standards
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Fuzz Testing
|
|
135
|
-
|
|
136
|
-
### AFL (American Fuzzy Lop)
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
# Install AFL
|
|
140
|
-
sudo apt-get install afl
|
|
141
|
-
|
|
142
|
-
# Compile program with AFL
|
|
143
|
-
afl-gcc -o program program.c
|
|
144
|
-
|
|
145
|
-
# Run fuzzer
|
|
146
|
-
afl-fuzz -i input_dir -o output_dir ./program @@
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### libFuzzer
|
|
150
|
-
|
|
151
|
-
```cpp
|
|
152
|
-
// fuzz_target.cc
|
|
153
|
-
#include <cstdint>
|
|
154
|
-
#include <cstddef>
|
|
155
|
-
|
|
156
|
-
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
|
|
157
|
-
// Your code to test
|
|
158
|
-
ParseInput(Data, Size);
|
|
159
|
-
return 0;
|
|
160
|
-
}
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
# Compile and run
|
|
165
|
-
clang++ -g -fsanitize=fuzzer fuzz_target.cc -o fuzzer
|
|
166
|
-
./fuzzer corpus/
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Security Test Automation
|
|
170
|
-
|
|
171
|
-
```yaml
|
|
172
|
-
# .github/workflows/security-tests.yml
|
|
173
|
-
name: Security Tests
|
|
174
|
-
|
|
175
|
-
on:
|
|
176
|
-
schedule:
|
|
177
|
-
- cron: '0 2 * * 0' # Weekly
|
|
178
|
-
workflow_dispatch:
|
|
179
|
-
|
|
180
|
-
jobs:
|
|
181
|
-
pentest:
|
|
182
|
-
runs-on: ubuntu-latest
|
|
183
|
-
steps:
|
|
184
|
-
- name: OWASP ZAP Scan
|
|
185
|
-
uses: zaproxy/action-baseline@v0.7.0
|
|
186
|
-
with:
|
|
187
|
-
target: ${{ secrets.STAGING_URL }}
|
|
188
|
-
|
|
189
|
-
chaos:
|
|
190
|
-
runs-on: ubuntu-latest
|
|
191
|
-
steps:
|
|
192
|
-
- name: Security Chaos Test
|
|
193
|
-
run: |
|
|
194
|
-
kubectl apply -f chaos/attack-simulation.yaml
|
|
195
|
-
sleep 300
|
|
196
|
-
kubectl logs -l app=monitoring | grep "ALERT"
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
**Related Resources:**
|
|
202
|
-
- [security-scanning.md](security-scanning.md)
|
|
203
|
-
- [security-monitoring.md](security-monitoring.md)
|
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
# Supply Chain Security
|
|
2
|
-
|
|
3
|
-
SBOM generation, dependency scanning, image signing with Cosign/Sigstore, artifact attestation, and software supply chain protection.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Overview](#overview)
|
|
8
|
-
- [SBOM Generation](#sbom-generation)
|
|
9
|
-
- [Dependency Scanning](#dependency-scanning)
|
|
10
|
-
- [Image Signing](#image-signing)
|
|
11
|
-
- [Artifact Attestation](#artifact-attestation)
|
|
12
|
-
- [Supply Chain Levels for Software Artifacts (SLSA)](#slsa)
|
|
13
|
-
- [Best Practices](#best-practices)
|
|
14
|
-
|
|
15
|
-
## Overview
|
|
16
|
-
|
|
17
|
-
**Supply Chain Attack Vectors:**
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
┌──────────────────────────────────────────────┐
|
|
21
|
-
│ Supply Chain Threats │
|
|
22
|
-
├──────────────────────────────────────────────┤
|
|
23
|
-
│ • Compromised dependencies │
|
|
24
|
-
│ • Malicious packages │
|
|
25
|
-
│ • Build environment tampering │
|
|
26
|
-
│ • Registry/repository attacks │
|
|
27
|
-
│ • Unsigned/unverified artifacts │
|
|
28
|
-
│ • Lack of provenance │
|
|
29
|
-
└──────────────────────────────────────────────┘
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## SBOM Generation
|
|
33
|
-
|
|
34
|
-
### What is an SBOM?
|
|
35
|
-
|
|
36
|
-
Software Bill of Materials: Complete inventory of components in software.
|
|
37
|
-
|
|
38
|
-
### Formats
|
|
39
|
-
|
|
40
|
-
- **SPDX:** ISO/IEC standard
|
|
41
|
-
- **CycloneDX:** OWASP project
|
|
42
|
-
- **SWID:** ISO/IEC 19770-2
|
|
43
|
-
|
|
44
|
-
### Syft (SBOM Generator)
|
|
45
|
-
|
|
46
|
-
**Installation:**
|
|
47
|
-
```bash
|
|
48
|
-
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**Generate SBOM:**
|
|
52
|
-
```bash
|
|
53
|
-
# From container image
|
|
54
|
-
syft nginx:latest -o spdx-json > nginx-sbom.json
|
|
55
|
-
syft nginx:latest -o cyclonedx-json > nginx-sbom-cdx.json
|
|
56
|
-
|
|
57
|
-
# From directory
|
|
58
|
-
syft dir:. -o spdx-json > app-sbom.json
|
|
59
|
-
|
|
60
|
-
# From archive
|
|
61
|
-
syft file:app.tar.gz -o spdx-json
|
|
62
|
-
|
|
63
|
-
# Multiple formats
|
|
64
|
-
syft nginx:latest -o json,cyclonedx-json,spdx-json
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**CI Integration:**
|
|
68
|
-
```yaml
|
|
69
|
-
# .github/workflows/sbom.yml
|
|
70
|
-
name: Generate SBOM
|
|
71
|
-
|
|
72
|
-
on:
|
|
73
|
-
push:
|
|
74
|
-
tags: ['v*']
|
|
75
|
-
|
|
76
|
-
jobs:
|
|
77
|
-
sbom:
|
|
78
|
-
runs-on: ubuntu-latest
|
|
79
|
-
steps:
|
|
80
|
-
- uses: actions/checkout@v3
|
|
81
|
-
|
|
82
|
-
- name: Build container
|
|
83
|
-
run: docker build -t myapp:${{ github.ref_name }} .
|
|
84
|
-
|
|
85
|
-
- name: Generate SBOM
|
|
86
|
-
uses: anchore/sbom-action@v0
|
|
87
|
-
with:
|
|
88
|
-
image: myapp:${{ github.ref_name }}
|
|
89
|
-
format: spdx-json
|
|
90
|
-
output-file: sbom.spdx.json
|
|
91
|
-
|
|
92
|
-
- name: Upload SBOM
|
|
93
|
-
uses: actions/upload-artifact@v3
|
|
94
|
-
with:
|
|
95
|
-
name: sbom
|
|
96
|
-
path: sbom.spdx.json
|
|
97
|
-
|
|
98
|
-
- name: Attach SBOM to release
|
|
99
|
-
uses: softprops/action-gh-release@v1
|
|
100
|
-
with:
|
|
101
|
-
files: sbom.spdx.json
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### SBOM Analysis
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Install grype for vulnerability scanning
|
|
108
|
-
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh
|
|
109
|
-
|
|
110
|
-
# Scan SBOM for vulnerabilities
|
|
111
|
-
grype sbom:sbom.spdx.json
|
|
112
|
-
|
|
113
|
-
# Output formats
|
|
114
|
-
grype sbom:sbom.spdx.json -o json
|
|
115
|
-
grype sbom:sbom.spdx.json -o sarif
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Dependency Scanning
|
|
119
|
-
|
|
120
|
-
### Dependency Confusion Attacks
|
|
121
|
-
|
|
122
|
-
**Prevention:**
|
|
123
|
-
```json
|
|
124
|
-
// package.json - use scoped packages
|
|
125
|
-
{
|
|
126
|
-
"name": "@myorg/mypackage",
|
|
127
|
-
"dependencies": {
|
|
128
|
-
"@myorg/internal-lib": "^1.0.0"
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
```yaml
|
|
134
|
-
# .npmrc - configure private registry
|
|
135
|
-
@myorg:registry=https://npm.pkg.github.com
|
|
136
|
-
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Lock Files
|
|
140
|
-
|
|
141
|
-
**Commit lock files:**
|
|
142
|
-
```bash
|
|
143
|
-
# npm
|
|
144
|
-
package-lock.json ✅
|
|
145
|
-
|
|
146
|
-
# yarn
|
|
147
|
-
yarn.lock ✅
|
|
148
|
-
|
|
149
|
-
# pnpm
|
|
150
|
-
pnpm-lock.yaml ✅
|
|
151
|
-
|
|
152
|
-
# pip
|
|
153
|
-
requirements.txt ✅
|
|
154
|
-
Pipfile.lock ✅
|
|
155
|
-
|
|
156
|
-
# go
|
|
157
|
-
go.sum ✅
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Dependency Review
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
# .github/workflows/dependency-review.yml
|
|
164
|
-
name: Dependency Review
|
|
165
|
-
|
|
166
|
-
on: [pull_request]
|
|
167
|
-
|
|
168
|
-
permissions:
|
|
169
|
-
contents: read
|
|
170
|
-
|
|
171
|
-
jobs:
|
|
172
|
-
dependency-review:
|
|
173
|
-
runs-on: ubuntu-latest
|
|
174
|
-
steps:
|
|
175
|
-
- uses: actions/checkout@v3
|
|
176
|
-
- uses: actions/dependency-review-action@v3
|
|
177
|
-
with:
|
|
178
|
-
fail-on-severity: moderate
|
|
179
|
-
deny-licenses: GPL-3.0, AGPL-3.0
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## Image Signing
|
|
183
|
-
|
|
184
|
-
### Cosign
|
|
185
|
-
|
|
186
|
-
**Installation:**
|
|
187
|
-
```bash
|
|
188
|
-
# Linux
|
|
189
|
-
wget https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64
|
|
190
|
-
chmod +x cosign-linux-amd64
|
|
191
|
-
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
|
|
192
|
-
|
|
193
|
-
# macOS
|
|
194
|
-
brew install cosign
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**Generate Keys:**
|
|
198
|
-
```bash
|
|
199
|
-
# Generate key pair
|
|
200
|
-
cosign generate-key-pair
|
|
201
|
-
|
|
202
|
-
# Outputs:
|
|
203
|
-
# - cosign.key (private - store securely!)
|
|
204
|
-
# - cosign.pub (public - distribute)
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
**Sign Image:**
|
|
208
|
-
```bash
|
|
209
|
-
# Sign with key
|
|
210
|
-
cosign sign --key cosign.key ghcr.io/myorg/myapp:v1.0.0
|
|
211
|
-
|
|
212
|
-
# Keyless signing (OIDC)
|
|
213
|
-
cosign sign ghcr.io/myorg/myapp:v1.0.0
|
|
214
|
-
|
|
215
|
-
# Sign with annotations
|
|
216
|
-
cosign sign --key cosign.key \
|
|
217
|
-
-a git_sha=$(git rev-parse HEAD) \
|
|
218
|
-
-a build_date=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
|
|
219
|
-
-a author=$GITHUB_ACTOR \
|
|
220
|
-
ghcr.io/myorg/myapp:v1.0.0
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Verify Signature:**
|
|
224
|
-
```bash
|
|
225
|
-
# Verify with public key
|
|
226
|
-
cosign verify --key cosign.pub ghcr.io/myorg/myapp:v1.0.0
|
|
227
|
-
|
|
228
|
-
# Keyless verification
|
|
229
|
-
cosign verify \
|
|
230
|
-
--certificate-identity=user@example.com \
|
|
231
|
-
--certificate-oidc-issuer=https://github.com/login/oauth \
|
|
232
|
-
ghcr.io/myorg/myapp:v1.0.0
|
|
233
|
-
|
|
234
|
-
# Verify annotations
|
|
235
|
-
cosign verify --key cosign.pub \
|
|
236
|
-
-a git_sha=abc123 \
|
|
237
|
-
ghcr.io/myorg/myapp:v1.0.0
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
**CI/CD Integration:**
|
|
241
|
-
```yaml
|
|
242
|
-
# .github/workflows/sign-publish.yml
|
|
243
|
-
name: Build, Sign, and Publish
|
|
244
|
-
|
|
245
|
-
on:
|
|
246
|
-
push:
|
|
247
|
-
tags: ['v*']
|
|
248
|
-
|
|
249
|
-
permissions:
|
|
250
|
-
contents: read
|
|
251
|
-
packages: write
|
|
252
|
-
id-token: write # For keyless signing
|
|
253
|
-
|
|
254
|
-
jobs:
|
|
255
|
-
build-sign-publish:
|
|
256
|
-
runs-on: ubuntu-latest
|
|
257
|
-
steps:
|
|
258
|
-
- uses: actions/checkout@v3
|
|
259
|
-
|
|
260
|
-
- name: Login to GHCR
|
|
261
|
-
uses: docker/login-action@v2
|
|
262
|
-
with:
|
|
263
|
-
registry: ghcr.io
|
|
264
|
-
username: ${{ github.actor }}
|
|
265
|
-
password: ${{ secrets.GITHUB_TOKEN }}
|
|
266
|
-
|
|
267
|
-
- name: Build and push
|
|
268
|
-
uses: docker/build-push-action@v4
|
|
269
|
-
with:
|
|
270
|
-
push: true
|
|
271
|
-
tags: ghcr.io/${{ github.repository }}:${{ github.ref_name }}
|
|
272
|
-
|
|
273
|
-
- name: Install Cosign
|
|
274
|
-
uses: sigstore/cosign-installer@v3
|
|
275
|
-
|
|
276
|
-
- name: Sign image
|
|
277
|
-
run: |
|
|
278
|
-
cosign sign --yes \
|
|
279
|
-
-a git_sha=${{ github.sha }} \
|
|
280
|
-
-a tag=${{ github.ref_name }} \
|
|
281
|
-
ghcr.io/${{ github.repository }}:${{ github.ref_name }}
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### Policy Enforcement
|
|
285
|
-
|
|
286
|
-
**Kyverno Image Verification:**
|
|
287
|
-
```yaml
|
|
288
|
-
apiVersion: kyverno.io/v1
|
|
289
|
-
kind: ClusterPolicy
|
|
290
|
-
metadata:
|
|
291
|
-
name: verify-image-signature
|
|
292
|
-
spec:
|
|
293
|
-
validationFailureAction: enforce
|
|
294
|
-
webhookTimeoutSeconds: 30
|
|
295
|
-
rules:
|
|
296
|
-
- name: verify-signature
|
|
297
|
-
match:
|
|
298
|
-
any:
|
|
299
|
-
- resources:
|
|
300
|
-
kinds:
|
|
301
|
-
- Pod
|
|
302
|
-
verifyImages:
|
|
303
|
-
- imageReferences:
|
|
304
|
-
- "ghcr.io/myorg/*"
|
|
305
|
-
attestors:
|
|
306
|
-
- count: 1
|
|
307
|
-
entries:
|
|
308
|
-
- keys:
|
|
309
|
-
publicKeys: |-
|
|
310
|
-
-----BEGIN PUBLIC KEY-----
|
|
311
|
-
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
|
|
312
|
-
-----END PUBLIC KEY-----
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
## Artifact Attestation
|
|
316
|
-
|
|
317
|
-
### in-toto Attestations
|
|
318
|
-
|
|
319
|
-
**Generate Attestation:**
|
|
320
|
-
```bash
|
|
321
|
-
# Create provenance attestation
|
|
322
|
-
cosign attest --key cosign.key \
|
|
323
|
-
--predicate provenance.json \
|
|
324
|
-
ghcr.io/myorg/myapp:v1.0.0
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
**Provenance Format:**
|
|
328
|
-
```json
|
|
329
|
-
{
|
|
330
|
-
"_type": "https://in-toto.io/Statement/v0.1",
|
|
331
|
-
"subject": [{
|
|
332
|
-
"name": "ghcr.io/myorg/myapp",
|
|
333
|
-
"digest": {
|
|
334
|
-
"sha256": "abc123..."
|
|
335
|
-
}
|
|
336
|
-
}],
|
|
337
|
-
"predicateType": "https://slsa.dev/provenance/v0.2",
|
|
338
|
-
"predicate": {
|
|
339
|
-
"builder": {
|
|
340
|
-
"id": "https://github.com/myorg/myrepo/actions/runs/12345"
|
|
341
|
-
},
|
|
342
|
-
"buildType": "https://github.com/Attestations/GitHubActionsWorkflow@v1",
|
|
343
|
-
"invocation": {
|
|
344
|
-
"configSource": {
|
|
345
|
-
"uri": "git+https://github.com/myorg/myrepo",
|
|
346
|
-
"digest": {"sha1": "abc123"},
|
|
347
|
-
"entryPoint": ".github/workflows/build.yml"
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
"metadata": {
|
|
351
|
-
"buildStartedOn": "2023-01-15T10:00:00Z",
|
|
352
|
-
"buildFinishedOn": "2023-01-15T10:05:00Z",
|
|
353
|
-
"completeness": {
|
|
354
|
-
"parameters": true,
|
|
355
|
-
"environment": true,
|
|
356
|
-
"materials": true
|
|
357
|
-
},
|
|
358
|
-
"reproducible": false
|
|
359
|
-
},
|
|
360
|
-
"materials": [
|
|
361
|
-
{
|
|
362
|
-
"uri": "git+https://github.com/myorg/myrepo",
|
|
363
|
-
"digest": {"sha1": "abc123"}
|
|
364
|
-
}
|
|
365
|
-
]
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
**Verify Attestation:**
|
|
371
|
-
```bash
|
|
372
|
-
cosign verify-attestation --key cosign.pub \
|
|
373
|
-
ghcr.io/myorg/myapp:v1.0.0
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
### SLSA Provenance
|
|
377
|
-
|
|
378
|
-
```yaml
|
|
379
|
-
# .github/workflows/slsa-provenance.yml
|
|
380
|
-
name: SLSA Provenance
|
|
381
|
-
|
|
382
|
-
on:
|
|
383
|
-
push:
|
|
384
|
-
tags: ['v*']
|
|
385
|
-
|
|
386
|
-
permissions:
|
|
387
|
-
contents: read
|
|
388
|
-
packages: write
|
|
389
|
-
id-token: write
|
|
390
|
-
|
|
391
|
-
jobs:
|
|
392
|
-
build:
|
|
393
|
-
runs-on: ubuntu-latest
|
|
394
|
-
outputs:
|
|
395
|
-
digest: ${{ steps.build.outputs.digest }}
|
|
396
|
-
steps:
|
|
397
|
-
- uses: actions/checkout@v3
|
|
398
|
-
|
|
399
|
-
- name: Build
|
|
400
|
-
id: build
|
|
401
|
-
run: |
|
|
402
|
-
docker build -t myapp:latest .
|
|
403
|
-
digest=$(docker inspect --format='{{index .RepoDigests 0}}' myapp:latest | cut -d'@' -f2)
|
|
404
|
-
echo "digest=$digest" >> $GITHUB_OUTPUT
|
|
405
|
-
|
|
406
|
-
provenance:
|
|
407
|
-
needs: [build]
|
|
408
|
-
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.5.0
|
|
409
|
-
with:
|
|
410
|
-
image: ghcr.io/${{ github.repository }}
|
|
411
|
-
digest: ${{ needs.build.outputs.digest }}
|
|
412
|
-
secrets:
|
|
413
|
-
registry-username: ${{ github.actor }}
|
|
414
|
-
registry-password: ${{ secrets.GITHUB_TOKEN }}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
## SLSA
|
|
418
|
-
|
|
419
|
-
### SLSA Levels
|
|
420
|
-
|
|
421
|
-
**SLSA 1:** Documentation of build process
|
|
422
|
-
**SLSA 2:** Tamper-proof provenance
|
|
423
|
-
**SLSA 3:** Source and build platforms hardened
|
|
424
|
-
**SLSA 4:** Highest level, two-person review
|
|
425
|
-
|
|
426
|
-
### Implementation
|
|
427
|
-
|
|
428
|
-
```yaml
|
|
429
|
-
# slsa-framework requirements
|
|
430
|
-
requirements:
|
|
431
|
-
slsa_1:
|
|
432
|
-
- Build process documented
|
|
433
|
-
- Provenance generated
|
|
434
|
-
|
|
435
|
-
slsa_2:
|
|
436
|
-
- Authenticated provenance
|
|
437
|
-
- Service-generated (not user)
|
|
438
|
-
- Tamper-proof
|
|
439
|
-
|
|
440
|
-
slsa_3:
|
|
441
|
-
- Source and build platform security
|
|
442
|
-
- Hardened build environment
|
|
443
|
-
- Build as code
|
|
444
|
-
|
|
445
|
-
slsa_4:
|
|
446
|
-
- Two-person review
|
|
447
|
-
- Hermetic builds
|
|
448
|
-
- Reproducible builds
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
## Best Practices
|
|
452
|
-
|
|
453
|
-
### 1. Generate and Publish SBOMs
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
# Include with every release
|
|
457
|
-
syft myapp:v1.0.0 -o spdx-json > sbom.json
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
### 2. Sign All Artifacts
|
|
461
|
-
|
|
462
|
-
```bash
|
|
463
|
-
# Images, binaries, packages
|
|
464
|
-
cosign sign --key cosign.key artifact
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
### 3. Verify Before Use
|
|
468
|
-
|
|
469
|
-
```bash
|
|
470
|
-
# Verify signatures in deployment pipeline
|
|
471
|
-
cosign verify --key cosign.pub image
|
|
472
|
-
```
|
|
473
|
-
|
|
474
|
-
### 4. Use Private Registries
|
|
475
|
-
|
|
476
|
-
```yaml
|
|
477
|
-
# Control your supply chain
|
|
478
|
-
registry: private-registry.example.com
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
### 5. Pin Dependencies
|
|
482
|
-
|
|
483
|
-
```json
|
|
484
|
-
{
|
|
485
|
-
"dependencies": {
|
|
486
|
-
"express": "4.18.2", // ✅ Exact version
|
|
487
|
-
"lodash": "^4.17.21" // ❌ Range
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
### 6. Automated Scanning
|
|
493
|
-
|
|
494
|
-
```yaml
|
|
495
|
-
# Scan dependencies daily
|
|
496
|
-
schedule:
|
|
497
|
-
- cron: '0 0 * * *'
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
### 7. Provenance Verification
|
|
501
|
-
|
|
502
|
-
```bash
|
|
503
|
-
# Verify build provenance
|
|
504
|
-
cosign verify-attestation image
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
### 8. Reproducible Builds
|
|
508
|
-
|
|
509
|
-
```dockerfile
|
|
510
|
-
# Use specific base image digests
|
|
511
|
-
FROM node:20-alpine@sha256:abc123...
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
---
|
|
515
|
-
|
|
516
|
-
**Related Resources:**
|
|
517
|
-
- [container-security.md](container-security.md) - Image security
|
|
518
|
-
- [ci-cd-security.md](ci-cd-security.md) - Pipeline security
|