2016-11-07 19 views
8

Tôi hiện đang làm việc trên một thiết lập để làm cho Docker có sẵn trên một cụm hiệu suất cao (HPC). Ý tưởng là mọi người dùng trong nhóm của chúng tôi đều có thể đặt trước một máy trong một khoảng thời gian nhất định và có thể sử dụng Docker theo cách "bình thường". Có nghĩa là truy cập vào Docker Daemon thông qua CLI Docker.Tắt các tùy chọn chạy Docker nhất định

Để làm điều đó, người dùng sẽ được thêm vào nhóm Docker. Nhưng điều này đặt ra một vấn đề bảo mật lớn đối với chúng tôi, vì điều này về cơ bản có nghĩa là người dùng có đặc quyền root trên máy đó.

Ý tưởng mới là sử dụng tùy chọn ánh xạ vùng tên người dùng (như được mô tả trong https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-user-namespace-options). Như tôi thấy, điều này sẽ giải quyết vấn đề bảo mật lớn nhất của chúng tôi rằng thư mục gốc trong một thùng chứa giống như thư mục gốc trên máy chủ.

Nhưng miễn là người dùng có thể bỏ qua điều này qua --userns = host, điều này không làm tăng tính bảo mật theo bất kỳ cách nào.

Có cách nào để vô hiệu hóa tùy chọn này và các tùy chọn chạy Docker khác không?

+0

Bạn có thể viết một kịch bản shell rằng sẽ ra mắt 'Docker chạy ... ', nhưng điều này trông giống như một khái niệm sai lầm – user2915097

+0

Tôi nghĩ rằng thay đổi hoặc thay thế chỉ CLI không giúp đỡ nhiều, bởi vì Docker Daemon socket vẫn sẽ chấp nhận các tùy chọn này. Vì vậy, bạn chỉ có thể sử dụng một chương trình khác để tương tác với socket. Thay đổi sẽ vô hiệu hóa tùy chọn trong chính Docker Daemon. – StateOfTheArt89

+0

Tại sao họ cần quyền truy cập vào CLI của Docker? Nếu yêu cầu đó có thể được gỡ bỏ, bạn có thể cấp cho họ quyền truy cập vào tập lệnh sẽ quay bất kỳ hình ảnh nào dưới dạng vùng chứa với ít rủi ro bảo mật hơn nhiều. – BMitch

Trả lời

2

Như đã đề cập trong issue 22223

Có một toàn bộ rất nhiều cách mà người dùng có thể nâng cao đặc quyền thông qua Docker chạy, ví dụ bằng cách sử dụng --privileged.
Bạn có thể ngăn chặn điều này bởi:

  • hoặc không trực tiếp cung cấp quyền truy cập vào các daemon trong sản xuất và sử dụng các kịch bản,

(mà không phải là những gì bạn muốn ở đây)

  • hoặc bằng cách sử dụng auth plugin để không cho phép một số tùy chọn.

Đó là:

dockerd --authorization-plugin=plugin1 

Mà có thể dẫn đến:

https://docs.docker.com/engine/extend/images/authz_deny.png

+1

Đây là ví dụ về trình cắm thêm ủy quyền docker cơ bản: https://github.com/twistlock/authz – VonC

Các vấn đề liên quan