Передача коду
Air-gapped передача коду, artifact registries, GPG signing та безпечні CI/CD pipelines для AI-розробки
📎ОФІЦІЙНА ДОКУМЕНТАЦІЯ
Безпечна передача коду
В архітектурі Zero Trust передача коду між середовищами -- критична операція, яка потребує верифікації цілісності та автентичності на кожному етапі.
Air-Gapped Code Transfer
Сценарії air-gapped передачі
Air-gapped (ізольовані від мережі) середовища використовуються для:
- Розробка для оборонного сектору
- Критична інфраструктура (енергетика, транспорт)
- Обробка класифікованої інформації
- Середовища з повним контролем над кодом
Процес передачі
Безпека фізичного носія
| Вимога | Реалізація |
|---|---|
| Шифрування | VeraCrypt або BitLocker для USB |
| Write-once | Використання DVD-R або write-protected USB |
| Chain of Custody | Документування кожної передачі |
| Scanning | Антивірус у проміжній зоні |
| Disposal | Безпечне знищення після використання |
Фізичні носії для air-gapped передачі повинні бути спеціально виділені та контрольовані. Забороняється використовувати особисті USB-накопичувачі.
Artifact Registries
Приватні реєстри
| Тип | Інструмент | Використання |
|---|---|---|
| Docker images | Harbor, Artifactory, Azure ACR | Container images |
| npm packages | Verdaccio, Artifactory, GitHub Packages | Node.js залежності |
| Python packages | PyPI Server, Artifactory | Python залежності |
| Maven | Nexus, Artifactory | Java залежності |
| Universal | Artifactory, Azure Artifacts | Будь-які артефакти |
Налаштування приватного npm registry
# Verdaccio (self-hosted npm registry)
# .npmrc
registry=https://npm.internal.company.com/
//npm.internal.company.com/:_authToken=${NPM_TOKEN}
# Дозвіл на upstream лише для approved packages
# verdaccio config
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@company/*':
access: $authenticated
publish: $authenticated
'**':
access: $authenticated
proxy: npmjs # Лише через proxy з filtering
Vulnerability Scanning для реєстрів
- Сканування кожного нового артефакту на вразливості
- Блокування артефактів з critical/high CVE
- Автоматичне видалення deprecated або вразливих версій
GPG Signing
Підписання артефактів
# Генерація GPG-ключа для CI/CD
gpg --full-generate-key
# Підписання артефакту
gpg --armor --detach-sign artifact.tar.gz
# Верифікація підпису
gpg --verify artifact.tar.gz.asc artifact.tar.gz
Git Commit Signing
# Налаштування підпису commits
git config commit.gpgsign true
git config user.signingkey YOUR_GPG_KEY_ID
# Верифікація підписаного commit
git verify-commit HEAD
Container Image Signing
# Cosign для підписання Docker images
cosign sign --key cosign.key registry.com/image:tag
# Верифікація
cosign verify --key cosign.pub registry.com/image:tag
Безпечні CI/CD Pipelines
Pipeline Security
| Контроль | Реалізація |
|---|---|
| Pipeline as Code | Зберігати pipeline у Git, version control |
| Secrets Management | Vault, Azure Key Vault, GitHub Secrets |
| Runner Isolation | Ephemeral runners, no shared state |
| Artifact Signing | GPG або Sigstore для всіх артефактів |
| SLSA Compliance | Attestation провenance |
| Audit Trail | Логування всіх pipeline execution |
SLSA Framework
Supply-chain Levels for Software Artifacts (SLSA) визначає рівні захисту:
| Рівень | Вимоги |
|---|---|
| SLSA 1 | Автоматизований build process |
| SLSA 2 | Version controlled build service, provenance |
| SLSA 3 | Hardened build platform, non-falsifiable provenance |
| SLSA 4 | Hermetic, reproducible builds |
Починайте з SLSA Level 1 та поступово підвищуйте. Більшість організацій можуть досягти SLSA Level 2-3 за допомогою GitHub Actions або GitLab CI.
Див. також
SAST, SCA та code signing
Air-gapped мережі та VPN
Deployment pipelines та approval gates