travis-ci에서 비밀 API 키 사용


92

프로젝트 중 하나에 travis-ci 를 사용하고 싶습니다 .

프로젝트는 API 래퍼이므로 대부분의 테스트는 비밀 API 키 사용에 의존합니다. 로컬에서 테스트하기 위해 환경 변수로 저장합니다. Travis에서 이러한 키를 안전하게 사용하는 방법은 무엇입니까?

답변:


99

Travis에는 환경 변수를 암호화하는 기능이 있습니다 ( "Encrypting environment variables" ). 이는 비밀 API 키를 보호하는 데 사용할 수 있습니다. Heroku API 키에 성공적으로 사용했습니다.

travis gem을 설치하고 원하는 문자열을 암호화 한 다음 암호화 된 문자열을 .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 gem은 반대 순서로 인수를 선호하는 것 같습니다 travis encrypt [args..] [options]. 즉, travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo. 옵션을 먼저 지정하고 암호화 할 데이터를 마지막으로 지정하면 경고가 표시됩니다.
Jordan Running

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

5

저장소 설정에서 비밀 변수를 정의 할 수도 있습니다 .

저장소 설정에 정의 된 변수는 모든 빌드에서 동일하며 이전 빌드를 다시 시작하면 최신 값을 사용합니다. 이러한 변수는 포크에서 자동으로 사용할 수 없습니다.

리포지토리 설정에서 다음과 같은 변수를 정의합니다.

  • 저장소마다 다릅니다.
  • 타사 자격 증명과 같은 민감한 데이터를 포함합니다.

리포지토리 설정에서 변수를 정의하려면 로그인했는지 확인하고 해당 리포지토리로 이동 한 다음 톱니 바퀴 메뉴에서 "설정"을 선택하고 "환경 변수"섹션에서 "새 변수 추가"를 클릭합니다.


1
비밀 변수 를 만드는 방법을 이해하지 못했습니다 . 인터넷 검색을 할 때 결과는 암호화 방법을 설명합니다.
XedinUnknown

@XedinUnknown 비밀 변수에 사용할 수 있습니다. 링크에서 : "기본적으로 이러한 새 환경 변수의 값은 로그의 내보내기 행에서 숨겨집니다. 이는 .travis.yml의 암호화 된 변수 동작에 해당합니다. 변수는 시스템에 암호화되어 저장됩니다. 빌드 스크립트가 생성되면 해독됩니다. "
bmaupin

0

다른 API 키 세트를 사용하고 동일한 방식으로 수행하십시오. 트래비스 박스는 빌드 실행을 위해 설정되고 빌드가 완료된 후 다시 완전히 해체됩니다. 빌드 중에 상자에 대한 루트 액세스 권한이 있으므로 원하는 모든 작업을 수행 할 수 있습니다.


4
"동일하게해라"란 무슨 뜻입니까? 저장소 자체 (예 : .travis.yml 파일)에 API 키를 저장하는 아이디어가 마음에 들지 않지만 travis에서 환경 변수를 구성하는 다른 방법은없는 것 같습니다.
BM5k

env 변수는 공개 키로 암호화되므로 비밀 키의 소유자 만 암호를 해독 할 수 있습니다. 중요한 토큰을 사용해서는 안됩니다. 제 경우에는 travis가 이미 GitHub에 사용했던 것을 사용했습니다. 이것은 꽤 잘 작동했으며 github 내에서 트래비스가 위험하다고 느낄 때마다 해당 토큰을 취소 할 수 있습니다. 내 저장소에 암호화 된 토큰이 있으면 잠을 못 자게 만들지 않습니다. github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.