TL; DR
Có một số lý do để sử dụng các biến môi trường thay vì các tệp cấu hình, nhưng hai lý do phổ biến nhất cần bỏ qua là giá trị tiện ích của cấu hình ngoài băng tần và phân tách nâng cao giữa các máy chủ, ứng dụng hoặc vai trò tổ chức. Thay vì trình bày một danh sách đầy đủ tất cả các lý do có thể, tôi chỉ đề cập đến hai chủ đề này trong câu trả lời của tôi và chạm nhẹ vào ý nghĩa bảo mật của chúng.
Cấu hình ngoài băng: Tách bí mật khỏi mã nguồn
Nếu bạn lưu trữ tất cả các bí mật của mình trong một tệp cấu hình, bạn phải phân phối các bí mật đó cho mỗi máy chủ. Điều đó có nghĩa là kiểm tra các bí mật trong kiểm soát sửa đổi cùng với mã của bạn hoặc có một kho lưu trữ hoặc cơ chế phân phối hoàn toàn riêng biệt cho các bí mật.
Mã hóa bí mật của bạn không thực sự giúp giải quyết vấn đề này. Tất cả những gì làm là đẩy vấn đề xuống một lần, bởi vì bây giờ bạn cũng phải lo lắng về quản lý và phân phối khóa!
Nói tóm lại, các biến môi trường là một cách tiếp cận để di chuyển dữ liệu trên mỗi máy chủ hoặc mỗi ứng dụng ra khỏi mã nguồn khi bạn muốn tách sự phát triển khỏi các hoạt động. Điều này đặc biệt quan trọng nếu bạn đã xuất bản mã nguồn!
Tăng cường phân tách: Máy chủ, ứng dụng và vai trò
Mặc dù bạn chắc chắn có thể có một tệp cấu hình để giữ bí mật của mình, nhưng nếu bạn lưu trữ các bí mật trong mã nguồn, bạn có một vấn đề cụ thể. Bạn có một chi nhánh hoặc kho lưu trữ riêng cho mỗi bộ bí mật không? Làm thế nào để bạn đảm bảo đúng bộ bí mật đến đúng máy chủ? Hoặc bạn có giảm bảo mật bằng cách có "bí mật" giống nhau ở mọi nơi (hoặc có thể đọc được ở mọi nơi, nếu bạn có tất cả trong một tệp), và do đó tạo ra rủi ro lớn hơn nếu bất kỳ một điều khiển bảo mật nào của hệ thống không thành công?
Nếu bạn muốn có những bí mật duy nhất trên mỗi máy chủ hoặc cho mỗi ứng dụng, các biến môi trường sẽ giải quyết vấn đề phải quản lý vô số tệp. Nếu bạn thêm máy chủ, ứng dụng hoặc vai trò mới, bạn không phải tạo tệp mới hoặc cập nhật tệp cũ: bạn chỉ cần cập nhật môi trường của hệ thống được đề cập.
Chia tay những suy nghĩ về an ninh
Mặc dù việc thăm dò kỹ lưỡng về bảo mật kernel / bộ nhớ / tập tin nằm ngoài phạm vi của câu trả lời này, đáng để chỉ ra rằng các biến môi trường trên mỗi hệ thống được triển khai đúng cách không kém an toàn so với các bí mật "được mã hóa". Trong cả hai trường hợp, hệ thống đích vẫn phải giữ bí mật được giải mã trong bộ nhớ tại một số điểm để sử dụng nó.
Cũng đáng chỉ ra rằng khi các giá trị được lưu trữ trong bộ nhớ dễ bay hơi trên một nút nhất định, không có tệp trên đĩa nào có thể được sao chép và tấn công ngoại tuyến. Đây thường được coi là một lợi thế cho các bí mật trong bộ nhớ, nhưng chắc chắn nó không được kết luận.
Vấn đề của các biến môi trường so với các kỹ thuật bí mật quản lý khác thực sự hơn là về an ninh và khả năng sử dụng thương mại-offs hơn là về tuyệt đối. Số dặm của bạn có thể thay đổi.