Viji
@Viji
Associate DevOps Engineer

Как правильно ограничить привелегии при запуске контейнера в кубернетес среде?

Привет всем,

такой вопрос - для запуска контейнера .net в кубернетес манифесте для деплоймента используется контекст безопасности.

spec:
      securityContext:
        fsGroup: 1001
        runAsNonRoot: true
        runAsUser: 1001


В докерфайле user c ID=1001 не создается и не существует (там вообще нового пользователя не создается)

при этом, если зайти на работающий под в интерактивный терминал, например с помощью
k -n {namespace} -it {pod-name} -- /bin/bash

то получаешь приглашение в виде
I have no name!@{pod_name}:/application$ whoami 
whoami: cannot find name for user ID 1001


что имеет смысл, т.к. такого ID в контейнере не существует. Тем не менее контейнер как-то работает.
Тоже самое можно получить при запуске докер контейнера на своей машине с публичным образом

docker run -d --user 1001 ubuntu:latest sleep infinity
docker exec -it 50db203325e2cf80b03a1aae42c735208501c2783b3e2ce4ae0d0cd3685fdcb0 /bin/bash
I have no name!@50db203325e2:/$


3 вопроса
1) Как понимать это приглашение, почему пользователя с ID=1001 нет, а контейнер работает?
2) Является ли хорошей практикой создать пользователя в докерфайле командой типа: useradd --no-create-home appuser -u 5001 -g 5001 и в дальнейшем использовать его ID в установках securityContext? Или создавать не обязательно?
3) Если в системе на которой работает под/контейнер будет User с ID=5001 получит ли user в контейнере права из хоста?

всем добра, Вадим
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 2
Viji
@Viji Автор вопроса
Associate DevOps Engineer
1) $id
uid=1001 gid=0(root) groups=0(root) - очень странный ответ на самом деле ! Если я запускаю без securitycontext, под рутом... то id 1001 выводит - id: '1001': no such user.
Ответ написан
@stepanof23
DevOps/DataOps
1) Предполагаю, что пользователь все таки создается. Может и не в вашем в докерфайле, а в образе, на основе которого Вы пишете докерфайл.
И даже скорее всего их два или более, первый с id 1000, и второй с id 1001
Попробуйте ввести команду id, которая выдает информацию о текущем пользователе (или хардкод id 1001).
whoami может не работать, если пользователю не задали имя.
2) не компетентен, но мне кажется дефолтного 1001 пользователя хватит и нет смысла в лишнем пользователе 5001.
3) да
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы