Thứ năm, 31/08/2017 | 00:00 GMT+7

Giới thiệu về Quản lý Bí mật An toàn với Hệ thống Kiểm soát Phiên bản

Phần mềm kiểm soát version (VCS) là một phần thiết yếu của hầu hết các phương pháp phát triển phần mềm hiện đại. Trong số các lợi ích khác, phần mềm như Git, Mercurial, Bazaar, Perforce, CVS và Subversion cho phép các 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à phục hồi sau các thay đổi mã ngoài ý muốn, đồng thời quản lý nhiều version giống nhau cơ sở mã. 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à mang lại 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 bạn với người khác.

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

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

Kiểm tra Kho lưu trữ Git của bạn để tìm dữ liệu nhạy cảm

Trước khi cài đặ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ó tài liệu bí mật nào đã có trong file 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 root của công cụ VCS để kiểm tra xem giá trị được cung cấp có xuất hiện trong bất kỳ commit nào hay không. Ví dụ: với git , một lệnh như thế này có thể tìm kiếm một password 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 làm nổi bật bí mật một cách rộng rãi hơn. Các công cụ như gitrob có thể quét từng repository trong tổ chức GitHub để tìm các tên file phù hợp với các tên file trong danh sách được định nghĩa . Dự án git-secret có thể quét local các repository để tìm các bí mật đã xác định, dựa trên các mẫu trong cả đường dẫn và nội dung file . Công cụ truffleHog sử dụng một cách tiếp cận khác bằng cách tìm kiếm repository các chuỗi entropy cao có khả năng đại diện cho các bí mật được tạo ra bởi các ứng dụng. Để kết hợp một số chức năng này thành một công cụ duy nhất, git-all- secret kết hợp với nhau hoặc thực hiện lại các công cụ trên trong một giao diện thống nhất.

Các tùy chọn giảm thiểu

Nếu bạn phát hiện ra các file hoặc dữ liệu đáng ra không được commit , điều quan trọng là phải phản hồi thích hợp để giảm thiểu tác động của dữ liệu bị rò rỉ. Quy trình hành động phù hợp sẽ phụ thuộc vào mức độ chia sẻ của repository , bản chất của tài liệu bị lộ và liệu bạn có muốn xóa tất cả các đề cập đến nội dung bị rò rỉ hay chỉ làm mất hiệu lực của nó.

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

Mặc dù bạn nên xoay vòng thông tin đăng nhập bị xâm phạm của bạn trong mọi trường hợp, bạn cũng có thể cần xóa hoàn toàn thông tin đăng nhập bị rò rỉ hoặc file khỏi lịch sử VCS của bạn . Điều này đặc biệt quan trọng đối với những dữ liệu nhạy cảm không thể thay đổi được, chẳng hạn như bất kỳ dữ liệu user nào đã bị cố ý sử dụng. Xóa dữ liệu khỏi repository của bạn bao gồm việc viết lại lịch sử VCS để xóa file khỏi các commit trước đó. Điều này có thể được thực hiện bằng cách sử dụng các lệnh git root 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 repository lưu trữ, bất kỳ ai trước đó đã sao chép cơ sở mã vẫn có thể có quyền truy cập vào tài liệu nhạy cảm. Hãy nhớ điều này khi đánh giá mức độ ảnh hưởng.

Nếu bạn nghi ngờ rằng bí mật đã bị xâm phạm, bạn nên xem lại dữ liệu log được liên kết với các chương trình hoặc dịch vụ đó để cố gắng xác định xem có hành vi hoặc truy cập bất thường nào không. Điều này có thể ở dạng hoạt động bất thường hoặc các yêu cầu thường bắt nguồn từ mạng nội bộ của bạn đến từ các địa chỉ mà 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 thích hợp để bảo vệ cơ sở hạ tầng và dữ liệu .

