Використання секретних ключів API на travis-ci


92

Я хотів би використовувати travis-ci для одного зі своїх проектів .

Проект є обгорткою API, тому багато тестів покладаються на використання секретних ключів API. Для локального тестування я просто зберігаю їх як змінні середовища. Який безпечний спосіб використовувати ці клавіші на Тревісі?

Відповіді:


99

Тревіс має функцію шифрування змінних середовища ( "Шифрування змінних середовища" ). Це може бути використано для захисту ваших секретних ключів API. Я успішно використав це для мого ключа API Heroku.

Все, що вам потрібно зробити, це встановити дорогоцінний камінь travis, зашифрувати потрібний рядок і додати зашифрований рядок у свій .travis.yml. Шифрування дійсне лише для одного сховища. travisКоманда отримує відкритий ключ для вашого репо , а потім може розшифрувати рядок в процесі побудови.

gem install --user travis
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo

Це дає вам такий результат:

Please add the following to your .travis.yml file:

  secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g="

12
Не забудьте задокументувати, які змінні ви використовуєте, і чому, оскільки після їх зашифрування їх може відновити лише хтось із оригінальними ключами.
jerseyboy

2
Схоже, новіші версії самоцвіту Тревіса воліють аргументувати їх у зворотному порядку:, travis encrypt [args..] [options]тобто ви хочете це зробити travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo. Поставивши параметри першими, а дані, які слід зашифрувати останніми, відображається попередження.
Йорданія, що працює

3
За допомогою опції --add env.globalдо travisкоманди, він буде автоматично змінити свій .travis.yml.
Томас

1
@RamIdavalapati: оскільки секрети зашифровані, це вважається безпечним, так.
Оді

1
@ Ramesh-X: так, оскільки це шифрування призначене для TravisCI. Якщо хтось контролює TravisCI, він може отримати SECRET_ENV
Оді,

7

відповідно до цього в попередній документації сказано, що:

Якщо у вас встановлені клієнти командного рядка Heroku та Travis CI, ви можете отримати свій ключ, зашифрувати його та додати до вашого .travis.yml, виконавши таку команду з каталогу проекту:

travis encrypt $(heroku auth:token) --add deploy.api_key

зверніться до наступного посібника з встановлення клієнта heroku відповідно до вашої ОС


Я просто хочу перевірити: ключ, який він додає до вашого файлу, безпечно завантажувати до контролю версій, так?
vapurrmaid 03.03.18

5

Ви також можете визначити секретні змінні в налаштуваннях сховища :

Змінні, визначені в налаштуваннях сховища, однакові для всіх збірок, і коли ви перезапускаєте стару збірку, вона використовує останні значення. Ці змінні не доступні автоматично для форків.

Визначте змінні в налаштуваннях сховища, які:

  • різняться залежно від сховища.
  • містять конфіденційні дані, такі як сторонні облікові дані.

Щоб визначити змінні в налаштуваннях сховища, переконайтеся, що ви ввійшли в систему, перейдіть до відповідного сховища, виберіть «Налаштування» у гвинтовому меню та натисніть «Додати нову змінну» у розділі «Змінні середовища».


1
Не зрозумів, як створити секретні змінні. Під час гуглювання, результати пояснюють, як шифрувати.
Xedin Невідомо

@XedinUnknown Це можна використовувати для секретних змінних. З посилання: "За замовчуванням значення цих нових змінних середовища приховано від рядка експорту в журналах. Це відповідає поведінці зашифрованих змінних у вашому .travis.yml. Змінні зберігаються зашифрованими в наших системах, і розшифрувати при створенні сценарію збірки. "
bmaupin

0

Використовуйте інший набір ключів API і робіть це так само. Ваш вікно travis отримує налаштування для запуску збірки, а потім повністю зривається після завершення збірки. У вас є root-доступ до вашого вікна під час збірки, тому ви можете робити з ним все, що завгодно.


4
Що ви маєте на увазі під "робіть так само"? Мені не дуже подобається ідея зберігати ключі API у самому репо (тобто у файлі .travis.yml), але, схоже, не існує іншого способу налаштування змінних середовища на travis.
BM5k

Змінна env буде зашифрована за допомогою відкритого ключа, тому лише власник секретного ключа може її розшифрувати. Не слід використовувати важливий маркер. У моєму випадку я використав той, який вже був у travis для GitHub. Це спрацювало досить добре, і з github я можу відкликати цей маркер щоразу, коли відчуваю, що travis є ризиком. Наявність зашифрованого маркера в моєму репо не робить мене поганим сном. github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.