Ý tưởng cơ bản
- Máy chủ được cấu hình phải được cài đặt chứng chỉ (có khóa riêng).
- Khi thiết lập trình quản lý cấu hình cục bộ của nút đích (LCM), bạn phải chỉ định Dấu vân tay của chính chứng chỉ đó. Điều này cho LCM biết chứng chỉ cục bộ nào (hoặc chính xác hơn là khóa riêng của chứng chỉ nào) sẽ được sử dụng để giải mã thông tin xác thực.
- Cấu hình DSC của bạn phải trỏ đến một tệp chỉ chứa chứng chỉ (khóa chung) của cùng chứng chỉ đó. Điều này được thực hiện trong dữ liệu cấu hình, vì vậy bạn có thể chỉ định một chứng chỉ khác nhau cho mỗi nút, nếu bạn có ý định sử dụng cùng một cấu hình cho mỗi nút.
- Khi Bộ Tài chính được tạo ra, các khóa công khai được sử dụng bởi các máy tạo Bộ Tài chính để encypt các chứng chỉ.
- Khi LCM trên nút đích lấy cấu hình từ máy chủ pull (ở dạng MOF), nó sử dụng khóa riêng của chứng chỉ được xác định bởi vân tay để giải mã đối tượng thông tin xác thực.
Trong một số chi tiết
Khóa chung không thể được sử dụng để giải mã và bạn không chia sẻ khóa riêng với thế hệ cấu hình cũng như máy phân phối.
Có vẻ như bạn đang xem xét quy trình làm việc như thể có một chứng chỉ duy nhất được sử dụng cho tất cả các thông tin đăng nhập. Bạn có thể làm điều đó, nhưng tôi nghĩ ý tưởng là mỗi nút có cặp khóa riêng.
"Người dùng trung bình" mà tôi đang dùng có nghĩa là người dùng không phải quản trị viên, không thể xuất khóa riêng của chứng chỉ (trừ khi được cấp quyền) và vì bạn sẽ không di chuyển khóa này xung quanh, nên có rất ít cơ hội nó đang bị phơi bày Nếu người dùng là quản trị viên, thì dĩ nhiên họ có quyền truy cập.
Nhiều khả năng việc lưu trữ thông tin văn bản đơn giản trong một cấu hình sẽ được hiển thị cho dù đó là thông qua cấu hình powershell chưa được xử lý hoặc MOF được tạo. Nếu nó không được mã hóa, thì bạn phải bảo mật:
- Vị trí chia sẻ hệ thống tập tin / mạng nơi cấu hình được lưu trữ
- Fs / share nơi lưu trữ MOF được tạo
- Fs / share nơi bạn lưu trữ MOF trên máy chủ pull
- Đảm bảo máy chủ kéo đang chạy qua SSL (dù sao bạn cũng nên làm điều này)
- Đảm bảo có xác thực trên máy chủ Pull, nếu không, bất kỳ truy vấn ẩn danh nào cũng có thể truy xuất cấu hình có thông tin xác thực.
Tôi nghĩ rằng các thông tin an toàn trong DSC được thực hiện khá độc đáo, nhưng đó là một chút thử thách để thiết lập với nó ban đầu.
AD PKI làm cho điều này dễ dàng hơn
Nếu bạn đang sử dụng Enterprise PKI trong môi trường AD của mình, rất có thể mỗi máy được thiết lập để đăng ký tự động với CA, do đó, nó đã có chứng chỉ dành riêng cho máy tự làm mới. Nó có các cài đặt cần thiết được sử dụng cho mục đích này.
Làm thế nào tôi thực hiện điều này
Vì công cụ hiện tại rất trống cho DSC, nên có khả năng bạn sẽ tạo quy trình làm việc của riêng mình để tạo cấu hình và viết tập lệnh để hỗ trợ.
Trong trường hợp của tôi, tôi đã có các tập lệnh riêng biệt để tạo LCM meta MOF và để tạo cấu hình thực tế của nút, vì vậy các bước của tôi để bảo mật thông tin đăng nhập được phân chia giữa cả hai.
Trong tập lệnh tạo LCM, tôi thực sự truy vấn CA cho miền để tìm chứng chỉ tương ứng với tên máy chủ của máy đang được cấu hình. Tôi lấy lại chứng chỉ (CA không có khóa riêng, chỉ công khai) và lưu nó vào một đường dẫn để sử dụng sau. Meta MOF được cấu hình để sử dụng vân tay của chứng chỉ.
Trong tập lệnh cấu hình nút, tôi đặt dữ liệu cấu hình để sử dụng tệp cert (chỉ một lần nữa khóa công khai). Khi MOF được tạo, thông tin đăng nhập được mã hóa với chứng chỉ đó và chỉ có thể được giải mã bằng khóa riêng trên nút cụ thể.
Tài liệu tham khảo
Tôi đã tham khảo kinh nghiệm của bản thân mình ở trên, nhưng bài viết này là một sự trợ giúp lớn trên đường đi:
https://devbloss.microsoft.com/powershell/want-to-secure-credentials-in-windows-powershell-desired-state- cấu hình
Tôi đã phải tự điền vào một số lỗ hổng. Một điều cần lưu ý trong các ví dụ họ hiển thị, là họ cung cấp Thumprint
cấu hình nút. Điều này không cần thiết cho cấu hình nút; họ chỉ tạo cấu hình meta và cấu hình meta LCM cùng một lúc và sử dụng dữ liệu cấu hình để lưu trữ dấu vân tay để sử dụng ở đó.
Đoạn cuối đó có thể gây nhầm lẫn, nhưng nó có ý nghĩa hơn trong bối cảnh của bài viết. Nếu bạn không tạo cả hai cấu hình cùng một lúc thì ví dụ của chúng có vẻ lạ. Tôi đã thử nó; Thumbprint
không bắt buộc trong dữ liệu cấu hình để mã hóa thông tin đăng nhập. CertificateFile
mặc dù được yêu cầu và nó phải có trong dữ liệu cấu hình, vì vậy nếu bạn không sử dụng dữ liệu cấu hình trước đó, bạn sẽ có ngay bây giờ.