Використання секретних ключів 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.