Sử dụng các tính năng VCS để tránh vi phạm 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ó sẵn trong các công cụ VCS của bạn để giúp ngăn việc đưa dữ liệu không mong muốn vào repository của bạn.

Bỏ qua các file nhạy cảm

Cách cơ bản nhất để giữ các file có dữ liệu nhạy cảm ra khỏi repository của bạn là tận dụng chức năng bỏ qua của VCS ngay từ đầu. Các file "bỏ qua" VCS (như .gitignore ) xác định các mẫu, folder hoặc file cần được loại trừ khỏi repository . Đây là một tuyến phòng thủ tốt đầu tiên chống lại việc vô tình làm lộ dữ liệu. 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 cấu hình cho các cộng tác viên và rất dễ cài đặt .

Mặc dù chức năng bỏ qua VCS hữu ích như một cơ sở, nhưng nó dựa vào việc giữ cho các định nghĩa bỏ qua được cập nhật. Rất dễ vô tình xác nhận dữ liệu nhạy cảm trước khi cập nhật hoặc triển khai file bỏ qua. Các mẫu bỏ qua chỉ có mức độ chi tiết ở cấp độ file , vì vậy bạn có thể phải cấu trúc lại một số phần trong dự án của bạn nếu các bí mật bị trộn lẫn với mã hoặc dữ liệu khác cần được commit .

Sử dụng VCS Hooks để kiểm tra file trước khi commit

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à “hook” để thực thi các tập lệnh trước hoặc sau khi thực hiện các hành động nhất định trong repository lưu trữ. Chức năng này được dùng để thực thi một tập lệnh nhằm 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ông cụ git-secret đã đề cập trước đây có khả năng cài đặt pre-commit móc pre-commit để 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ác tập lệnh tùy chỉnh của riêng mình để kiểm tra bất kỳ mẫu nào bạn muốn bảo vệ.

Các móc repository cung cấp một cơ chế linh hoạt hơn nhiều để tìm kiếm và đề phòng việc bổ sung dữ liệu nhạy cảm tại thời điểm commit . Tính linh hoạt tăng lên này đi kèm với cái giá phải trả là phải viết kịch bản cho tất cả các hành vi bạn muốn thực hiện, điều này có thể 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. Một lưu ý bổ sung là các hook không được chia sẻ dễ dàng như các file bỏ qua, vì chúng không phải là một phần của repository mà các nhà phát triển khác sao chép. Mỗi người đóng góp cần cài đặt các hook trên máy của riêng họ, điều này khiến việc thực thi trở thành một vấn đề khó khăn hơn.

Thêm file vào vùng dàn một cách rõ ràng

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

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

Mặc dù trong nhiều trường hợp, bạn nên xóa hoàn toàn dữ liệu nhạy cảm khỏi repository mã của bạn , nhưng đôi khi, việc đưa một số dữ liệu nhạy cảm vào repository cho những user có quyền khác là cần thiết hoặc hữu ích. Để làm như vậy, nhiều công cụ khác nhau cho phép bạn mã hóa các file nhạy cảm trong repository lưu trữ trong khi vẫn để phần lớn file có thể truy cập được cho 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 việc mã hóa một phần repository . Hầu hết hoạt động 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 cách triển khai duy nhất có thể mang lại một số lợi thế hấp dẫn tùy thuộc vào nhu cầu dự án của bạn.

Một dự án có tên git-bí mật (không nên nhầm lẫn với git-secrets công cụ đề cập trước đó) có thể mã hóa các nội dung của file bí mật với các phím GPG cộng tác viên tin cậy . Bằng cách tận dụng một mạng tin cậy hiện có, user git-secret có thể quản lý quyền truy cập vào các file bằng cách chỉ định user có thể giải mã từng mục. Nếu user đã xuất bản public key của họ lên server 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 cần trực tiếp yêu cầu họ cung cấp khóa.

Công cụ git-crypt hoạt động tương tự như git-secret ở chỗ nó cho phép bạn mã hóa và commit các phần của repository của bạn và điều chỉnh quyền truy cập vào những người đóng góp khác bằng cách sử dụng các khóa GPG của họ. Dự án git-crypt có thể sử dụng mã hóa khóa đối xứng theo cách khác nếu group của bạn không sử dụng GPG hoặc nếu mẫu 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 commit và giải mã trên bản sao bằng cách sử dụng bộ lọc git và các thuộc tính khác nhau, giúp đơn giản hóa việc quản lý.

Dự án Yetox là một giải pháp khác dựa vào GPG để cộng tác mã hóa nội dung. Không giống như các công cụ trước đây, BlackBox hoạt động với nhiều hệ thống điều khiển version khác nhau để nó được 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 cấu trúc lại để hỗ trợ một hệ thống dựa trên plugin mở hơn. Blackox có thể mã hóa và giải mã các file riêng lẻ theo ý muốn, nhưng cũng cung cấp một cơ chế để gọi editor một cách minh bạch, công cụ này sẽ giải mã file , mở editor 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 repository cụ thể. Ví dụ: bắt đầu từ version 5.1, các dự án Ruby on Rails có thể bao gồm các bí mật được mã hóa trong repository lưu trữ bằng cách sử dụng một hệ thống cài đặt khóa chính bên ngoài repository .

Ưu điểm

Mã hóa và commit dữ liệu bí mật của bạn vào repository của bạn có thể giúp giữ cho thông tin đăng nhập của bạn được cập nhật và đồng bộ với cách mã sử dụng chúng. Điều này có thể tránh được sự thay đổi giữa các thay đổi trong định dạng dữ liệu bí mật hoặc nhãn 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 cơ sở mã mà không cần tham chiếu đến tài nguyên bên ngoài.

Ngoài ra, giữ bí mật bằng 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í xuống để 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 cài đặt để hỗ trợ repository 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ế chung của việc sử dụng công cụ mã hóa thông tin nhạy cảm trong repository lưu trữ là việc mã hóa dễ thực hiện mà không cần thêm cơ sở hạ tầng hoặc kế hoạch. User 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, an toàn trong vài phút. Đối với các dự án có một nhà phát triển duy nhất hoặc một group nhỏ, tĩnh, những công cụ này có thể đáp ứng tất cả các yêu cầu quản lý bí mật mà không làm tăng thêm độ phức tạp.

Nhược điểm

Như với bất kỳ giải pháp nào, có một số đánh đổi đối 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, không phải mã. Mặc dù mã được triển khai trong các môi trường khác nhau có thể giống nhau, nhưng cấu hình có thể khác nhau khá nhiều. Bằng cách giữ bí mật với mã trong repository lưu trữ của bạn, việc duy trì cấu hình trên các môi trường khác nhau trở nên khó khăn hơn và khuyến khích sử dụng lại thông tin xác thực theo những cách ảnh hưởng tiêu cực đến bảo mật.

Tương tự, việc cấu hình quyền truy cập chi tiết, nhiều cấp vào các bí mật được mã hóa trong một repository thường rất khó khăn. 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 mức độ dễ dàng được mô hình hóa bởi các công cụ được sử dụng để mã hóa bí mật trong VCS, đặc biệt là đối với các group và dự án lớn. Đưa cộng tác viên hoặc xóa cộng tác viên khỏi dự án liên quan đến việc mã hóa lại tất cả các file có dữ liệu nhạy cảm trong repository 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ệ file , nhưng bí mật trong các file đó cũng nên được xoay vòng trong những trường hợp này, đâ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 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 notebook của nhà phát triển, các phím GPG có thể giải mã dữ liệu nhạy cảm thường hiện diện và có thể sử dụng được mà không cần thêm bất kỳ đầu vào nào. Bạn có thể giảm nhẹ điều này phần nào bằng cách sử dụng passphrase (password bảo vệ) GPG, nhưng điều này rất khó thực thi đối với một group lớn. Nếu notebook của thành viên trong group bị xâm phạm, bạn có thể truy cập vào dữ liệu nhạy cảm nhất trong dự án của bạn 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 repository trong một thời gian dài có thể khó khăn. Các thao tác đơn giản như quay lại thay đổi mã có thể vô tình giới thiệu lại quyền truy cập đã bị xóa trước đó. Nếu private key bị lộ, các giá trị lịch sử có thể được khôi phục và giải mã từ lịch sử repository . Mặc dù lịch sử VCS cung cấp log thay đổi mã hóa, không có phương pháp kiểm tra truy cập bí mật nào để giúp xác định truy cập bất thường.

