Giới thiệu

Phần mềm điều khiển phiên bản (VCS) là một phần thiết yếu của hầu hết các thực tiễn phát triển phần mềm hiện đại. Trong số các lợi ích khác, các phần mềm như Git, Mercurial, Bazaar, Perforce, CVS và Subversion cho phép nhà phát triển lưu ảnh chụp nhanh lịch sử dự án của họ để cho phép cộng tác tốt hơn, hoàn nguyên về trạng thái trước đó và khôi phục các thay đổi mã không mong muốn và quản lý nhiều phiên bản codebase. Những công cụ này cho phép nhiều nhà phát triển làm việc an toàn trên cùng một dự án và cung cấp những lợi ích đáng kể ngay cả khi bạn không có kế hoạch chia sẻ công việc của mình với người khác.

Mặc dù điều quan trọng là phải lưu trong kiểm soát nguồn, nó cũng quan trọng không kém đối với một số tài sản dự án được lưu giữ ngoài của kho lưu trữ của bạn. Một số dữ liệu như đốm màu nhị phân và tệp cấu hình tốt nhất là không thể kiểm soát nguồn cho hiệu suất và lý do khả năng sử dụng. Nhưng quan trọng hơn, các dữ liệu nhạy cảm như mật khẩu, bí mật và khóa cá nhân không bao giờ được kiểm tra vào kho lưu trữ không được bảo vệ vì lý do bảo mật.

Trong hướng dẫn này, trước tiên chúng tôi sẽ nói về cách kiểm tra dữ liệu nhạy cảm đã được cam kết với kho lưu trữ của bạn và giới thiệu một số chiến lược giảm nhẹ nếu tìm thấy bất kỳ tài liệu nào. Sau đó, chúng tôi sẽ trình bày một số công cụ và kỹ thuật để ngăn chặn việc thêm bí mật vào kho lưu trữ, cách mã hóa dữ liệu nhạy cảm trước khi cam kết và các lựa chọn thay thế cho lưu trữ bí mật an toàn.

Kiểm tra kho lưu trữ Git của bạn cho dữ liệu nhạy cảm

Trước khi thiết lập một hệ thống để quản lý dữ liệu nhạy cảm của bạn, bạn nên kiểm tra xem có bất kỳ tài liệu bí mật nào đã có trong các tệp dự án của bạn hay không.

Quét các dự án của bạn

Nếu bạn biết một chuỗi chính xác mà bạn muốn tìm kiếm, bạn có thể thử sử dụng chức năng tìm kiếm gốc của công cụ VCS để kiểm tra xem giá trị được cung cấp có hiện diện trong bất kỳ cam kết nào không. Ví dụ, với git, một lệnh như thế này có thể tìm kiếm mật khẩu cụ thể:

git grep my_secret $(git rev-list --all)

Điều này sẽ tìm kiếm toàn bộ lịch sử dự án của bạn cho chuỗi được chỉ định.

Một số công cụ chuyên dụng có thể giúp bảo mật bề mặt rộng hơn. Các công cụ như gitrob có thể quét từng kho lưu trữ trong tổ chức GitHub cho tên tệp phù hợp với những người trong danh sách được xác định trước. Các git-secrets dự án có thể quét kho lưu trữ cục bộ cho các bí mật được xác định, dựa trên các mẫu trong cả đường dẫn tệp và nội dung. Các truffleHog công cụ sử dụng một cách tiếp cận khác nhau bằng cách tìm kiếm kho lưu trữ cho các chuỗi entropy cao có khả năng đại diện cho bí mật được tạo ra được sử dụng bởi các ứng dụng. Để kết hợp một số chức năng này vào một công cụ duy nhất, git-all-secrets kết dính với nhau hoặc thực hiện lại các công cụ trên trong giao diện thống nhất.

Tùy chọn giảm thiểu

Nếu bạn phát hiện ra các tệp hoặc dữ liệu không được cam kết, điều quan trọng là phải trả lời thích hợp để giảm thiểu tác động của dữ liệu bị rò rỉ. Hành động phù hợp sẽ phụ thuộc vào việc kho lưu trữ được chia sẻ rộng rãi như thế nào, bản chất của tài liệu tiếp xúc và bạn có muốn xóa tất cả các nội dung bị rò rỉ hoặc chỉ vô hiệu hóa nó hay không.

