Làm thế nào để cấm truy cập vào bên trong của Docker container?


14

Tôi muốn cung cấp ứng dụng của mình cho khách hàng dưới dạng hình ảnh docker. Nhưng điều quan trọng là đảm bảo rằng người dùng cuối không thay đổi bất cứ điều gì bên trong container. Người dùng chỉ có thể chạy / dừng container và tương tác với container qua mạng.

Có thể cấm truy cập vào bên trong của container? Có thể xác minh tính toàn vẹn của hình ảnh mà container được tạo từ?


2
Trừ khi bạn quản lý máy chủ docker, tôi tin rằng bạn không thể. Vấn đề gì bạn sẵn sàng giải quyết bằng cách ngăn chặn truy cập này?
Tensibai

Như Tensibai đề cập, nó phụ thuộc. Nếu bạn cần biết rằng container không được sửa đổi vì lý do bảo mật, về cơ bản bạn phải chạy nó trên các máy chủ của riêng bạn. Nếu bạn chỉ muốn ngăn cản mọi người sửa đổi nó để họ không phá vỡ mọi thứ, có lẽ có nhiều cách bạn có thể làm điều đó. Mô tả trường hợp sử dụng của bạn sẽ giúp ở đây.
Aurora0001

Câu trả lời:


11

Nói tóm lại, bạn không thể ngăn khách hàng sửa đổi các container họ chạy trong cơ sở hạ tầng của riêng họ. Các thùng chứa không giống như nhị phân có thể bị xáo trộn; chúng là môi trường thời gian chạy. Mã bạn phân phối bên trong container, tuy nhiên, có thể bị xáo trộn.

Câu hỏi của bạn ám chỉ vấn đề hỗ trợ của bên thứ ba: khách hàng sửa đổi phần mềm họ chạy trong môi trường của chính họ. Nếu bạn cung cấp các công cụ để vận hành các container bạn cung cấp (ví dụ: theo dõi và ghi nhật ký) thì khách hàng nên đồng ý (như một phần của giấy phép phần mềm) không thực hiện sửa đổi trái phép đối với chúng. Điều này áp dụng cho tất cả các loại phần mềm của bên thứ ba, không chỉ các container.

Tùy thuộc vào tình huống của bạn, bạn cũng có thể có tùy chọn cung cấp ứng dụng của mình dưới dạng Phần mềm dưới dạng dịch vụ (SaaS) đang chạy trong cơ sở hạ tầng đám mây.

Nếu khách hàng của bạn yêu cầu các container của bạn được chạy trên cơ sở hạ tầng của họ và từ chối tuân theo các hạn chế sửa đổi, thì có lẽ bạn không muốn thử hỗ trợ họ sử dụng phần mềm của bạn.


6

Docker không cung cấp bất kỳ phương tiện nào để ngăn chặn người dùng truy cập vào container, tuy nhiên với tư cách là nhà phát triển hình ảnh, bạn có thể thực hiện theo một vài chiến lược

  • Làm xáo trộn phần mềm của bạn (ruby, python và vv)
  • Xây dựng hình ảnh của bạn từ một hình ảnh cơ bản không có vỏ và các nhị phân khác mà người dùng có thể sử dụng để chà đạp hình ảnh.

Tất nhiên họ luôn có thể xuất container và đóng gói lại nhưng đó là những biện pháp cực đoan ...


Tại sao Ruby và Python được đưa ra làm ví dụ cho mã che giấu? Mã trong các ngôn ngữ đó thường được giữ dưới dạng tệp nguồn văn bản rõ ràng trên HĐH thực thi. Không nên sử dụng ngôn ngữ được biên dịch như C ++, C #, Java hoặc ngôn ngữ có thể được "rút gọn" như JS?
AjaxLeung

5

Bạn có thể xóa người dùng khỏi nhóm docker và tạo sudos cho docker startdocker stop.


3
chỉ có thể / hiệu quả nếu bạn sở hữu những máy chủ đó ...
Dan Cornilescu

5

Nếu khách hàng của bạn sẵn sàng đầu tư tiền thì bạn nên đi với phiên bản doanh nghiệp Docker. Trong Docker EE, bạn có một công cụ là UCP(Universal Control Plane) UCP . Bằng UCP, bạn có thể tạo vai trò và quyền truy cập và hạn chế người dùng thay đổi / sửa đổi các thùng chứa.

Nếu bạn muốn kiểm tra UCP hơn DDC (Trung tâm dữ liệu Docker) có giấy phép dùng thử một tháng sẽ giúp bạn xây dựng những điều theo yêu cầu của bạn.

Hy vọng điều này sẽ giúp!

Cảm ơn bạn!


1
Là giải pháp về các nhóm docker, điều này hoạt động nếu bạn chỉ quản lý hệ thống máy chủ
docker

2

Cung cấp giao hàng của bạn thông qua các kịch bản ansible. Giữ tất cả các loại hạn chế và kiểm tra trong tập lệnh ansible.


2
Làm thế nào điều này sẽ ngăn truy cập vào container? Hãy thử giải thích cách đề xuất của bạn thực sự sẽ giải quyết vấn đề của OP.
Michael Le Barbier Grünewald
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.