Sử dụng Hệ thống quản lý cấu hình để quản lý bí mật

Trải nghiệm đầu tiên của nhiều user với việc 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. Bởi 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 node chỉ có thể truy cập các giá trị mà chúng yêu cầu.

Triển khai

Chef -vault được mã hóa túi dữ liệu 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ý. Các túi dữ liệu được mã hóa được sử dụng để bảo vệ các giá trị nhạy cảm không 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 các bí mật được mã hóa bằng cách sử dụng public key của máy mục tiêu, cung cấp bảo mật hơn nữa để cô lập khả năng giải mã cho người nhận dự định.

Tương tự, hệ thống lưu trữ key-value Hiera của Puppet được dùng với Hiera eyaml để quản lý bí mật một cách 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ự hóa dữ liệu mà Hiera sử dụng, cho phép nó chỉ mã hóa các giá trị nhạy cảm thay vì toàn bộ file . Điều này giúp bạn có thể làm việc với các file chứa dữ liệu được mã hóa bằng các công cụ thông thường cho hầu hết các việc . Vì các backend có thể cắm được, các group có thể triển khai mã hóa GPG để dễ dàng quản lý quyền truy cập.

Saltstack sử dụng Pillars để 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, user có thể mã hóa các giá trị YAML bằ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ị trong thời gian chạy. Giống như Hiera eyaml, hệ thống này chỉ mã hóa dữ liệu nhạy cảm chứ không phải toàn bộ file , cho phép các công cụ chỉnh sửa file và khác biệt thông thường hoạt động chính xác.

Ansible bao gồm Ansible Vault , một hệ thống mã hóa và công cụ dòng lệnh để mã hóa các file YAML nhạy cảm trong cấu trúc playbook. Ansible sau đó có thể giải mã minh bạch các file 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 nhiệm vụ nhất định. Ansible vault mã hóa toàn bộ file thay vì 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 biệt 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 đơn có thể được mã hóa trong các file biến , cho phép user lựa chọn cách họ muốn mã hóa các giá trị nhạy cảm.

Ưu điểm

Các 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ể sắp 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 role xác định loại quyền truy cập mà mỗi máy yêu cầu. Các cơ chế tương tự đảm bảo mỗi máy có được cấu hình chính xác có thể đảm bảo bí mật chỉ được chuyển đến các server yêu cầu chúng.

Việc sử dụng các công cụ có nguồn root từ 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 triển khai mã hóa. Việc chuyển các bí mật sang mã hóa bằng cách sử dụng công cụ có sẵn trong môi trường của bạn sẽ dễ dàng hơn và việc kết hợp giải mã thời gian chạy các bí mật mà không cần thực hiện thêm các bước cũng đơn giản hơn. Nếu bạn đang sử dụng 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 đi kèm 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ẽ nghĩa là user có thể sử dụng hệ thống hiện có để quản lý bí mật của họ, nhưng điều đó nghĩa là các giải pháp này bị khóa với các công cụ quản lý cấu hình tương ứng của họ. Sử dụng hầu hết các chiến lược này trong các bối cảnh khác sẽ khó hoặc không thể, nghĩa là bạn đang thêm phụ thuộc vào chính các công cụ quản lý cấu hình. Việc tích hợp chặt chẽ vào một nền tảng duy nhất cũng có thể gây ra vấn đề cho các hệ thống bên ngoài yêu cầu quyền 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ị “bẫy” 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, điều này có thể bị hạn chế.

