Tiếng Việt

Công cụ dành cho nhà phát triển · Chạy Docker sang trình chuyển đổi soạn thảo Docker

Chạy vùng chứa với quyền root: --user và người dùng: thay đổi gì và tại sao

· Tại sao nó quan trọng

docker thùng chứa bảo vệ

Sơ đồ trừu tượng minh họa các vùng chứa đang chạy với quyền root: --user và người dùng: thay đổi gì và tại sao
Hình minh họa vector ToolAcre gốc

Trừ khi hình ảnh có nội dung khác, quy trình trong vùng chứa của bạn là root. Bài đăng này giải thích ý nghĩa của điều đó trên máy chủ, cách --user và người dùng Compose: khóa thay đổi nó cũng như các vấn đề về quyền sở hữu tệp xảy ra sau đó.

Các tệp bạn không thể xóa - một liên kết gắn kết chứa đầy các tệp thuộc quyền sở hữu gốc sau một lần chạy vùng chứa

Các tệp bạn không thể xóa - liên kết gắn kết chứa đầy các tệp thuộc quyền sở hữu gốc sau một lần chạy vùng chứa. Bằng chứng: đầu ra được gắn vào liên kết có thể phát hiện ra sự không khớp về danh tính mà phân tích cú pháp không thể chẩn đoán được. Tái tạo danh tính thời gian chạy bằng các chữ dùng một lần. Ghép nối từng lần xuất hiện nguồn với khả năng gắn kết của người dùng; dành riêng không gian tên và quyền sở hữu để xem xét đích.

Sự cố bảo mật cũng tiết lộ rằng Một ranh giới sự cố bảo mật riêng biệt là hình ảnh USER và các thiết bị chuyển mạch điểm vào yêu cầu nguồn kiểm tra hoặc hình ảnh. Bằng chứng: hình ảnh USER và công tắc điểm vào yêu cầu nguồn kiểm tra hoặc hình ảnh. Ràng buộc nhận dạng thời gian chạy này là điểm dừng. Kiểm tra khả năng gắn kết của người dùng mà không cần hoạt động sản xuất, sau đó ghi lại quá trình kiểm tra máy chủ để tìm không gian tên và quyền sở hữu.

Root bên trong là root bên ngoài — với cài đặt không gian tên người dùng mặc định, UID 0 trong vùng chứa là UID 0 trên máy chủ dành cho các tệp được gắn

Root bên trong là root bên ngoài — với cài đặt vùng tên người dùng mặc định, UID 0 trong vùng chứa là UID 0 trên máy chủ dành cho các tệp được gắn. Bằng chứng: UID không có hiệu ứng máy chủ nào phụ thuộc vào cấu hình vùng tên không được đọc ở đây. Theo dõi mã thông báo nhận dạng thời gian chạy vào khả năng gắn kết của người dùng. Tách các giá trị được sắp xếp khỏi các trường giá trị cuối cùng; không gian tên và quyền sở hữu là bộ sưu tập bên ngoài.

Ranh giới cơ chế bảo mật có liên quan là ranh giới ngữ pháp bảo mật riêng biệt là ví dụ 1000:1000 thể hiện việc bảo toàn chứ không phải đảm bảo quyền sở hữu. Bằng chứng: ví dụ 1000:1000 chứng minh việc bảo tồn chứ không phải đảm bảo quyền sở hữu. Sử dụng thực tế nhận dạng thời gian chạy này để dự đoán một thành viên hoặc vô hướng trong khả năng gắn kết của người dùng. Kiểm tra các cảnh báo trước khi quyết định bất cứ điều gì về không gian tên và quyền sở hữu.

--user trở thành người dùng: — số UID:GID so với tên và tại sao số lại an toàn hơn khi hình ảnh không có tài khoản phù hợp

--user trở thành người dùng: — số UID:GID so với tên và tại sao số lại an toàn hơn khi hình ảnh không có tài khoản phù hợp. Bằng chứng: --user trở thành người dùng và văn bản số UID:GID được trích dẫn. Đánh giá tuần tự hóa nhận dạng thời gian chạy từ mô hình của nó. Trích dẫn trong khả năng gắn kết của người dùng sẽ bảo vệ các loại nhưng không đưa ra bằng chứng hoạt động nào cho không gian tên và quyền sở hữu.

Quan sát tuần tự hóa bảo mật thứ hai là Một ranh giới đầu ra bảo mật riêng biệt là bản đồ read_only cap_drop và security_opt trong khi chế độ không root thì không. Bằng chứng: bản đồ read_only cap_drop và security_opt trong khi chế độ không root thì không. Đầu ra nhận dạng thời gian chạy này tách biệt các cài đặt khỏi bối cảnh không có sẵn. Giữ khả năng gắn kết của người dùng có thể được xem xét và kiểm tra không gian tên cũng như quyền sở hữu một cách độc lập.

Hình ảnh đã loại bỏ đặc quyền — USER trong Dockerfile và hình ảnh chuyển đổi người dùng ở điểm truy cập của họ