Nếu thông tin đăng nhập được cam kết với kho lưu trữ dự án của bạn, bước đầu tiên của bạn phải là thay đổi ngay mật khẩu hoặc bí mật để vô hiệu hóa giá trị trước đó. Bước này nên được hoàn thành bất kể nếu hoặc làm thế nào rộng rãi kho lưu trữ được chia sẻ vì một vài lý do. Yêu cầu hợp tác có thể thay đổi trong suốt thời gian tồn tại của dự án dẫn đến phơi nhiễm lớn hơn dự đoán trước đó. Ngay cả khi bạn biết bạn sẽ không bao giờ cố ý chia sẻ dự án của mình, sự cố bảo mật có thể làm rò rỉ dữ liệu cho các bên không mong muốn, vì vậy tốt nhất nên chủ động thay đổi các giá trị hiện tại.

Trong khi bạn nên xoay thông tin đăng nhập bị xâm nhập của mình trong mọi trường hợp, bạn cũng có thể xóa toàn bộ thông tin đăng nhập hoặc tệp bị rò rỉ khỏi lịch sử VCS của mình. Điều này đặc biệt quan trọng đối với dữ liệu nhạy cảm không thể thay đổi, giống như bất kỳ dữ liệu người dùng nào đã vô tình được cam kết. Việc xóa dữ liệu khỏi kho lưu trữ của bạn liên quan đến việc viết lại lịch sử VCS để xóa tệp khỏi các cam kết trước đó. Điều này có thể thực hiện được sử dụng bản địa git lệnh hoặc với sự trợ giúp của một số công cụ chuyên dụng. Điều quan trọng cần lưu ý là ngay cả khi bạn xóa tất cả bản ghi dữ liệu trong kho lưu trữ, bất kỳ ai đã sao chép trước đó codebase vẫn có thể truy cập vào tài liệu nhạy cảm. Hãy ghi nhớ điều này khi đánh giá mức độ ảnh hưởng.

Nếu bạn nghi ngờ rằng các bí mật đã bị xâm phạm, bạn nên xem lại dữ liệu nhật ký được liên kết với các chương trình hoặc dịch vụ đó để xác định xem có truy cập hoặc hành vi bất thường hay không. Điều này có thể có dạng hoạt động bất thường hoặc các yêu cầu thường xuất phát trong mạng nội bộ của bạn đến từ các địa chỉ bạn không kiểm soát. Cuộc điều tra này sẽ giúp bạn xác định các bước tiếp theo phù hợp để bảo vệ cơ sở hạ tầng và dữ liệu của bạn.

Sử dụng tính năng VCS để tránh cam kết bí mật

Trước khi xem xét các công cụ bên ngoài, bạn nên tự làm quen với một số tính năng và khả năng có nguồn gốc từ các công cụ VCS của mình để giúp ngăn không cho dữ liệu không mong muốn vào kho lưu trữ của bạn.

Bỏ qua các tệp nhạy cảm

Cách cơ bản nhất để giữ các tệp có dữ liệu nhạy cảm trong kho lưu trữ của bạn là tận dụng chức năng bỏ qua của VCS ngay từ đầu. VCS "bỏ qua" các tệp (như .gitignore) xác định các mẫu, thư mục hoặc tệp cần được loại trừ khỏi kho lưu trữ. Đây là một tuyến phòng thủ tốt đầu tiên chống lại dữ liệu phơi bày ngẫu nhiên. Chiến lược này hữu ích vì nó không dựa vào công cụ bên ngoài, danh sách các mục bị loại trừ được tự động định cấu hình cho cộng tác viên và dễ dàng thiết lập.

Trong khi VCS bỏ qua chức năng là hữu ích như là một đường cơ sở, nó dựa vào việc giữ các định nghĩa bỏ qua up-to-date. Nó rất dễ dàng để cam kết dữ liệu nhạy cảm vô tình trước khi cập nhật hoặc thực hiện các tập tin bỏ qua. Các mẫu bỏ qua chỉ có mức chi tiết cấp tệp, vì vậy bạn có thể phải cấu trúc lại một số phần của dự án nếu các bí mật được trộn lẫn với mã hoặc dữ liệu khác cần được cam kết.

Sử dụng VCS Hooks để kiểm tra tệp trước khi cam kết

Hầu hết các triển khai VCS hiện đại bao gồm một hệ thống được gọi là "móc" để thực thi các kịch bản trước hoặc sau khi một số hành động nhất định được thực hiện trong kho lưu trữ. Chức năng này có thể được sử dụng để thực thi một tập lệnh để kiểm tra nội dung của các thay đổi đang chờ xử lý đối với tài liệu nhạy cảm. Các đề cập trước đây git-secrets công cụ có khả năng cài đặt pre-commit móc thực hiện kiểm tra tự động cho loại nội dung mà nó đánh giá. Bạn có thể thêm của riêng bạn tập lệnh tùy chỉnh để kiểm tra bất kỳ mẫu nào bạn muốn bảo vệ.