Nhiều nhược điểm của việc lưu trữ bí mật được mã hóa trong repository ứng dụng của bạn cũng áp dụng khi lưu trữ bí mật bằng hệ thống quản lý cấu hình của bạn. Thay vì để notebook có kho ứng dụng của bạn là vật trung gian cho sự xâm phạm, bất kỳ notebook hoặc máy tính nào có kho quản lý cấu hình cũng sẽ dễ bị tấn công. Về cơ bản, bất kỳ hệ thống nào có cả giá trị được mã hóa và khóa giải mã sẽ dễ bị ảnh hưởng bởi loại xâm nhập này.

Một mối quan tâm 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 vào đúng máy, việc xác định các kiểm soát truy cập chi tiết để hạn chế các thành viên trong group thường khó hơn. Một số hệ thống chỉ có thể mã hóa bằng một password hoặc khóa duy nhất, hạn chế khả năng phân vùng quyền truy cập bí mật của các thành viên trong group .

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

Một giải pháp thay thế cho việc 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 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 bằng 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 repository của họ và vào một hệ thống được thiết kế để sắp xếp mã hóa, ủy quyền và xác thực cho cả user và ứng dụng.

Triển khai

Các dịch vụ quản lý bí mật chuyên dụng như HashiCorp's Vault cung cấp tính linh hoạt cao 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 làm mất khả năng sử dụng. Vault bảo vệ dữ liệu ở trạng thái nghỉ và khi truyền và được thiết kế để sử dụng nhiều " backend " khác nhau để thể hiện 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 bí mật động (thông tin xác thực 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 như một dịch vụ (mã hóa và lưu trữ dữ liệu từ các dịch vụ bên ngoài và cung cấp lại nội dung đã giải mã khi được yêu cầu làm như vậy bên được ủy quyền) và quản lý bí mật dựa trên cho thuê (cung cấp quyền truy cập trong một khoảng thời gian nhất định, sau đó quyền truy cập sẽ tự động bị thu hồi). Kiến trúc có thể cắm của Vault nghĩa là các backend lưu trữ, cơ chế xác thực, v.v. đều có thể swap khi nhu cầu kinh doanh thay đổi.

Hệ thống quản lý bí mật Keywhiz của Square 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 tiết lộ các API mà khách hàng và user 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 tiết lộ bí mật bằng cách sử dụng hệ thống file FUSE, một hệ thống file ảo mà khách hàng có thể mount để truy cập dữ liệu nhạy cảm dưới dạng file giả. Cơ chế này cho phép nhiều loại chương trình khác nhau truy cập vào dữ liệu mà chúng cần mà không cần sự trợ giúp của tác nhân hoặc shell bọc và nó cho phép administrator khóa quyền truy cập bằng cách sử dụng quyền hệ thống file Unix thông thường.

Knox của Pinterest là một dịch vụ khác để quản lý bí mật. Nó cung cấp nhiều tính năng giống 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 khóa theo thời gian bằng cách cung cấp trạng thái rõ ràng cho các version khóa. Một version khóa có thể được đánh dấu là chính để cho biết rằng đó là bí mật được ưu tiên hiện tại, hoạt động để cho biết rằng đó là version vẫn được dùng hoặc không hoạt động để vô hiệu hóa version .Hệ thống này cho phép administrator tung các khóa trên một group máy theo thời gian mà không làm gián đoạn dịch vụ.

Ưu điểm

Các dịch vụ quản lý bí mật chuyên dụng có nhiều ưu điểm hấp dẫn hơn các hệ thống khác. Giảm bớt sự phức tạp của việc bảo mật và quản lý dữ liệu nhạy cảm vào một hệ thống độc lập loại bỏ nhu cầu giải quyết những mối quan tâm đó trong repository quản lý ứng dụng và cấu hình. Sự phân tách 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 vào việc lưu trữ bí mật và quản lý quyền 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, user hoặc khách hàng được ủy quyền có thể truy cập bí mật của họ dù hệ thống quản lý cấu hình hoặc VCS được sử dụng.

