Travis-ci'de gizli API anahtarlarını kullanma


92

Projelerimden biri için travis-ci kullanmak istiyorum .

Proje bir API sarmalayıcısıdır, bu nedenle testlerin çoğu gizli API anahtarlarının kullanımına dayanır. Yerel olarak test etmek için, onları sadece ortam değişkenleri olarak saklıyorum. Bu anahtarları Travis'te kullanmanın güvenli yolu nedir?

Yanıtlar:


99

Travis, ortam değişkenlerini şifrelemek için bir özelliğe sahiptir ( " Ortam değişkenlerini şifreleme " ). Bu, gizli API anahtarlarınızı korumak için kullanılabilir. Bunu Heroku API anahtarım için başarıyla kullandım.

Tek yapmanız gereken travis gemini kurmak, istediğiniz dizeyi şifrelemek ve şifrelenmiş dizeyi .travis.yml. Şifreleme yalnızca bir havuz için geçerlidir. travisKomutu repo ortak anahtarınızı alır ve sonra inşa sırasında dize şifresini çözebilir.

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

Bu size aşağıdaki çıktıyı verir:

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

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

12
Hangi değişkenleri ve neden kullandığınızı belgelemeyi unutmayın, çünkü bir kez şifrelendikten sonra yalnızca orijinal anahtarlara sahip biri onları kurtarabilir.
Jerseyboy

2
Görünüşe göre Travis gem'in daha yeni sürümleri argümanlarını ters sıraya koymayı tercih ediyor: travis encrypt [args..] [options]yani, yapmak isteyeceksiniz travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo. Öncelikle seçenekleri ve şifrelenecek verileri en son koymak bir uyarı görüntüler.
Jordan

3
Komut seçeneği --add env.globalile travis.travis.yml dosyanızı otomatik olarak değiştirecektir.
Thomas

1
@RamIdavalapati: Sırlar şifreli olduğundan, bu güvenli kabul edilir, evet.
Odi

1
@ Ramesh-X: evet, çünkü bu şifreleme TravisCI içindir. Birisi TravisCI üzerinde kontrole sahipse, SECRET_ENV
Odi

7

göre bu Travis ci belgelerinde bu söylenir:

Hem Heroku hem de Travis CI komut satırı istemcileri kuruluysa, proje dizininizden aşağıdaki komutu çalıştırarak anahtarınızı alabilir, şifreleyebilir ve .travis.yml dosyanıza ekleyebilirsiniz:

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

İşletim sisteminize göre heroku istemcisini yüklemek için aşağıdaki eğiticiye bakın


Sadece doğrulamak istiyorum: dosyanıza eklediği anahtar, sürüm kontrolüne yüklemek için güvenli, değil mi?
vapurrmaid

5

Bilgi havuzu ayarlarında da gizli değişkenler tanımlayabilirsiniz :

Depo ayarlarında tanımlanan değişkenler tüm derlemeler için aynıdır ve eski bir yapıyı yeniden başlattığınızda en son değerleri kullanır. Bu değişkenler, çatallar için otomatik olarak kullanılamaz.

Depo Ayarlarında şu özelliklere sahip değişkenleri tanımlayın:

  • depo başına farklılık gösterir.
  • üçüncü taraf kimlik bilgileri gibi hassas veriler içermelidir.

Depo Ayarlarında değişkenleri tanımlamak için, oturum açtığınızdan emin olun, söz konusu depoya gidin, cog menüsünden “Ayarlar” ı seçin ve “Ortam Değişkenleri” bölümünde “Yeni değişken ekle” ye tıklayın.


1
Gizli değişkenlerin nasıl oluşturulacağını anlamadım . Bunu Google'da araştırırken, sonuçlar nasıl şifreleneceğini açıklıyor.
XedinUnknown

@XedinUnknown Bu gizli değişkenler için kullanılabilir. Bağlantıdan: "Varsayılan olarak, bu yeni ortam değişkenlerinin değeri günlüklerdeki dışa aktarma satırından gizlenir. Bu, .travis.yml dosyanızdaki şifrelenmiş değişkenlerin davranışına karşılık gelir. Değişkenler sistemlerimizde şifreli olarak saklanır ve derleme betiği oluşturulduğunda şifresi çözülür. "
bmaupin

0

Farklı bir API anahtarı seti kullanın ve aynı şekilde yapın. Travis kutunuz derleme çalışmanız için kurulur ve ardından derlemeniz bittikten sonra tamamen yıkılır. Oluşturma sırasında kutunuza root erişiminiz vardır, böylece onunla istediğinizi yapabilirsiniz.


4
"Aynı şekilde yap" derken neyi kastediyorsun? API anahtarlarının deponun kendisinde (yani .travis.yml dosyasında) depolanması fikrini gerçekten sevmiyorum, ancak travis üzerinde ortam değişkenlerini yapılandırmanın başka bir yolu yok gibi görünüyor.
BM5k

Env değişkeni genel bir anahtarla şifrelenir, böylece yalnızca gizli anahtarın sahibi şifresini çözebilir. Önemli bir belirteç kullanmamalısınız. Benim durumumda, travis'in GitHub için zaten sahip olduğu birini kullandım. Bu oldukça iyi çalıştı ve Travis'in bir risk olduğunu hissettiğimde github içinden bu belirteci iptal edebilirim. Depomda şifrelenmiş jetonun olması beni kötü uyutmaz. github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.