feat: migrate Atlantis from SOPS to OpenBao #77

Merged
admin merged 1 commits from remove-sops-use-openbao into main 2026-02-21 09:08:37 +01:00
Owner

Summary

  • Replace SOPS+age with OpenBao AppRole for Proxmox API token in Atlantis workflow
  • Remove .sops.yaml and encrypted proxmox.secrets.yaml
  • Token fetched from secret/infrastructure/proxmox via bao CLI

Changes

  • atlantis.yaml: sops -d --extractbao kv get -field=
  • Removed .sops.yaml (age encryption config)
  • Removed proxmox.secrets.yaml (SOPS-encrypted file)
  • Updated .gitleaks.toml comment

Testing

  • Atlantis container rebuilt with bao CLI (no SOPS)
  • Verified bao kv get works from inside Atlantis container
  • docker-compose.yml already updated (removed SOPS_AGE_KEY_FILE, age-key.txt mount)

🤖 Generated with Claude Code

## Summary - Replace SOPS+age with OpenBao AppRole for Proxmox API token in Atlantis workflow - Remove .sops.yaml and encrypted proxmox.secrets.yaml - Token fetched from `secret/infrastructure/proxmox` via bao CLI ## Changes - `atlantis.yaml`: `sops -d --extract` → `bao kv get -field=` - Removed `.sops.yaml` (age encryption config) - Removed `proxmox.secrets.yaml` (SOPS-encrypted file) - Updated `.gitleaks.toml` comment ## Testing - Atlantis container rebuilt with bao CLI (no SOPS) - Verified `bao kv get` works from inside Atlantis container - docker-compose.yml already updated (removed SOPS_AGE_KEY_FILE, age-key.txt mount) 🤖 Generated with Claude Code
claude added 1 commit 2026-02-21 09:08:10 +01:00
feat: migrate Atlantis from SOPS to OpenBao for Proxmox token
Some checks failed
0/0 projects applied successfully.
AI Review / AI Code Review (pull_request) Successful in 1s
PR Checks / OpenTofu Validate & Policy (pull_request) Failing after 8s
Security Scan / Security Scan (pull_request) Successful in 11s
27fc46664f
- Replace sops -d --extract with bao kv get -field in workflow
- Remove .sops.yaml and encrypted proxmox.secrets.yaml
- Update .gitleaks.toml comment (remove SOPS reference)
- Proxmox token now fetched from OpenBao secret/infrastructure/proxmox
  via AppRole authentication (atlantis role)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

AI Code Review

Обзор PR: SOPS → OpenBao для Atlantis

Хорошее

  • Правильное направление: OpenBao (centralized secrets) лучше SOPS (file-based)
  • Atlantis контейнер обновлён (bao CLI добавлен)
  • .sops.yaml и encrypted файл удалены

⚠️ Критические проблемы

1. Секретность AppRole credentials 🔴

source /secrets/openbao-approle && export BAO_TOKEN=$(bao write...)
  • Где хранится /secrets/openbao-approle? В чём её формат?
  • Если это volume mount → не должна быть в git
  • Если это ENV vars в docker-compose → они видны в docker inspect и history
  • Требуется: явное описание механизма доставки ROLE_ID и SECRET_ID в контейнер (Secret mount? Init container?)

2. AppRole rotation и lifecycle 🔴

  • Нет упоминания о том, когда/как ротировать AppRole credentials
  • Secret ID должен быть одноразовым или с TTL? Текущая политика OpenBao?
  • Требуется: ADR или CHANGELOG об AppRole lifecycle

3. Потеря аудита 🟠

  • SOPS-файл был в git → видна история изменений, когда токен менялся
  • OpenBao обращение не логируется в git → потребуется опираться на OpenBao audit log
  • Убедитесь, что OpenBao audit logging включён и мониторится

📋 Вторичные проблемы

4. Сложный command в atlantis.yaml

command: "source ... && export BAO_TOKEN=$(...) && bao kv get ..."
  • Трудночитаемо, трудноладить (отсутствует error handling)
  • Лучше: shell script в контейнере + вызов скрипта из atlantis.yaml
  • Или: init контейнер, который пишет token в /tmp, затем используется в workflows