Các móc kho lưu trữ cung cấp một cơ chế linh hoạt hơn nhiều để tìm kiếm và bảo vệ chống lại việc bổ sung các dữ liệu nhạy cảm tại thời điểm cam kết. Sự linh hoạt này tăng lên với chi phí phải viết tất cả hành vi mà bạn muốn triển khai, có khả năng là một quá trình khó khăn tùy thuộc vào loại dữ liệu bạn muốn kiểm tra. Xem xét thêm là các móc không được chia sẻ dễ dàng như các tệp bỏ qua, vì chúng không phải là một phần của kho mà các nhà phát triển khác sao chép. Mỗi cộng tác viên sẽ cần phải thiết lập các móc trên máy của riêng họ, điều này khiến cho việc thực thi trở thành một vấn đề khó khăn hơn.

Thêm tệp vào khu vực dàn dựng một cách rõ ràng

Trong khi nhiều nội địa hóa trong phạm vi, một chiến lược đơn giản có thể giúp bạn chú ý hơn đến các cam kết của bạn là chỉ thêm các mục vào khu vực dàn VCS một cách rõ ràng theo tên. Trong khi thêm tệp bằng ký tự đại diện hoặc mở rộng có thể tiết kiệm thời gian, việc cố ý về từng tệp bạn muốn thêm có thể giúp ngăn các bổ sung ngẫu nhiên có thể được bao gồm. Một tác dụng phụ có lợi của điều này là nó thường cho phép bạn tạo ra các cam kết tập trung và nhất quán hơn, giúp với nhiều khía cạnh khác của công việc cộng tác.

Lưu trữ các bí mật được mã hóa trong kho lưu trữ

Mặc dù trong nhiều trường hợp, bạn nên xoá hoàn toàn dữ liệu nhạy cảm khỏi kho lưu trữ mã của mình, đôi khi cần thiết hoặc hữu ích để bao gồm một số dữ liệu nhạy cảm trong một kho lưu trữ cho những người dùng đặc quyền khác truy cập. Để làm như vậy, các công cụ khác nhau cho phép bạn mã hóa các tệp nhạy cảm trong một kho lưu trữ trong khi vẫn để phần lớn tệp có thể truy cập được với tất cả mọi người.

Triển khai

Có một số phần mềm khác nhau giúp đơn giản hóa mã hóa kho lưu trữ một phần. Hầu hết các công việc từ các nguyên tắc cơ bản giống nhau, nhưng mỗi nguyên tắc cung cấp một triển khai duy nhất có thể cung cấp một số lợi thế hấp dẫn tùy thuộc vào nhu cầu của dự án của bạn.

Một dự án gọi là git-secret (không bị nhầm lẫn với git-secrets công cụ được đề cập trước đó) có thể mã hóa nội dung của các tệp bí mật bằng các khóa GPG của các cộng tác viên đáng tin cậy. Bằng cách tận dụng một trang web tin cậy hiện tại, git-secret người dùng có thể quản lý quyền truy cập vào tệp bằng cách chỉ định người dùng có thể giải mã từng mục. Nếu người dùng đã xuất bản khóa công khai của họ lên máy chủ khóa, bạn có thể cung cấp cho họ quyền truy cập vào nội dung được mã hóa mà không bao giờ yêu cầu họ khóa trực tiếp.

Các git-crypt công cụ hoạt động tương tự như git-secret ở chỗ nó cho phép bạn mã hóa và cam kết các phần của kho lưu trữ của bạn và điều chỉnh quyền truy cập vào các cộng tác viên khác bằng cách sử dụng các khóa GPG của họ. Các git-crypt dự án có thể sử dụng cách mã hóa khóa đối xứng nếu nhóm của bạn không sử dụng GPG hoặc nếu mô hình quản lý đó quá phức tạp đối với trường hợp sử dụng của bạn. Ngoài ra, git-crypt sẽ tự động mã hóa tại thời điểm cam kết và giải mã trên bản sao bằng cách sử dụng git bộ lọc và các thuộc tính khác, giúp đơn giản hoá việc quản lý.

