Trước hết, chỉ những người dùng đáng tin cậy mới được phép kiểm soát daemon Docker của bạn
Trình nền docker chạy với quyền root theo mặc định trên bản cài đặt Debian Bullseye. Thêm người dùng vào người đóng tàu
nhóm cấp cho người dùng đó quyền truy cập root psuedo do có quyền kiểm soát trình nền docker có lượng truy cập đó. Mọi người dùng trong nhóm docker sẽ có toàn quyền kiểm soát máy chủ và các vùng chứa khác và có thể chạy một vùng chứa --công bố
là bất kỳ cổng nào.
Có một số tùy chọn để cung cấp bảo mật cho quyền truy cập docker của người dùng.
- docker không root
sudo
- API
1. Docker không root
Một thiết lập docker không root sẽ cho phép mỗi người dùng chạy docker deamon. Đối với các cổng thấp hơn 1024, nó sẽ cần phải tuân theo thông tin cổng không có đặc quyền bob được cung cấp vì mỗi người dùng sẽ "sở hữu" deamon của riêng họ. Docker cũng cung cấp hướng dẫn liên quan. Điều này sẽ không ngăn Anna lấy cảng Bobs.
2. sudo
Phương pháp đơn giản nhất để cho phép người dùng chạy các lệnh docker là cung cấp một tập lệnh được kiểm soát gốc thông qua Sudo là tĩnh hoặc kiểm soát đầu vào của người dùng cho các đối số tùy chọn:
#!/bin/bash
docker run --detach --publish 1300:1300 anna/app-image
anna TẤT CẢ=(root) NOPASSWD: /usr/local/bin/start-anna-image
Nếu bạn muốn người dùng có thể thêm các tùy chọn của riêng họ, bạn cần phải rất cẩn thận trong việc kiểm soát đầu vào của họ vì rất dễ
3. Plugin ủy quyền hoặc API cho Docker
Vì Docker không cung cấp bất kỳ lớp ủy quyền nào trên daemon nên bạn cần thêm thứ gì đó để kiểm soát quyền truy cập của người dùng.
Docker cung cấp một bản dựng sẵn plugin ủy quyền framework để kích hoạt tính năng này. Một số ví dụ opa-docker-authz và casbin-authz-plugin
Bạn có thể cấp cho người dùng quyền truy cập vào một dạng API proxy cung cấp xác thực và ủy quyền đối với những gì được chuyển cho Docker REST API. Có các thư viện docker cho hầu hết các ngôn ngữ lập trình.Kubernetes+RBAC là một ví dụ về API nằm trước trình nền Docker và kiểm soát quyền truy cập (chỉ là một API rất lớn/phức tạp làm được nhiều hơn thế).