Как зашифровать файлы в Jenkins

#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
    '''
  }
}