Các Dự án BlackBox là một giải pháp khác dựa trên GPG để cộng tác mã hóa nội dung. Không giống như các công cụ trước, BlackBox hoạt động với nhiều hệ thống điều khiển phiên bản khác nhau để nó có thể được sử dụng trên các dự án khác nhau. Ban đầu được thiết kế như một công cụ cho hệ sinh thái Puppet, nó được tái cấu trúc để hỗ trợ một hệ thống dựa trên plugin mở hơn. BlackBox có thể mã hóa và giải mã các tệp riêng lẻ theo ý muốn, nhưng cũng cung cấp cơ chế gọi trình chỉnh sửa văn bản một cách minh bạch, giải mã tệp, mở trình chỉnh sửa và sau đó mã hóa lại khi lưu.

Ngoài các giải pháp chung ở trên, cũng có một số giải pháp được xây dựng để hoạt động với các loại kho lưu trữ cụ thể. Ví dụ, bắt đầu với phiên bản 5.1, các dự án Ruby on Rails có thể bao gồm bí mật được mã hóa trong kho lưu trữ sử dụng hệ thống thiết lập khóa chính bên ngoài kho lưu trữ.

Ưu điểm

Mã hóa và cam kết dữ liệu bí mật của bạn vào kho lưu trữ của bạn có thể giúp giữ thông tin đăng nhập của bạn luôn cập nhật và đồng bộ hóa với cách mã sử dụng chúng. Điều này có thể tránh trôi dạt giữa các thay đổi trong định dạng hoặc ghi nhãn dữ liệu bí mật và cách mã sử dụng hoặc truy cập nó. Các thay đổi có thể được thực hiện đối với codebase mà không tham chiếu đến tài nguyên bên ngoài.

Ngoài ra, việc giữ bí mật với mã của bạn có thể đơn giản hóa việc triển khai đáng kể. Thay vì kéo thông tin từ nhiều vị trí để có được một hệ thống đầy đủ chức năng, thông tin được đóng gói trong một đơn vị duy nhất, với một số thành phần yêu cầu giải mã. Điều này có thể rất hữu ích nếu bạn không có cơ sở hạ tầng được thiết lập để hỗ trợ một kho lưu trữ bí mật bên ngoài hoặc nếu bạn muốn giảm thiểu số lượng phối hợp cần thiết để triển khai dự án của bạn.

Lợi thế tổng thể của việc sử dụng một công cụ để mã hóa thông tin nhạy cảm trong một kho lưu trữ là mã hóa dễ thực hiện mà không có cơ sở hạ tầng hoặc lập kế hoạch bổ sung. Người dùng có thể chuyển đổi từ lưu trữ bí mật dưới dạng dữ liệu văn bản thuần túy sang một hệ thống được mã hóa bảo mật sau vài phút. Đối với các dự án có một nhà phát triển đơn lẻ hoặc một nhóm nhỏ, tĩnh, những công cụ này có thể lấp đầy tất cả các yêu cầu quản lý bí mật mà không cần thêm sự phức tạp sâu rộng.

Nhược điểm

Như với bất kỳ giải pháp nào, có một số thỏa hiệp với phong cách quản lý bí mật này.

Về cơ bản, bí mật là dữ liệu cấu hình chứ không phải mã. Mặc dù mã được triển khai trong nhiều môi trường có thể giống nhau nhưng cấu hình có thể thay đổi khá nhiều. Bằng cách giữ bí mật với mã trong kho lưu trữ của bạn, sẽ trở nên khó khăn hơn trong việc duy trì cấu hình trên các môi trường khác nhau và khuyến khích tái sử dụng thông tin xác thực theo các cách tác động tiêu cực đến bảo mật.

Tương tự như vậy, việc định cấu hình truy cập nhiều cấp, chi tiết cho các bí mật được mã hóa trong một kho lưu trữ thường rất khó. Mức độ kiểm soát truy cập yêu cầu thường phức tạp hơn nhiều so với những công cụ được sử dụng để mã hóa các bí mật trong VCS, đặc biệt cho các nhóm và dự án lớn. Đưa vào cộng tác viên hoặc xóa người đóng góp khỏi dự án liên quan đến việc mã hóa lại tất cả các tệp có dữ liệu nhạy cảm trong kho lưu trữ. Mặc dù các tiện ích này thường giúp dễ dàng thay đổi mã hóa được sử dụng để bảo vệ các tệp, nhưng những bí mật trong các tệp đó sẽ cũng thế được quay trong những trường hợp này, có thể là một quá trình thủ công khó khăn.

