Доступна ли кому-либо кодовая база проекта репозитория Dockerhub publi c? - PullRequest
1 голос
/ 30 апреля 2020

Я совершенно новичок в понятиях контейнеров и docker et c. Скажем, у меня было простое приложение Angular Javascript, которое выполняет вызов API. Если это приложение было изображением на Dockerhub, может ли кто-нибудь получить доступ к коду проектов? Например, если в заголовках была некоторая конфиденциальная информация, такая как ключ подписки, может ли кто-нибудь перехватить этот ключ?

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

Поскольку ключ находится в виде простого текста в основе кода, ключ будет доступен через работающий контейнер. При создании изображения docker вы скопируете файлы в изображение. После того, как кто-то запустил изображение docker как контейнер, он может получить доступ к коду через интерактивный сеанс.

Чтобы решить эту проблему, вы можете добавить ключ в качестве переменной среды. Либо с помощью ˋ docker run -eˋ, либо ˋ docker run --env-fileˋ. Таким образом, вы можете указать ключ при запуске контейнера, поэтому измененный ключ не требует перестроения всего изображения, и никто не увидит, как ваш ключ обращается к открытому изображению в концентраторе.

1 голос
/ 30 апреля 2020

С одной стороны, любой, кто может запустить образ Docker, может видеть все содержимое файловой системы этого образа, и фактически он может довольно просто овладеть всей хост-системой. Таким образом, Docker не поможет вам защитить, например, сторонние ключи API.

С другой стороны, приложение Angular будет по сути передаваться по сети и запускаться в браузере конечного пользователя. , Это означает, что они смогут просматривать (минимизированный) источник приложения в инструментах отладки браузера или просто использовать инструмент, такой как curl, для самостоятельной загрузки приложения.

В этом случае это означает упаковку приложение в Docker на самом деле не меняет состояние безопасности приложения: как приложение на основе браузера оно по существу публикуется c независимо от того, как вы упаковываете его на стороне сервера.

1 голос
/ 30 апреля 2020

Скорее всего, это будет доступно. Однако вы можете использовать файл .dockerignore.

Поместите файл с ключом где-нибудь в вашем проекте и загрузите его в код, затем добавьте этот файл в dockerignore, и вы сможете безопасно его использовать.

Проблема с этим подходом заключается в том, что вам нужно будет вручную прочитать файл с ключом в каждом модуле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...