#linux #shell #jenkins #encryption
#linux #оболочка #дженкинс #шифрование
Вопрос:
Я пытаюсь запустить Node.js приложение от jenkins, которое создает резервную копию нашей платформы управления API. Когда мы получаем резервную копию на сервере jenkins, у нас есть следующие каталоги — Backup
├── apps
├── secretes
│ ├── abc
│ ├── pqr
│ └── xyz
└─ devs
Есть секретные каталоги, такие как abc
, pqr
, xyz
, в которых хранятся некоторые файлы .txt, содержащие конфиденциальные данные.
Я хочу зашифровать все файлы, присутствующие в secretes
каталоге, прежде чем создавать zip-файл и размещать его в хранилище резервных копий. Для меня подойдет любой метод шифрования.
Ответ №1:
Используйте внешний инструмент, такой как 7zip, для создания надежно зашифрованного zip-файла.
Установите его с помощью этой команды sudo apt-get install p7zip-full -y
Зашифруйте каталог секретов вашего Jenkins с помощью следующей команды;
7z a -mhe=on -t7z -mx=9 -pyour_custom_password output_encryped_backup_archive.7z secretes
Вы можете прочитать больше о вышеупомянутых параметрах наhttps://linux.die.net/man/1/7z
Вы можете автоматизировать этот скрипт с помощью crontab.
Ответ №2:
Вариант 1. Плагин учетных данных Jenkins
Храните все учетные данные / секреты в одном месте.
https://www.jenkins.io/doc/pipeline/steps/credentials-binding/
пример
node {
ws {
withCredentials([file(credentialsId: 'secret', variable: 'FILE')]) {
sh 'use $FILE'
}
}
}
Варианты 2. git-crypt
Просто сохраните как есть в git с помощью модуля git-crypt. В учетных данных Jenkins вы должны хранить ключ
https://github.com/AGWA/git-crypt
чтобы получить данные, просто проверьте git с дополнительным ключом шифрования
Вариант 3. Храните зашифрованный архив в acrtifactory / S3, а пароль — в учетных данных Jenkins
например, изhttps://www.jenkins.io/doc/pipeline/steps/credentials-binding
node {
withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
sh '''
set x
curl -u "$USERPASS" https://private.server/ > output
'''
}
}