2015-10-14 19 views
17

Tôi đang xây dựng ứng dụng web với Yesod và hiện đang chuyển các bí mật như khóa API qua biến môi trường (theo The Twelve-Factor App) để tránh lưu trữ các giá trị này trong tệp cấu hình được kiểm soát phiên bản. Ví dụ, tôi chạy ứng dụng của tôi trong chế độ dev như sau:Truyền bí mật ứng dụng trong Yesod và Keter

SOME_API_KEY=value yesod devel 

Tôi có một giá trị trong tập tin config/settings.yml của tôi được xác định trong điều kiện của biến môi trường này với một giá trị rỗng như sau:

meetup-api-key: "_env:SOME_API_KEY:" 

Để triển khai sử dụng Keter, tôi đang xây dựng gói Keter bằng lệnh yesod keter và thả tệp kết quả vào thư mục incoming của Keter. Vì tôi đang sử dụng cấu hình biến môi trường, tệp .keter của ứng dụng của tôi không chứa giá trị SOME_API_KEY (có chủ ý).

Làm cách nào để vượt qua SOME_API_KEY vào phiên bản ứng dụng của tôi đang chạy bên trong Keter?

Tôi muốn tránh nướng giá trị vào keter-config.yaml của tôi trong ít nhất ba lý do sau:

  1. Đó là kém an toàn hơn so với phương pháp biến môi trường.
  2. Được nhúng trực tiếp vào tệp cấu hình cho Keter, ngược lại với cấu hình cho ứng dụng, bí mật không thể thay đổi mà không dừng lại và khởi động lại toàn bộ quá trình Keter.
  3. Biến môi trường được chuyển thành mọi ứng dụng đang được quản lý bởi Keter.

Tôi hy vọng rằng có một số "phương pháp hay nhất" ngoài đó cho trường hợp này.

Trả lời

Các vấn đề liên quan