git crypt

Настройка (пошагово)

Инициатор
# 1. Создаём ключ шифрования
git-crypt init

# 2. Добавляем .gitattributes
echo "*.tfstate filter=git-crypt diff=git-crypt" >> .gitattributes
echo "*.tfstate.backup filter=git-crypt diff=git-crypt" >> .gitattributes

# 3. Добавляем другие аккаунты github
git-crypt add-gpg-user colleague@email.com

# Коммит изменений
git add .gitattributes
git commit -m "Add git-crypt configuration"
git push
Коллега
# 1. Установить git-crypt
# Ubuntu/Debian: apt install git-crypt
# macOS: brew install git-crypt

# 2. Создать GPG ключ (если нет)
gpg --gen-key
# Использовать тот же email, что вы указали в add-gpg-user

# 3. Отправить вам публичный ключ
gpg --armor --export colleague@email.com > colleague-public-key.asc

# 4. Клонировать репозиторий
git clone <a href="https://github.com/your-repo.git">https://github.com/your-repo.git</a>
cd your-repo

# 5. Разблокировать шифрование
git-crypt unlock
Инициатор
# Импорт публичного ключа коллеги
gpg --import colleague-public-key.asc

# Добавление в git-crypt
git-crypt add-gpg-user colleague@email.com
git push

Альтернативное решение

# 1. Генерируете общий ключ
openssl rand -hex 32 &gt; .encryption-key

# 2. Шифруете tfstate перед коммитом
encrypt_tfstate() {
    openssl enc -aes-256-cbc -salt -in terraform.tfstate -out terraform.tfstate.enc -k $(cat .encryption-key)
    rm terraform.tfstate
}

# 3. Расшифровываете после клонирования
decrypt_tfstate() {
    openssl enc -d -aes-256-cbc -in terraform.tfstate.enc -out terraform.tfstate -k $(cat .encryption-key)
}