Hai URL có thể trông giống hệt nhau từ trình duyệt của một peer nhưng lại mang ý nghĩa hoàn toàn khác với tường lửa. Một URL trỏ tới dịch vụ lắng nghe trên chính máy chủ. URL kia trỏ tới địa chỉ máy chủ có cổng được công bố vào mạng container, nơi một bước dịch chuyển giao kết nối cho một IP khác. Trong một mesh ngang hàng kiểm soát quyền truy cập mạng nội bộ bằng quyền cho từng peer, khác biệt đó chính là toàn bộ việc xem xét.

Quyền liên quan tới điểm cuối của máy chủ, bước dịch liên quan tới Docker, còn đăng nhập liên quan tới ứng dụng. Ba quyết định, ba nơi để nhìn.

Theo dõi đích đến sau khi công bố

Lấy một máy chủ Linux chạy Docker công bố cổng 80 của container trên cổng 8080 của máy chủ. Một peer kết nối tới địa chỉ mesh của máy chủ ở cổng 8080, máy chủ chấp nhận kết nối, và bước dịch đích viết lại nó về địa chỉ cầu của container, thường là thứ gì đó như 172.17.0.2 trên cổng 80.

Khi một quy tắc kiểm tra luồng đó, đích đến đáng quan tâm là container, không phải máy chủ. Một chính sách chỉ lập luận về «một dịch vụ trên máy này» là đang lập luận về sai đối tượng. Yêu cầu đã đáp xuống máy chủ, nhưng nó đang được giao ở nơi khác.

Đó là lý do tài liệu của mesh liệt kê container Docker trong số các tài nguyên mà quyền mạng nội bộ quản lý trên Linux. Quyền này không đồng nghĩa với một mục thông thường trong danh sách cho phép của VPN, và hai cơ chế kiểm soát không thay thế nhau. Một bên quyết định peer có được chạm tới tài nguyên nội bộ hay không; bên kia quyết định tuyến đường hầm mang những đích nào.

Quyết định một quyền cấp bao nhiêu truy cập nội bộ

Cấp cho một peer quyền truy cập mạng nội bộ không phải là quyết định về một container duy nhất. Nó có thể phơi bày các dịch vụ đã công bố khác trên cùng máy chủ, và có thể vươn xa hơn tùy theo cách máy chủ chuyển tiếp. Hãy xem xét phạm vi thực tế trước khi bật công tắc cho một bảng điều khiển.

Sau đó xem Docker công bố cổng ở đâu. Công bố trên 0.0.0.0 tạo một bộ lắng nghe trên mọi địa chỉ của máy chủ, điều này có thể thêm một mục LAN thông thường bên cạnh mục mesh. Nếu yêu cầu chỉ là mesh, hãy ràng buộc việc công bố vào địa chỉ hoặc giao diện cụ thể mà bạn dự định, và coi việc ràng buộc rộng hơn là một phát hiện riêng chứ không phải sự tiện lợi.

Giữ chính sách chuyển tiếp của máy chủ và xác thực của chính ứng dụng đủ hẹp cho dịch vụ. Một URL trông có vẻ riêng tư không phải là kiểm soát truy cập, và một container tin tưởng mọi nguồn trên mạng cầu của nó không được bảo vệ bởi việc peer của mesh đã được phê duyệt. Xác thực của ứng dụng là quyết định thứ ba, và là quyết định duy nhất biết người dùng là ai. Một quyền ở cấp máy chủ không thể cung cấp kiến thức đó.

Hãy kiểm tra quyền, không chỉ URL

Từ peer đã được phê duyệt, hãy mở đúng dịch vụ đó và xác nhận nó hoạt động. Sau đó thử một đích lẽ ra vẫn bị từ chối và xác nhận nó không hoạt động. Chỉ kiểm tra con đường thuận lợi cho bạn biết quyền đã được cấp; nó không cho bạn biết ranh giới nằm ở nơi bạn nghĩ.

So sánh riêng một dịch vụ bản địa của máy chủ. Nếu một cơ sở dữ liệu lắng nghe trên máy chủ và một bảng điều khiển chạy trong container, chúng đi theo những con đường khác nhau qua cùng một quyền và có thể không được chính sách chuyển tiếp của máy chủ quản lý giống nhau. Ghi lại cái nào là cái nào trước khi viết ghi chú xem xét.

Đừng xóa các bảng của Docker hoặc các quy tắc của ứng dụng khách mesh để «đặt lại» quyền truy cập. Cả hai sản phẩm đều cài đặt tích hợp chính sách riêng, và xóa nó tạo ra một máy chủ trông như đang hoạt động trong khi bỏ qua các kiểm soát mà bạn được yêu cầu đánh giá. Nếu một quy tắc có vẻ sai, hãy đọc nó và chỉ thay đổi quy tắc đó. Nếu bạn không thể giải thích một quy tắc làm gì, đó chính là phát hiện, không phải lý do để xóa nó.

Viết phát hiện bằng chính thuật ngữ của hệ thống

Điều quan trọng là sự phân biệt mà sản phẩm thực sự thực thi, không phải sự phân biệt trong mẫu xem xét: quyền chạm tới điểm cuối của máy chủ, quyền chạm tới tài nguyên riêng tư được định tuyến, và quyền sử dụng ứng dụng. Việc công bố một cổng để nguyên ba quyết định đó ở đúng vị trí cũ, và một người xem xét coi chúng là một sẽ phê duyệt sai phạm vi.

Nêu địa chỉ máy chủ, cổng đã công bố, đích của container và quyền của peer trong cùng một câu. Câu đó có thể được người khác kiểm chứng, và đó là điều khiến nó thành một phát hiện chứ không phải ý kiến.

Bài viết liên quan