Một điểm quan trọng thường bị bỏ qua là các khóa được sử dụng để giải mã dữ liệu thường được lưu trữ cùng với nội dung được mã hóa. Trên máy tính xách tay của nhà phát triển, các khóa GPG có thể giải mã dữ liệu nhạy cảm thường xuất hiện và có thể sử dụng mà không cần thêm bất kỳ đầu vào nào. Bạn có thể giảm nhẹ phần này bằng cách sử dụng cụm từ mật khẩu GPG, nhưng điều này khó thực thi cho một nhóm lớn. Nếu máy tính xách tay của một thành viên trong nhóm bị xâm phạm, quyền truy cập vào dữ liệu nhạy cảm nhất trong dự án của bạn có thể truy cập được như thể nó ở dạng văn bản thuần túy.

Nói chung, việc bảo vệ bí mật trong một kho lưu trữ trong một thời gian dài có thể khó khăn. Các thao tác đơn giản như thay đổi mã quay lại có thể vô tình giới thiệu lại quyền truy cập đã bị xóa trước đó. Nếu một khóa riêng được hiển thị, các giá trị lịch sử có thể được khôi phục và giải mã từ lịch sử kho lưu trữ. Mặc dù lịch sử VCS cung cấp nhật ký thay đổi mã hóa, không có phương pháp kiểm tra quyền truy cập bí mật để giúp xác định quyền truy cập bất thường.

Sử dụng hệ thống quản lý cấu hình cho quản lý mật

Trải nghiệm đầu tiên của nhiều người dùng với quản lý bí mật tập trung hơn là với các công cụ quản lý cấu hình. Vì các công cụ này chịu trách nhiệm điều phối cấu hình của nhiều máy khác nhau từ một vị trí tập trung, một số cấp quản lý bí mật là cần thiết để đảm bảo rằng các nút chỉ có thể truy cập các giá trị mà chúng yêu cầu.

Triển khai

Túi dữ liệu được mã hóa đầu bếp và đầu bếp cung cấp một số tính năng quản lý bí mật tích hợp cho cơ sở hạ tầng do Chef quản lý. Túi dữ liệu được mã hóa được sử dụng để bảo vệ các giá trị nhạy cảm xuất hiện trong lịch sử sửa đổi hoặc các máy khác sử dụng bí mật được chia sẻ. Chef-vault cho phép bí mật được mã hóa bằng cách sử dụng khóa công khai của máy mục tiêu thay thế, cung cấp bảo mật cao hơn để cô lập khả năng giải mã cho những người nhận dự định.

Tương tự, Con rối của Hiera hệ thống lưu trữ khóa-giá trị có thể được sử dụng với Hiera eyaml để quản lý bí mật an toàn cho các thành phần cơ sở hạ tầng cụ thể. Không giống như một số hệ thống khác, Hiera eyaml nhận thức được cú pháp và cấu trúc của YAML, định dạng tuần tự dữ liệu mà Hiera sử dụng, cho phép nó mã hóa chỉ các giá trị nhạy cảm thay vì toàn bộ tệp. Điều này làm cho nó có thể làm việc với các tệp có chứa dữ liệu được mã hóa bằng cách sử dụng các công cụ bình thường cho hầu hết các tác vụ. Vì các chương trình phụ trợ có thể cắm được, các nhóm có thể triển khai mã hóa GPG để dễ dàng quản lý quyền truy cập.

Saltstack sử dụng Trụ cột để lưu trữ dữ liệu được chỉ định cho một số máy nhất định. Để bảo vệ các mục này, người dùng có thể mã hóa các giá trị YAML bằng cách sử dụng GPG và sau đó cấu hình Trình kết xuất GPG để cho phép Salt giải mã các giá trị khi chạy. Giống như Hiera eyaml, hệ thống này chỉ liên quan đến việc mã hóa dữ liệu nhạy cảm hơn là tệp đầy đủ, cho phép các công cụ chỉnh sửa tệp và các công cụ khác bình thường hoạt động chính xác.

Ansible bao gồm Vault ansible, một hệ thống mã hóa và công cụ dòng lệnh để mã hóa các tệp YAML nhạy cảm trong cấu trúc playbook. Ansible sau đó có thể giải mã một cách minh bạch các tệp bí mật trong thời gian chạy để kết hợp dữ liệu bí mật và không bí mật cần thiết để thực hiện các tác vụ đã cho. Ansible vault mã hóa toàn bộ tập tin chứ không phải là các giá trị, do đó, việc chỉnh sửa yêu cầu giải mã và các công cụ khác không thể hiển thị thông tin thay đổi chính xác. Tuy nhiên, kể từ Ansible 2.3, các biến duy nhất có thể được mã hóa trong các tệp biến, cho người dùng lựa chọn cách họ muốn mã hóa các giá trị nhạy cảm.

Ưu điểm