Từ góc độ quản trị, hệ thống quản lý bí mật cung cấp nhiều tính năng độc đáo không có ở các công cụ khác. Việc xoay vòng dễ dàng các khóa mã hóa cũng như những bí mật cơ bản mà chúng bảo vệ 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 hợp nhiều giá trị nhạy cảm khác nhau. Quyền 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 server quản lý bí mật quyền truy cập vào các dịch vụ bên ngoài như database để tạo thông tin xác thực cho mỗi lần sử dụng theo yêu cầu. Quyền truy cập bí mật dựa trên hợp đồng thuê ngắn hạn 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à quản lý bí mật tập trung mang lại là khả năng kiểm tra. Mỗi hệ thống được đề cập ở trên duy trì profile mở rộng về thời điểm các bí mật được thêm vào, 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 điểm bất thường và phát hiện hành vi đáng ngờ, đồng thời cũng có thể giúp đánh giá mức độ của bất kỳ quyền truy cập nào trong trường hợp có sự xâm phạm. Việc 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 policy được đặt ra để kiểm soát quyền 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 đưa các group vào vị trí thuận lợi để đưa ra quyết định sáng suốt về bảo mật cơ sở hạ tầng.

Nhược điểm

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

Việc cài đặt một hệ thống tập trung đòi hỏi phải lập kế hoạch, kiểm tra và phối hợp tốt trước khi triển khai vào môi trường production . Sau khi cơ sở hạ tầng được cài đặt và chạy, các client phải được cập nhật để truy vấn API của server quản lý bí mật hoặc một quy trình tác nhân phải được cấu hình để lấy bí mật thay mặt cho các quy trình yêu cầu nó. Các policy phải được cài đặt để chỉ định các ứng dụng, cơ sở hạ tầng và các thành viên trong group phải 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ệ, server 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 việc tập trung hóa giảm thiểu diện tích bề mặt bạn cần bảo vệ, nó khiến bản thân hệ thống trở thành mục tiêu có giá trị cao cho các tác nhâ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, khởi động lại dựa trên khóa và log kiểm tra, nhưng việc truy cập trái phép vào một repository bí mật đang hoạt động, được giải mã sẽ yêu cầu biện pháp 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, việc cung cấp tất cả dữ liệu nhạy cảm từ một dịch vụ duy nhất 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ì bí mật thường được yêu cầu để khởi động ứng dụng mới và cho các hoạt động thông thường, thời gian ngừng hoạt động của quản lý bí mật có thể gây ra những gián đoạn lớn mà có thể không giải quyết được cho đến khi có thể khôi phục dịch vụ. 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 phối hợp giữa nhiều thành phần khác nhau.

Kết thúc

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 quyền truy cập cần thiết trong quá trình triển khai, điều quan trọng là phải xem xét sự cân bằng giữa bảo mật, 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 trải qua nhiều trường hợp sử dụng và cung cấp khả năng mở rộng và bảo vệ ở các mức độ khác nhau.

Sự lựa chọn tốt nhất cho dự án hoặc tổ chức của bạn có thể sẽ phụ thuộc vào lượng dữ liệu nhạy cảm bạn phải bảo vệ, quy mô group của bạn và các nguồn lực 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 từ việc nhỏ và đánh giá lại nhu cầu quản lý bí mật khi hoàn cảnh của bạn thay đổi. Mặc dù bây giờ bạn có thể chỉ cần bảo vệ một vài bí mật và cộng tác với một group nhỏ, nhưng trong tương lai, việc đánh đổi các giải pháp chuyên dụng có thể trở nên hấp dẫn hơn.


Tags:

Các tin liên quan