5. Отсутствие fallback 🟡

  • Если OpenBao недоступен → Atlantis упадёт молча
  • Нужна проверка доступности в startup scripts или health checks

6. .gitleaks.toml комментарий

-  # Terraform tenant VM passwords are managed by VM Bot and encrypted at rest via SOPS
+  # Terraform tenant VM passwords are managed by VM Bot
  • Нужно добавить информацию об OpenBao: # ...encrypted at rest via OpenBao secret/infrastructure/proxmox

🔍 Перед мержем

  1. Где сохранены AppRole credentials? Ответ в CHANGELOG или security.yaml
  2. Документ AppRole rotation policy в memory или ADR
  3. Verify OpenBao audit logs содержат обращения Atlantis
  4. Test failover: что произойдёт, если OpenBao временно недоступен?
  5. Удалить .sops.yaml из git history (если планируется): git-filter-repo или similar

Статус: Одобрить нельзя — требуется уточнение по AppRole доставке и документация. После исправлений — принять.


Automated review by Claude Haiku | advisory, does not block merge

## AI Code Review # Обзор PR: SOPS → OpenBao для Atlantis ## ✅ Хорошее - Правильное направление: OpenBao (centralized secrets) лучше SOPS (file-based) - Atlantis контейнер обновлён (bao CLI добавлен) - `.sops.yaml` и encrypted файл удалены --- ## ⚠️ Критические проблемы ### 1. **Секретность AppRole credentials** 🔴 ```bash source /secrets/openbao-approle && export BAO_TOKEN=$(bao write...) ``` - Где хранится `/secrets/openbao-approle`? В чём её формат? - Если это volume mount → не должна быть в git - Если это ENV vars в docker-compose → они видны в `docker inspect` и history - **Требуется:** явное описание механизма доставки `ROLE_ID` и `SECRET_ID` в контейнер (Secret mount? Init container?) ### 2. **AppRole rotation и lifecycle** 🔴 - Нет упоминания о том, когда/как ротировать AppRole credentials - Secret ID должен быть одноразовым или с TTL? Текущая политика OpenBao? - **Требуется:** ADR или CHANGELOG об AppRole lifecycle ### 3. **Потеря аудита** 🟠 - SOPS-файл был в git → видна история изменений, когда токен менялся - OpenBao обращение не логируется в git → потребуется опираться на OpenBao audit log - Убедитесь, что OpenBao audit logging включён и мониторится --- ## 📋 Вторичные проблемы ### 4. **Сложный command в atlantis.yaml** ```yaml command: "source ... && export BAO_TOKEN=$(...) && bao kv get ..." ``` - Трудночитаемо, трудноладить (отсутствует error handling) - **Лучше:** shell script в контейнере + вызов скрипта из atlantis.yaml - **Или:** init контейнер, который пишет token в /tmp, затем используется в workflows ### 5. **Отсутствие fallback** 🟡 - Если OpenBao недоступен → Atlantis упадёт молча - Нужна проверка доступности в startup scripts или health checks ### 6. **.gitleaks.toml комментарий** ```diff - # Terraform tenant VM passwords are managed by VM Bot and encrypted at rest via SOPS + # Terraform tenant VM passwords are managed by VM Bot ``` - Нужно добавить информацию об OpenBao: `# ...encrypted at rest via OpenBao secret/infrastructure/proxmox` --- ## 🔍 Перед мержем 1. **Где сохранены AppRole credentials?** Ответ в CHANGELOG или security.yaml 2. **Документ AppRole rotation policy** в memory или ADR 3. **Verify OpenBao audit logs** содержат обращения Atlantis 4. **Test failover:** что произойдёт, если OpenBao временно недоступен? 5. **Удалить .sops.yaml из git history** (если планируется): `git-filter-repo` или similar --- **Статус:** ❌ **Одобрить нельзя** — требуется уточнение по AppRole доставке и документация. После исправлений — ✅ принять. --- _Automated review by Claude Haiku | advisory, does not block merge_
admin merged commit 28b2c7076f into main 2026-02-21 09:08:37 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: claude/infrastructure#77
No description provided.