Những giải pháp này rất phù hợp cho một số thách thức liên quan đến quản lý bí mật trong bối cảnh quản lý cấu hình. Họ có thể dàn xếp quyền truy cập vào các bí mật bằng cách tận dụng hệ thống kiểm kê cơ sở hạ tầng hiện có và các chỉ định vai trò xác định loại truy cập mà mỗi máy yêu cầu. Các cơ chế tương tự đảm bảo rằng mỗi máy có cấu hình chính xác có thể đảm bảo rằng các bí mật chỉ được gửi đến các máy chủ yêu cầu chúng.

Sử dụng các công cụ có nguồn gốc từ các hệ thống quản lý và triển khai cơ sở hạ tầng hiện có của bạn sẽ giảm thiểu chi phí hoạt động của việc thực hiện mã hóa. Việc chuyển các bí mật sang mã hóa dễ dàng hơn bằng cách sử dụng công cụ có nguồn gốc từ môi trường của bạn và việc kết hợp giải mã thời gian thực của bí mật dễ dàng hơn mà không cần các bước bổ sung. Nếu bạn đã sử dụng một hệ thống quản lý cấu hình, việc sử dụng các cơ chế quản lý bí mật của họ có thể sẽ là bước đầu tiên dễ dàng nhất để bảo vệ dữ liệu nhạy cảm của bạn.

Nhược điểm

Việc tích hợp chặt chẽ có nghĩa là người dùng có thể sử dụng các hệ thống hiện có của họ để quản lý các bí mật của họ, nhưng điều đó có nghĩa là các giải pháp này bị khóa cho các công cụ quản lý cấu hình tương ứng của họ. Việc sử dụng hầu hết các chiến lược này trong các ngữ cảnh khác sẽ khó hoặc không thể, có nghĩa là bạn đang thêm một sự phụ thuộc vào các công cụ quản lý cấu hình. Việc tích hợp chặt chẽ với một nền tảng duy nhất cũng có thể làm cho nó có vấn đề đối với các hệ thống bên ngoài yêu cầu truy cập vào dữ liệu. Nếu không có API bên ngoài hoặc lệnh có thể gọi trong một số trường hợp, các bí mật có thể bị "chặn" một cách hiệu quả trừ khi được truy cập thông qua hệ thống quản lý cấu hình, có thể hạn chế.

Nhiều nhược điểm của việc lưu trữ các bí mật được mã hóa trong kho ứng dụng của bạn cũng áp dụng khi lưu trữ các bí mật với hệ thống quản lý cấu hình của bạn. Thay vì có máy tính xách tay với kho ứng dụng của bạn là một vector để thỏa hiệp, bất kỳ máy tính xách tay hoặc máy tính nào có kho lưu trữ quản lý cấu hình cũng sẽ dễ bị tổn thương. Về cơ bản, bất kỳ hệ thống nào có cả giá trị được mã hóa lẫn khóa giải mã sẽ dễ bị tổn thương đối với loại thỏa hiệp này.

Một mối quan tâm có liên quan là, trong khi hệ thống quản lý cấu hình có thể đảm bảo bí mật chỉ có thể truy cập được với các máy chính xác, việc xác định các điều khiển truy cập hạt mịn để hạn chế các thành viên nhóm thường khó khăn hơn. Một số hệ thống chỉ có thể mã hóa bằng một mật khẩu hoặc khóa duy nhất, hạn chế khả năng truy cập vào các bí mật của các thành viên trong nhóm.

Sử dụng dịch vụ quản lý bí mật bên ngoài

Một giải pháp thay thế để lưu trữ các bí mật được mã hóa cùng với mã hoặc trong hệ thống quản lý cấu hình của bạn là sử dụng một dịch vụ chuyên dụng để quản lý dữ liệu nhạy cảm cho cơ sở hạ tầng của bạn. Các dịch vụ này mã hóa và lưu trữ dữ liệu nhạy cảm và phản hồi các yêu cầu được ủy quyền với các giá trị được giải mã. Điều này cho phép các nhà phát triển di chuyển tài liệu nhạy cảm của họ ra khỏi kho của họ và vào một hệ thống được thiết kế để dàn xếp mã hóa, ủy quyền và xác thực cho cả người dùng và ứng dụng của con người.

Triển khai

