travis-ciでの秘密のAPIキーの使用


92

私のプロジェクトの 1つにtravis-ciを使用したいと思います

プロジェクトはAPIラッパーであるため、テストの多くは秘密のAPIキーの使用に依存しています。ローカルでテストするには、環境変数として保存するだけです。Travisでこれらのキーを安全に使用する方法は何ですか?

回答:


99

Travisには、環境変数を暗号化する機能があります(「環境変数の暗号化」)。これは、秘密のAPIキーを保護するために使用できます。これをHeroku APIキーに正常に使用しました。

必要なのは、travis gemをインストールし、必要な文字列を暗号化して、暗号化された文字列をに追加することだけです.travis.yml。暗号化は1つのリポジトリに対してのみ有効です。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 2013

2
Travis gemの新しいバージョンは、引数を逆の順序にすることを好むtravis encrypt [args..] [options]ようですtravis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo。つまり、実行する必要があります。オプションを最初に置き、暗号化するデータを最後に置くと、警告が表示されます。
ジョーダン、2014年

3
コマンドのオプション--add env.globalを使用travisすると、.travis.ymlが自動的に修正されます。
Thomas

1
@RamIdavalapati:シークレットは暗号化されているため、これは安全と見なされます。
Odi

1
@ Ramesh-X:はい、この暗号化はTravisCIのためのものです。誰かがTravisCIを制御している場合、彼らはSECRET_ENV得ることができた
ODI

7

travis ciのドキュメントではこれによると、

HerokuとTravis CIの両方のコマンドラインクライアントがインストールされている場合は、プロジェクトディレクトリから次のコマンドを実行して、キーを取得し、暗号化して.travis.ymlに追加できます。

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

OSに応じてherokuクライアントをインストールするには、次のチュートリアルを参照してください


確認したいだけです。ファイルに追加されたキーは、バージョン管理に安全にアップロードできます。
vapurrmaid 2018

5

リポジトリ設定で秘密変数を定義することもできます

リポジトリ設定で定義された変数はすべてのビルドで同じであり、古いビルドを再起動すると、最新の値が使用されます。これらの変数は、フォークでは自動的に使用できません。

次のような変数をリポジトリ設定で定義します。

  • リポジトリごとに異なります。
  • サードパーティの認証情報などの機密データが含まれています。

リポジトリ設定で変数を定義するには、ログインしていることを確認し、問題のリポジトリに移動し、歯車メニューから[設定]を選択し、[環境変数]セクションの[新しい変数の追加]をクリックします。


1
シークレット変数の作成方法がわかりませんでした。それをググるとき、結果は暗号化する方法を説明します。
XedinUnknown 2017

@XedinUnknownこれは秘密変数に使用できます。リンクから:「デフォルトでは、これらの新しい環境変数の値はログのエクスポート行から非表示になっています。これは.travis.ymlの暗号化された変数の動作に対応します。変数は暗号化されてシステムに保存され、ビルドスクリプトが生成されるときに復号化されます。」
bmaupin

0

別のAPIキーのセットを使用して、同じ方法で実行します。トラビスボックスはビルド実行のセットアップを取得し、ビルドが完了した後、完全に再び取り壊されます。ビルド中にボックスへのrootアクセス権があるため、ボックスを使用して好きなことができます。


4
「同じようにする」とはどういう意味ですか?リポジトリ自体(つまり、.travis.ymlファイル)にAPIキーを格納するという考えはあまり好きではありませんが、travisで環境変数を構成する別の方法はないようです。
BM5k

env変数は公開鍵で暗号化されるため、秘密鍵の所有者だけがそれを復号化できます。重要なトークンは使用しないでください。私の場合、トラビスがすでにGitHubに持っていたものを使用しました。これは非常によく機能し、github内から、トラビスがリスクであると感じた場合はいつでもそのトークンを取り消すことができます。暗号化されたトークンをリポジトリに入れても、睡眠が悪くなることはありません。github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.