Hình ảnh đã loại bỏ đặc quyền — USER trong Dockerfile và hình ảnh chuyển đổi người dùng ở điểm truy cập của họ. Dừng lại ở ngoại lệ nhận dạng thời gian chạy thay vì đoán. Bất kỳ sự bổ sung nào gần khả năng gắn kết của người dùng đều cần có lý do dành riêng cho việc triển khai gắn liền với không gian tên và quyền sở hữu.

Một hạn chế ngoại lệ bảo mật khác là Một ranh giới ngoại lệ bảo mật riêng biệt là việc ánh xạ lại không gian tên và ngữ cảnh Kubernetes nằm ngoài phạm vi. Bằng chứng: ánh xạ lại không gian tên và bối cảnh Kubernetes nằm ngoài phạm vi. Giữ lệnh nhận dạng thời gian chạy ban đầu bên cạnh các cảnh báo. Việc so sánh cho thấy khả năng gắn kết của người dùng chứa những gì và không gian tên cũng như quyết định quyền sở hữu nào vẫn được thực hiện thủ công.

Ví dụ đã hoạt động: chuyển đổi docker run --user 1000:1000 -v /srv/app:/app — người dùng: khóa và quyền sở hữu trên đĩa

Ví dụ đã hoạt động: chuyển đổi docker run --user 1000:1000 -v /srv/app:/app - người dùng: khóa và quyền sở hữu kết quả trên đĩa. Xây dựng ví dụ nhận dạng thời gian chạy từ tên tổng hợp. Làm cho mọi mục khả năng gắn kết của người dùng đều có thể theo dõi được mà không để lộ không gian tên sản xuất và chi tiết quyền sở hữu.

Mẫu ví dụ bảo mật tương tự chứng minh rằng Một ranh giới ví dụ bảo mật riêng biệt là danh tính sẽ hiển thị bên cạnh các giá trị gắn kết và khả năng để xem xét. Bằng chứng: danh tính trở nên rõ ràng bên cạnh thú cưỡi và khả năng xem xét. Thực tế nhận dạng thời gian chạy được ghép nối sẽ hiển thị trong khả năng gắn kết của người dùng. Ghi lại dòng đó và tránh các giả định về không gian tên và quyền sở hữu.

Các khóa cứng khác — read_only, cap_drop: [ALL], security_opt no-new-privileges và Docker không root là bước lớn hơn

Các khóa cứng khác — read_only, cap_drop: [ALL], security_opt no-new-privileges và Docker không cần root là bước lớn hơn. Chuyển hệ quả nhận dạng thời gian chạy thành một sự khác biệt về khả năng gắn kết của người dùng có thể quan sát được. Docker sở hữu các không gian tên và quyền sở hữu sau này.

Việc triển khai hệ quả bảo mật cũng cho thấy một ranh giới riêng biệt về hiệu ứng bảo mật là đầu ra được gắn vào liên kết có thể phát hiện ra các lỗi nhận dạng không khớp mà phân tích cú pháp không thể chẩn đoán được. Phân chia trách nhiệm nhận dạng thời gian chạy: chuyển đổi ghi các khả năng gắn kết của người dùng, kho lưu trữ xóa bí mật và người vận hành xác thực không gian tên và quyền sở hữu.

Điều này không bao gồm - cấu hình ánh xạ lại không gian tên người dùng và bảo mật KubernetesContext

Điều này không bao gồm - cấu hình ánh xạ lại không gian tên người dùng và Kubernetes securityContext. Giới hạn phạm vi nhận dạng thời gian chạy đối với các nhánh khả năng gắn kết của người dùng được hiển thị ở đây. Các biểu mẫu và mặc định lân cận không thể trả lời các câu hỏi về không gian tên và quyền sở hữu.

Thêm một giới hạn phạm vi bảo mật theo sau Một ranh giới giới hạn bảo mật riêng biệt là UID không có hiệu ứng máy chủ nào phụ thuộc vào cấu hình không gian tên không được đọc ở đây. Hãy coi ranh giới nhận dạng thời gian chạy này là một loại trừ. Ưu tiên khả năng gắn kết chính xác của người dùng hơn là phỏng đoán về không gian tên và quyền sở hữu.

Bài học rút ra: quyết định quy trình của bạn là ai — và kiểm tra đầu ra của trình chuyển đổi có bao gồm người dùng: trước khi bạn đưa ngăn xếp lên

Bài học rút ra: quyết định quy trình của bạn là ai — và kiểm tra đầu ra của trình chuyển đổi có bao gồm người dùng: trước khi bạn đưa ngăn xếp lên. Kiểm tra danh tính thời gian chạy dưới dạng tùy chọn nguồn, trường mô hình, dòng khả năng gắn kết của người dùng và cảnh báo. Xóa bí mật trước khi kiểm tra không gian tên và quyền sở hữu.

Cuối cùng, nguồn thông tin bảo mật xác nhận Một ranh giới quyết định bảo mật riêng biệt là --user trở thành người dùng và văn bản số UID:GID được trích dẫn. Đóng danh tính thời gian chạy trong phạm vi hẹp: khả năng gắn kết của người dùng là một ứng cử viên; không gian tên và quyền sở hữu cũng như sự tương đương của shell không được đảm bảo.