Suy nghĩ về điều này một cách toàn diện, có một số điều cần xem xét:
- Máy chủ GitLab có được lưu trữ trong cùng mạng với môi trường đích không?
- Bạn có tên người dùng và mật khẩu trong tập tin cấu hình của bạn?
- Bạn có thể tách cấu hình bảo mật khỏi cấu hình ứng dụng thông thường không?
Mối quan tâm đầu tiên phải làm với chính sách. Nếu phần mềm sẽ được triển khai vào một mạng riêng, bạn có thể chạy các vấn đề chính sách ngay cả khi cấu hình của bạn được mã hóa.
Tránh thông tin nhạy cảm
Hãy cụ thể về những gì nhạy cảm. Ví dụ: tên miền của máy chủ có thể không nhạy cảm, nhưng địa chỉ IP của nó có thể là (hoặc liên kết của cả hai). Thông thường tên người dùng và mật khẩu rất nhạy cảm, cũng như khóa máy khách và khóa bí mật (OAuth2).
Lựa chọn tốt nhất của bạn là:
- Sử dụng các chuỗi kết nối không yêu cầu tên người dùng / mật khẩu (xem bên dưới)
- Tách thông tin nhạy cảm ra khỏi Web.config chính
- Sử dụng thuộc tính tệp trong Cài đặt ứng dụng để đọc tệp cấu hình bên ngoài
Một số cơ sở dữ liệu cho phép bạn có một chuỗi kết nối trong đó tên người dùng và mật khẩu không phải là một phần của nội dung. Ví dụ: bạn có thể chạy ứng dụng của mình trong tài khoản dịch vụ miền để kết nối với SQL Server bằng bảo mật tích hợp. Hoặc bạn có thể sử dụng Ví của Oracle để giữ bí mật tên người dùng / mật khẩu trên máy mục tiêu. Một số dịch vụ OAuth2 cho phép bạn sử dụng tệp .csv hoặc .json được lưu trữ trên máy ở một vị trí tiêu chuẩn.
Nói cách khác, làm bất cứ điều gì bạn có thể để tránh giữ thông tin nhạy cảm ở nơi không thuộc về nó. Nếu bạn phải thay đổi ứng dụng của mình để tìm vị trí trên đĩa để đọc các bit nhạy cảm, bạn có thể thiết lập nó một lần trên mỗi máy chủ mục tiêu và chỉ cần đọc nó từ ứng dụng của bạn.
Máy chủ cấu hình
Steeltoe đã chuyển một số thư viện tích hợp Spring nhất định sang C # và thậm chí họ còn hỗ trợ cho các máy chủ Spring Cloud Config . Máy chủ Spring Cloud Config yêu cầu kho lưu trữ Git trên mạng triển khai , nhưng cho phép bạn tùy chỉnh cấu hình ở nơi cần thiết. Nếu ứng dụng của bạn đủ phức tạp (tức là các dịch vụ vi mô) thì đây sẽ là điều đáng để xem xét để giữ cho tên máy chủ được bảo vệ trong cùng một môi trường mà các máy chủ được đặt.
Dòng dưới cùng
Bạn chỉ muốn tránh sự cần thiết phải có thông tin nhạy cảm nhất có thể, nhưng duy trì các cấu hình không nhạy cảm trong kiểm soát nguồn. Nếu bạn không thể tránh tên người dùng / mật khẩu trong tệp cấu hình của mình (tức là một cơ sở dữ liệu khác không có bảo mật tích hợp), hãy tải chỉ một chút từ tệp bên ngoài.