Dịch vụ quản lý bí mật chuyên dụng như Vault của HashiCorp cung cấp tính linh hoạt tuyệt vời và các tính năng mạnh mẽ để bảo vệ tài liệu nhạy cảm trong khi không hy sinh khả năng sử dụng. Vault bảo vệ dữ liệu ở trạng thái nghỉ và chuyển tiếp và được thiết kế để sử dụng các "phụ trợ" khác nhau để hiển thị các chức năng khác nhau và quản lý sự phức tạp của mã hóa, lưu trữ và xác thực. Một số tính năng chính bao gồm khả năng cấu hình các bí mật động (thông tin ngắn hạn cho các dịch vụ được kết nối, được tạo khi đang di chuyển), mã hóa dữ liệu dưới dạng dịch vụ (mã hóa và lưu trữ dữ liệu từ các dịch vụ bên ngoài và phục vụ lại nội dung đã giải mã khi được yêu cầu bên được ủy quyền) và quản lý bí mật dựa trên hợp đồng thuê (cung cấp quyền truy cập trong một khoảng thời gian nhất định, sau khi truy cập được tự động thu hồi). Kiến trúc có thể cắm của Vault có nghĩa là các chương trình phụ trợ lưu trữ, cơ chế xác thực, v.v. đều có thể thay đổi khi nhu cầu kinh doanh thay đổi.

Quảng trường Keywhiz hệ thống quản lý bí mật là một dịch vụ chuyên dụng khác được sử dụng để cung cấp bảo mật chung cho dữ liệu nhạy cảm. Giống như Vault, Keywhiz cho thấy API mà khách hàng và người dùng có thể sử dụng để lưu trữ và truy cập bí mật. Một tính năng độc đáo mà Keywhiz cung cấp là khả năng phơi bày bí mật bằng cách sử dụng hệ thống tệp FUSE, một hệ thống tệp ảo mà khách hàng có thể gắn kết để truy cập dữ liệu nhạy cảm dưới dạng tệp giả. Cơ chế này cho phép nhiều loại chương trình khác nhau truy cập dữ liệu mà họ cần mà không cần sự trợ giúp của tác nhân hoặc trình bao bọc và cho phép quản trị viên khóa quyền truy cập bằng cách sử dụng các quyền hệ thống tệp bình thường của Unix.

Pinterest Knox là một dịch vụ khác để quản lý bí mật. Nó cung cấp nhiều tính năng tương tự như Vault và Keywhiz. Một tính năng không được tìm thấy trong các hệ thống khác là khả năng xoay các phím theo thời gian bằng cách cung cấp các trạng thái rõ ràng cho các phiên bản chính. Một phiên bản khóa có thể được đánh dấu là chính để chỉ ra rằng đó là bí mật ưa thích hiện tại, đang hoạt động để cho biết rằng phiên bản đó vẫn có thể được sử dụng hoặc không hoạt động để vô hiệu hóa phiên bản. Hệ thống này cho phép quản trị viên cuộn các khóa trên một nhóm máy theo thời gian mà không làm gián đoạn các dịch vụ.

Ưu điểm

Các dịch vụ quản lý bí mật chuyên dụng có nhiều lợi thế hấp dẫn so với các hệ thống khác. Việc giảm tải độ phức tạp của việc bảo mật và quản lý dữ liệu nhạy cảm cho một hệ thống độc lập sẽ loại bỏ sự cần thiết phải giải quyết những mối quan tâm đó trong kho ứng dụng và quản lý cấu hình. Sự tách biệt trách nhiệm này đơn giản hóa mô hình bảo mật hoạt động bằng cách tập trung lưu trữ bí mật và quản lý truy cập thông qua các giao diện được kiểm soát chặt chẽ. Bằng cách cung cấp các giao diện chung để tương tác với hệ thống, người dùng hoặc khách hàng được ủy quyền có thể truy cập vào các bí mật của họ bất kể hệ thống quản lý cấu hình hoặc VCS được sử dụng.

Từ góc độ quản trị, các hệ thống quản lý bí mật cung cấp nhiều tính năng độc đáo không có sẵn trong các công cụ khác. Dễ dàng xoay các khóa mã hóa cũng như các bí mật cơ bản mà chúng bảo vệ là cực kỳ hữu ích cho các triển khai lớn và các hệ thống phức tạp đòi hỏi phải phối hợp nhiều giá trị nhạy cảm khác nhau. Truy cập có thể được điều chỉnh và thu hồi dễ dàng mà không cần triển khai mã hoặc thực hiện bất kỳ thay đổi nào trên toàn đội. Các tính năng như bí mật động cung cấp cho máy chủ quản lý bí mật quyền truy cập vào các dịch vụ bên ngoài như cơ sở dữ liệu để tạo thông tin xác thực mỗi lần sử dụng theo yêu cầu. Truy cập ngắn hạn dựa trên hợp đồng thuê để bí mật hoạt động như một cơ chế tự động để hạn chế hoặc hết hạn quyền truy cập mà không yêu cầu thu hồi rõ ràng.

