VPN trước khi đăng nhập trên macOS: mở khóa, cửa sổ đăng nhập, phiên
Mở khóa FileVault, cửa sổ đăng nhập và phiên người dùng là các giai đoạn riêng biệt. Một ứng dụng máy tính khởi động khi đăng nhập chỉ giải quyết giai đoạn cuối cùng.
Đây là một niềm tin khiến người ta mất cả tuần: rằng một chiếc Mac chỉ có một thời điểm gọi là trước khi đăng nhập và ứng dụng VPN hoặc khởi động lúc đó hoặc không. Thực tế máy có ít nhất ba thời điểm mà quyền truy cập mạng quan trọng, được phân biệt bởi ai được phép giữ thông tin xác thực tại thời điểm đó. Ứng dụng khởi chạy từ một mục đăng nhập chỉ bao phủ đúng một trong số đó, và đó là thời điểm cuối cùng.
Huyền thoại rằng một cài đặt bao trùm toàn bộ quá trình khởi động
Đọc lại trang sản phẩm và tìm xem tính năng nêu tên giai đoạn nào. Hộp kiểm ghi khởi động khi đăng nhập nghĩa là một mục đăng nhập, chạy sau khi đã có phiên người dùng. Hộp kiểm ghi kết nối khi cần nghĩa là ứng dụng mở kết nối khi lưu lượng khớp với một quy tắc, điều này vẫn đòi hỏi ứng dụng và thông tin xác thực của nó phải sẵn có.
Cả hai đều không chạm tới quá trình khởi động. Đây không phải là giới hạn mà nhà cung cấp quên gỡ bỏ; đây là điều hệ điều hành cho phép. Trước khi ổ đĩa được mở khóa không có hệ thống đang chạy để khởi chạy ứng dụng, và sau khi đăng xuất, bí mật của người dùng rời đi cùng phiên. Hai bức tường riêng biệt, và không bức nào nhường cho một hộp kiểm khác.
Khi tách các giai đoạn ra, câu hỏi ban đầu đổi hình dạng. Thay vì hỏi VPN có khởi động trước khi đăng nhập hay không, bạn hỏi thời điểm nào trong ba thời điểm cụ thể phải hoạt động, rồi phát hiện rằng mỗi thời điểm có một chủ sở hữu khác nhau: lớp mã hóa, phần mở rộng mạng hoặc phiên người dùng.
Điều gì thực sự xảy ra ở mỗi giai đoạn
Quá trình khởi động bắt đầu bằng một ổ đĩa được mã hóa phải được mở khóa trước khi có một hệ thống dùng được cho bất kỳ công việc chung nào. Việc mở khóa đó diễn ra trong ngữ cảnh hạn chế với một tập thông tin xác thực hạn chế, và Apple ghi rõ rằng dữ liệu mã hóa vẫn không thể truy cập nếu không có mở khóa hợp lệ.
Tiếp theo là cửa sổ đăng nhập, nơi hệ thống đang chạy nhưng chưa có phiên người dùng. Phần mở rộng trong ngữ cảnh người dùng đã kết thúc nếu người dùng đã đăng xuất, và một phần mở rộng hệ thống toàn cục có thể vẫn đang chạy, nhưng đang chạy không giống với việc giữ thông tin xác thực mà VPN của bạn cần.
Rồi đến phiên, nơi một ứng dụng bình thường có thể đọc chùm chìa khóa đăng nhập, yêu cầu yếu tố thứ hai và áp dụng các tuyến đường được đẩy xuống. Hầu hết các tính năng mà người ta mô tả là trước khi đăng nhập thực ra là giai đoạn này, được kích hoạt sớm trong phiên chứ không phải trước đó.
| Stage | What it can use | What it cannot do |
|---|---|---|
| FileVault unlock | Credentials supplied at the console to unlock the volume | Run an ordinary VPN app or read a user keychain |
| Login window | System context, possibly a joined network | Use a user secret that only exists after login |
| User session | Login keychain, interactive MFA, full client features | Exist before the volume unlocks |
Tại sao một launch daemon không thể đăng nhập thay cho người dùng vắng mặt
Đặc quyền cao dường như phải giải quyết vấn đề, và nó không giải quyết. Một launch daemon chạy như tiến trình hệ thống không có phiên người dùng phía sau, nên không có chùm chìa khóa để mở và không có người để trả lời yêu cầu. Nó có thể mở một socket và đọc một tệp; điều nó không thể làm là trở thành người dùng sở hữu thông tin xác thực. Đặc quyền không phải là danh tính, và đây chính là điểm hai thứ đó bị nhầm lẫn.
Điều người ta xây trong khoảng trống đó là một script có mật khẩu bên trong, một vấn đề tồi tệ hơn vấn đề họ bắt đầu.
Phiên bản trung thực của yêu cầu hẹp hơn. Nếu máy phải tiếp cận một tài nguyên được bảo vệ khi không có ai hiện diện, danh tính mà tài nguyên đó chấp nhận phải là danh tính mà máy có thể giữ mà không cần người: chứng chỉ thiết bị, thông tin xác thực trong chùm chìa khóa hệ thống, hoặc một tài khoản mà yếu tố thứ hai không phải là thông báo đẩy tới điện thoại trong túi ai đó. Hãy thiết kế danh tính đó một cách có chủ đích, và câu hỏi về giai đoạn thường tự trả lời.
Tính năng trước khi đăng nhập của Windows không chuyển sang được
Windows có một cơ chế truy cập trước khi đăng nhập được ghi nhận cho một số sản phẩm truy cập từ xa, và cái tên di chuyển tốt hơn năng lực. Một tính năng được mô tả trong hướng dẫn triển khai Windows không cho bạn biết gì về việc liệu cùng nhà cung cấp đó có triển khai tương đương trên macOS hay không.
Yêu cầu một tuyên bố bao gồm phần cứng Mac, phiên bản macOS, phiên bản ứng dụng và phương thức xác thực mà bạn thực sự dùng. Một khẳng định hỗ trợ chung chung là không đủ, vì sự khác biệt giữa hoạt động và không hoạt động thường nằm ở một trong bốn điều đó.
Nếu nhà cung cấp không thể trả lời, đó là câu trả lời. Hãy lập kế hoạch cho giai đoạn phiên và thiết kế một phương án thay thế cho trường hợp không có người, thay vì phát hiện khoảng trống trong lúc triển khai.
Vậy nên yêu cầu điều gì thay thế
Viết yêu cầu bằng ngôn ngữ của các giai đoạn. Tài nguyên nào, ai cần, trong ngữ cảnh nào, và với độ trễ chấp nhận được bao nhiêu khi kết nối chưa có?
Nếu câu trả lời là người dùng đăng nhập rồi cần đường hầm, kết nối khi cần và một mục khởi động là đủ và rẻ. Nếu câu trả lời là máy khởi động lại qua đêm và phải báo cáo, thiết kế cần một đường mở khóa ổ đĩa được hỗ trợ, danh tính thiết bị và quy trình phục hồi hoạt động khi mạng không bao giờ lên. Nếu câu trả lời là đăng nhập tổ chức phụ thuộc vào đường hầm, thì các thiết kế đăng nhập, danh tính và VPN phải được xây cùng nhau chứ không mua riêng lẻ.
Tài liệu FileVault của Apple là điểm khởi đầu đúng cho giai đoạn mở khóa. Mọi thứ sau đó là câu hỏi về ứng dụng và danh tính mà một tuyên bố của nhà cung cấp nên giải quyết trước khi bạn mua.