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:
- Đó là kém an toàn hơn so với phương pháp biến môi trường.
- Đượ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.
- 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.