Một trong những cải tiến quan trọng nhất mà tập trung quản lý bí mật cung cấp là khả năng kiểm toán. Mỗi hệ thống được đề cập ở trên duy trì hồ sơ mở rộng khi các bí mật được thêm, yêu cầu, truy cập hoặc sửa đổi. Điều này có thể hữu ích để phát hiện các dị thường và phát hiện hành vi đáng ngờ và cũng có thể giúp đánh giá mức độ truy cập bất kỳ trong trường hợp có sự thỏa hiệp. Có một cái nhìn tổng thể về dữ liệu nhạy cảm của tổ chức của bạn, các chính sách được thiết lập để kiểm soát truy cập và thông tin về mọi thay đổi hoặc truy xuất thành công và cố gắng đặt các đội ở vị trí tốt để đưa ra các quyết định sáng suốt về an ninh cơ sở hạ tầng.

Nhược điểm

Những bất lợi chính của một hệ thống quản lý bí mật tập trung là chi phí bổ sung nó đòi hỏi, cả về cơ sở hạ tầng và quản lý.

Việc thiết lập một hệ thống tập trung đòi hỏi phải có rất nhiều kế hoạch, kiểm thử và phối hợp trước khi triển khai vào một môi trường sản xuất. Khi cơ sở hạ tầng được thiết lập và chạy, các máy khách phải được cập nhật để truy vấn các API của máy chủ quản lý bí mật hoặc quá trình tác nhân phải được cấu hình để có được các bí mật thay mặt cho các quy trình yêu cầu nó. Các chính sách phải được thiết lập để quyết định ứng dụng, cơ sở hạ tầng và thành viên nhóm nào cần có quyền truy cập vào từng giá trị được bảo vệ.

Do giá trị của dữ liệu mà nó bảo vệ, máy chủ quản lý bí mật trở thành một trong những môi trường bảo mật quan trọng nhất để quản lý. Trong khi tập trung giảm thiểu diện tích bề mặt bạn cần bảo vệ, nó làm cho bản thân hệ thống trở thành mục tiêu có giá trị cao cho các diễn viên độc hại. Mặc dù nhiều giải pháp bao gồm các tính năng như chế độ khóa xuống, khởi động lại dựa trên khóa và nhật ký kiểm tra, truy cập trái phép vào một kho lưu trữ bí mật, hoạt động được giải mã sẽ yêu cầu khắc phục rộng rãi.

Ngoài chi phí cấu hình ban đầu và các yếu tố bảo mật, phục vụ tất cả các dữ liệu nhạy cảm từ một dịch vụ đơn lẻ sẽ giới thiệu một thành phần quan trọng bổ sung cho cơ sở hạ tầng của bạn. Vì các bí mật thường được yêu cầu để khởi động các ứng dụng mới và cho các hoạt động thường xuyên, thời gian ngừng quản lý bí mật có thể gây ra các gián đoạn lớn mà có thể không thể giải quyết được cho đến khi dịch vụ có thể được phục hồi. Tính khả dụng là rất quan trọng đối với một hệ thống chịu trách nhiệm điều phối giữa rất nhiều thành phần khác nhau.

Gói lên

Khi bạn đánh giá các phương pháp bảo vệ dữ liệu nhạy cảm khác nhau và điều phối truy cập cần thiết trong quá trình triển khai, điều quan trọng là cân nhắc giữa sự an toàn, khả năng sử dụng và nhu cầu của dự án của bạn. Các giải pháp được mô tả ở trên bao gồm một loạt các trường hợp sử dụng và cung cấp mức độ khác nhau khả năng mở rộng và bảo vệ.

Lựa chọn tốt nhất cho dự án hoặc tổ chức của bạn sẽ phụ thuộc vào số lượng dữ liệu nhạy cảm mà bạn phải bảo vệ, quy mô nhóm của bạn và các tài nguyên có sẵn để quản lý các giải pháp khác nhau. Trong hầu hết các trường hợp, bạn nên bắt đầu nhỏ và đánh giá lại các nhu cầu quản lý bí mật của mình khi hoàn cảnh của bạn thay đổi. Mặc dù bạn chỉ có thể cần phải bảo vệ một số bí mật và cộng tác với một nhóm nhỏ ngay bây giờ, trong tương lai, sự cân bằng cho các giải pháp chuyên dụng có thể trở nên hấp dẫn hơn.