Sử dụng khóa api bí mật trên travis-ci


92

Tôi muốn sử dụng travis-ci cho một trong những dự án của mình .

Dự án là một trình bao bọc API, vì vậy nhiều thử nghiệm dựa vào việc sử dụng các khóa API bí mật. Để kiểm tra cục bộ, tôi chỉ cần lưu trữ chúng dưới dạng các biến môi trường. Cách an toàn để sử dụng các khóa đó trên Travis là gì?

Câu trả lời:


99

Travis có tính năng mã hóa các biến môi trường ( "Mã hóa các biến môi trường" ). Điều này có thể được sử dụng để bảo vệ các khóa API bí mật của bạn. Tôi đã sử dụng thành công điều này cho khóa API Heroku của mình.

Tất cả những gì bạn phải làm là cài đặt đá quý travis, mã hóa chuỗi bạn muốn và thêm chuỗi mã hóa vào của bạn .travis.yml. Mã hóa chỉ hợp lệ cho một kho lưu trữ. Các travislệnh được khóa công khai của bạn cho repo của bạn và sau đó có thể giải mã chuỗi trong xây dựng.

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

Điều này cung cấp cho bạn kết quả sau:

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

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

12
Đừng quên ghi lại những biến bạn đang sử dụng và lý do, bởi vì sau khi mã hóa chúng, chỉ ai đó có khóa gốc mới có thể khôi phục chúng.
jerseyboy

2
Có vẻ như các phiên bản mới hơn của đá quý Travis muốn có các đối số của chúng theo thứ tự ngược lại:, travis encrypt [args..] [options]tức là bạn sẽ muốn làm như vậy travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo. Đặt các tùy chọn trước và dữ liệu được mã hóa cuối cùng sẽ hiển thị cảnh báo.
Jordan Running

3
Với tùy chọn --add env.globalcho travislệnh, nó sẽ tự động sửa đổi .travis.yml của bạn.
Thomas

1
@RamIdavalapati: vì các bí mật được mã hóa nên điều này được coi là an toàn.
Odi

1
@ Ramesh-X: có vì mã hóa này dành cho TravisCI. Nếu ai đó có quyền kiểm soát TravisCI, họ có thể nhận được SECRET_ENV
Odi

7

theo điều này trong tài liệu travis ci người ta nói rằng:

Nếu bạn đã cài đặt cả hai ứng dụng khách dòng lệnh Heroku và Travis CI, bạn có thể lấy khóa, mã hóa và thêm vào .travis.yml bằng cách chạy lệnh sau từ thư mục dự án của bạn:

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

tham khảo hướng dẫn sau để cài đặt ứng dụng heroku theo hệ điều hành của bạn


Tôi chỉ muốn xác minh: khóa mà nó thêm vào tệp của bạn có an toàn để tải lên kiểm soát phiên bản, phải không?
vapurrmaid

5

Bạn cũng có thể xác định các biến bí mật trong cài đặt kho lưu trữ :

Các biến được xác định trong cài đặt kho lưu trữ giống nhau cho tất cả các bản dựng và khi bạn khởi động lại một bản dựng cũ, nó sẽ sử dụng các giá trị mới nhất. Các biến này không tự động có sẵn cho fork.

Xác định các biến trong Cài đặt Kho lưu trữ:

  • khác nhau cho mỗi kho.
  • chứa dữ liệu nhạy cảm, chẳng hạn như thông tin đăng nhập của bên thứ ba.

Để xác định các biến trong Cài đặt Kho lưu trữ, hãy đảm bảo rằng bạn đã đăng nhập, điều hướng đến kho lưu trữ được đề cập, chọn “Cài đặt” từ menu bánh răng và nhấp vào “Thêm biến mới” trong phần “Biến Môi trường”.


1
Không hiểu cách tạo biến bí mật . Khi googling điều đó, kết quả giải thích cách mã hóa.
XedinUnknown

@XedinUnknown Điều này có thể được sử dụng cho các biến bí mật. Từ liên kết: "Theo mặc định, giá trị của các biến môi trường mới này bị ẩn khỏi dòng xuất trong nhật ký. Điều này tương ứng với hành vi của các biến được mã hóa trong .travis.yml của bạn. Các biến được lưu trữ mã hóa trong hệ thống của chúng tôi và được giải mã khi tập lệnh xây dựng được tạo. "
bmaupin

0

Sử dụng một bộ khóa API khác và thực hiện theo cách tương tự. Hộp travis của bạn được thiết lập để chạy bản dựng và sau đó lại được chia nhỏ hoàn toàn sau khi bản dựng của bạn hoàn thành. Bạn có quyền truy cập root vào hộp của mình trong quá trình xây dựng, vì vậy bạn có thể làm bất cứ điều gì bạn muốn với nó.


4
Bạn có nghĩa là gì khi "làm theo cùng một cách"? Tôi không thực sự thích ý tưởng lưu trữ các khóa API trong chính repo (tức là trong tệp .travis.yml), nhưng dường như không có cách nào khác để định cấu hình các biến môi trường trên travis.
BM5k

Biến env sẽ được mã hóa bằng khóa công khai, vì vậy chỉ chủ sở hữu của khóa bí mật mới có thể giải mã. Bạn không nên sử dụng một mã thông báo quan trọng. Trong trường hợp của tôi, tôi đã sử dụng cái mà travis đã có cho GitHub. Điều này hoạt động khá tốt và từ bên trong github, tôi có thể thu hồi mã thông báo đó bất cứ khi nào tôi cảm thấy travis là một rủi ro. Có mã thông báo được mã hóa trong repo của tôi không khiến tôi buồn ngủ. github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.