секреты докера с пользователем без прав root - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть докер-контейнер, работающий с пользователем без полномочий root для повышения безопасности, но, похоже, он не может получить доступ к секретам, которыми я делюсь с ним:

Importing account from "/run/secrets/authority.priv.json" failed: Permission denied (os error 13)

Я пробовал разные решения в своемdocker compose: 1. Установка uid и gid на 1000 (uid / gid, если пользователь находится внутри контейнера) 2. Установка режима на 0444 и даже 0777

Но ни один из них не сработал, только использование root позволяетмне использовать эти секреты.

Есть идеи?

Бонусный вопрос: будет ли это та же проблема в kubernetes?

Файл docker:

FROM parity/parity:v2.2.1
LABEL maintainer="vincent@serpoul.com"

# SAD but It seems impossible to read the secrets otherwise
USER root

VOLUME ["/home/parity/.local/share/io.parity.ethereum"]

ADD ./configPoANode.toml /home/parity/configPoANode.toml
ADD ./PoA.json /home/parity/PoA.json
ADD ./entrypoint.sh /home/parity/entrypoint.sh

ENTRYPOINT ["/home/parity/entrypoint.sh"]

приложение: хранилище (с пользователем ROOT в файле Docker):

1 Ответ

0 голосов
/ 20 ноября 2018

Это потому, что вы устанавливаете пользователя root в контейнере Docker, а root владеет всеми отслеживаемыми томами и файлами, а не пользователем с четностью, который, я не уверен, даже существует.
Я бы сделал следующее:

Удалить USER root из файла Docker.Это root по умолчанию.

Проверьте, существует ли пользователь parity в контейнере.

Если не создайте его с каталогом /home/parity.

Смонтируйте том и файлы как вы.

RUN chown -R parity:parity /home/parity дает право собственности на вновь созданного пользователя.

Затем попросите контейнер использовать вновь созданного пользователя по умолчанию с помощью USER parity

Добавьте нужную точку входа в RUN chmod ug+x /home/parity/entrypoint.sh, что наверняка сделает ее исполняемой.

Вы готовы (надеюсь), вам не нужно настраивать пользователя при запуске контейнера, в строке USER parity он будет использовать пользователя parity по умолчанию.

...