Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Git & Security: Перестань хранить пароли в plaintext. Знакомство с SOPS

Каждый админ хоть раз писал в скрипте PASSWORD="MySecretPassword123". Это прямая дорога к утечке данных, особенно если скрипт попадёт в Git. Архитектурный подход — хранить конфигурацию и код в Git, а секреты — шифровать.

SOPS (Secrets OPerationS) от Mozilla — элегантное решение этой проблемы. Он не шифрует весь файл, а только значения в нём, оставляя ключи в открытом виде. Это идеально для YAML, JSON, .env и .ini файлов.

Как это работает:
Вы создаёте обычный конфиг, а SOPS шифрует его с помощью PGP, age или облачных KMS (AWS, Azure, GCP). Зашифрованный файл можно смело коммитить в Git.

Практический пример с age (простой и современный инструмент шифрования):

Установка инструментов:

Bash

# macOS или Linux с Homebrew
brew install sops age

Генерация ключа:

Bash

age-keygen -o key.txt
# public key: age1...
# private key: AGE-SECRET-KEY-1...

Публичный ключ мы будем использовать для шифрования, приватный — для расшифровки.

Создаём файл с секретами config.yaml:

YAML

db_user: "postgres"
db_password: "SuperSecretPassword" # ЭТО БУДЕМ ШИФРОВАТЬ

Шифруем и редактируем:
Создаём в корне проекта файл .sops.yaml с правилами шифрования:

YAML

creation_rules:
- path_regex: .*.yaml$
age: age1... # Ваш публичный ключ

Теперь команда sops config.yaml откроет файл в вашем $EDITOR, а при сохранении автоматически зашифрует значения.

Результат в config.yaml:

YAML

db_user: "postgres"
db_password: "ENC[AES256_GCM,data:...,iv:...,tag:...]"
sops:
# ... метаданные sops

Файл можно безопасно коммитить в Git.

Как использовать в скрипте?

Bash

# Расшифровываем "на лету" и передаём в переменную
DB_CONFIG=$(sops -d config.yaml)
DB_PASSWORD=$(echo "$DB_CONFIG" | yq .db_password) # yq - парсер для yaml

Взгляд архитектора:
Это основа GitOps. Конфигурация, включая зашифрованные секреты, является «единственным источником правды». Изменения отслеживаются, а доступ к расшифровке имеют только те, у кого есть приватный ключ (люди или CI/CD системы).

#linux #security #gitops #devops #sops #architect
👍2