Thực hành tốt nhất cho thông tin nhạy cảm trong kiểm soát nguồn


8

Tôi biết chủ đề này đã được đề cập khá nhiều nhưng tôi không thể tìm thấy câu trả lời cho tình huống cụ thể của mình.

Hiện tại, tôi đang sử dụng .gitignoređể loại trừ nội dung nhạy cảm và giữ nó (tệp cấu hình, v.v.) riêng biệt. Khi cơ sở mã của tôi mở rộng thành nhiều dự án hơn, điều này trở nên khá khó quản lý và tôi cũng không có cách nào thực sự để theo dõi các thay đổi hoặc sao lưu các tệp đúng cách.

Có một số công cụ cho vấn đề này, như git-secret, Hashicorp Vaultgit-cryptnhưng không ai trong số những công việc với Windows, nơi tôi làm tất cả những phát triển của tôi (vì nhiều lý do).

Hiện tại, tôi là nhà phát triển duy nhất làm việc trong công ty của mình mà không có kế hoạch mở rộng. Kiểm soát nguồn (Gitlab) chủ yếu được sử dụng để tham khảo và khả năng ghi lại các thay đổi của riêng tôi. Việc đẩy một vài kết nối hoặc tập tin cấu hình vào kiểm soát nguồn sẽ là một vấn đề hoặc rủi ro lớn? Thông tin đó hiện đang nằm trong ổ đĩa mạng, không được bảo mật (ngoại trừ quyền NTFS)

Tôi có ý tưởng là thực tiễn tốt nhất là không đẩy công cụ này vào kiểm soát nguồn nhưng tôi có một cá thể Gitlab được lưu trữ riêng không thể truy cập bên ngoài mạng cục bộ - điều này có nghĩa là có ít rủi ro hơn?


Tại sao bạn không thể sử dụng Hashicorp Vault trên Windows? Trang tải xuống chính thức bao gồm tệp nhị phân cho Windows: vaultproject.io/doads.html
VaaChar

git-secret cũng hỗ trợ Windows bash: github.com/sobolevn/git-secret/pull/123
VaaChar

Thật tuyệt, đó không phải là trên trang web bí mật chính. Tôi sẽ thử ngay
Lỗi cú pháp

Cụ thể bạn bao gồm những gì trong cấu hình nhạy cảm của bạn? Nếu đó là mật khẩu, thì bạn cần xem xét các tùy chọn để tránh cần hoàn toàn mật khẩu.
Berin Loritsch

1
Có một câu chuyện kể về một anh chàng được thanh toán $ 14k cho AWS vì anh ta đã lưu trữ các khóa của mình trong kiểm soát phiên bản riêng tư, nhưng đăng nó công khai trên github trong tất cả 10 phút để chia sẻ với bạn bè.
Karl Bielefeldt

Câu trả lời:


5

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.


2

Nơi tốt nhất để lưu trữ thông tin nhạy cảm là một cửa hàng được xây dựng có mục đích giống như Hashicorp Vaulthỗ trợ Windows.

Nếu (vì bất kỳ lý do gì) bạn không thể sử dụng điều này, bạn cũng có thể sử dụng git-secretcũng hỗ trợ Windows. Hỗ trợ cho Windows đã được thêm vào git-secrettrong PR này: https://github.com/sobolevn/git-secret/pull/123

git-crypt cũng có hỗ trợ thử nghiệm cho Windows:

https://github.com/AGWA/git-crypt/wiki/Installation

/programming/43040370/how-to-install-git-crypt-in-windows

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.