У меня есть хост докеров и сервер NFS, разделяющий путь, например /storage, к хосту докеров. Я могу смонтировать общий ресурс NFS непосредственно на хосте докера или использовать том NFS для доступа к данным в общем ресурсе. Конечно, в каждом контейнере докеров есть несколько подпапок, например
- контейнер1
- vol1 a в NFS:/storage/container1/vol1
- контейнер2
- vol1 a в NFS:/storage/container2/vol1
- vol2 a в NFS:/storage/container2/vol2
- контейнер3
- vol1 a в NFS:/storage/container3/vol1
- vol2 a в NFS:/storage/container3/vol2
- …
В случае использования томов NFS напрямую через docker-compose.yml:
...
volumes:
file-vol:
driver: local
driver_opts:
type: "nfs"
device: ":/storage/container1/vol1"
o: addr=nfshost,rw,nosuid,noatime,nfsvers=4
...
то я могу видеть внутри работающего контейнера с mount
:/storage/container1/vol1 on /var/www/html type nfs4 (rw,nosuid,noatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<dockerhost>,local_lock=none,addr=<nfshost>)
Когда я заменяю этот том на:
...
volumes:
file-vol:
driver_opts:
type: none
device: "/srv/storage/container1/vol1"
o: bind
...
Где /srv/storage — общая папка Linux NFS, смонтированная через mount -t nfs nfshost:/storage /srv/storage
то я получаю mount
вывод внутри контейнера:
<nfshost>:/storage/container1/vol1 on /var/www/html type nfs4 (rw,nosuid,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<dockerhost>,local_lock=none,addr=<nfshost>)
В обоих случаях внутри док-контейнера я вижу хост NFS и точку монтирования. «Плохой процесс» может подумать об этом и попытаться смонтировать другое местоположение NFS (например, /storage/container2/vol1) и иметь полный доступ к этому местоположению, потому что здесь нельзя использовать Kerberos (я думаю). Также я не могу запретить доступ к этому месту через NFS-сервер, потому что он исходит с того же IP-адреса. Также весь контейнер запускается от пользователя root (довольно часто контейнер не без root).
Есть ли способ запретить доступ к container1 для монтирования томов container2 на сервере NFS или способ скрыть тот факт, что папка /var/www/html является точкой монтирования NFS?
докер
ТРВ
1 ответ
Устанавливать NFS:/storage
под /storage
на вашем хосте Docker.
Смонтируйте тома из /storage
вместо NFS:/storage/
.
Джеральд Шнайдер