172 похожих чатов

Всем доброго утра! Какой самый нативный способ для приложения на golang

в кубере узнать свой Namespace в котором он установлен?
Нашёл вот закрытый issue
https://github.com/kubernetes/client-go/issues/804

Получается реально только читать из файла /var/run/secrets/kubernetes.io/serviceaccount/namespace или пробрасывать в ENV, как предложено в коментарии
https://github.com/kubernetes/client-go/issues/804#issuecomment-1298410210

неужели с дефолтным serviceAccount-ом нельзя через клиента вычитать?

32 ответов

10 просмотров

А передать в под переменной не вариант? Это выглядит намного проще.

сделайте не дефолтный

Антон-Дзык Автор вопроса
Kirill Garbar
А передать в под переменной не вариант? Это выгляд...

Вот так и решил делать, просто казалось раз есть serviceAccount и уже клиент внутри, то казалось из него можно это стрясти, оказалось что нет и проще переменную добавить в спеке и os.Getenv вычитать

Антон-Дзык Автор вопроса
4c74356b41
сделайте не дефолтный

да, уже не дефолтный, всё равно телодвижений больше выходит...

а чем кат файла не мил? или приложенька запускается с automountServiceAccountToken: false?

Самое простое это metadata.namespace как env. В противном случае сервисакаунту нужны права на чтение нс из апишки

Антон-Дзык Автор вопроса

env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace

> неужели с дефолтным serviceAccount-ом нельзя через клиента вычитать? можно , прочитать файл /var/run/secrets/kubernetes.io/serviceaccount/namespace

Dmitry Gadeev
исчерпывающее объяснение

Чтение из файла потенуиальная дыра, более безопасно читать в рантайме

Jürgen Romins | no pm!
Чтение из файла потенуиальная дыра, более безопасн...

А в чём дыра? Чем опасно, кто может воспользоваться?

Kirill Garbar
А в чём дыра? Чем опасно, кто может воспользоватьс...

Смотри 0дей никто не отменяет, плюс файл в принципе можно подменить. Вектор атаки может быть разным и в локальной обработки никто не гарантирует что нельзя будет выполнить выполнение кода после чтения файла. В контексте чтения файлов нужно настраивать fim

Kirill Garbar
А в чём дыра? Чем опасно, кто может воспользоватьс...

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

Jürgen Romins | no pm!
Смотри 0дей никто не отменяет, плюс файл в принцип...

Ну я не спорю, что в теории можно подменить файл и под подумает, что он в другом неймспейсе. Ну ок. Подумает :)

Антон-Дзык Автор вопроса
Dmitry Sergeev 🇺🇦
env: - name: NAMESPACE valueFrom: fieldRef: ...

Я так и сделал, только зачем тут apiVersion: v1?

Антон-Дзык Автор вопроса
Dmitry Sergeev 🇺🇦
убери, не страшно

Хотел разобраться, может оно важно в каких-то случаях

Kirill Garbar
Ну я не спорю, что в теории можно подменить файл и...

Все что стейтфул потенциальная дыра либо слабость для неавторизованного доступа

Антон Дзык
Хотел разобраться, может оно важно в каких-то случ...

это поле несет точно такой-же смысл, как и в других ресурсах куба. У ресурса есть apiVersion, от него зависит схема. Конкретно в этом кейсе apiversion не влияет особо, потому что имя всегда в метадате

Jürgen Romins | no pm!
Все что стейтфул потенциальная дыра либо слабость ...

монтируемые файлы из секретов и configmap'ов это не стейтфул

Jürgen Romins | no pm!
Еще раз перечитай что я говорил.

не важно что ты говорил, тред о /var/run/secrets/kubernetes.io/serviceaccount И чтения файлов от туда

Dmitry Sergeev 🇺🇦
не важно что ты говорил, тред о /var/run/secrets/k...

А вот теперь представь что есть уязвимость которая мне позволит подмонтировать какой то файл как сервис акаунт либо я просто хотел испортить жизнь кому то. Я про это и писал. Чтение/запись файлов и работа с ними потенциально опасно.

Тебе что то не понятно?

Jürgen Romins | no pm!
Тебе что то не понятно?

да это очередные если бы да кабы. Конкретную уязвимость в пример надо давать, и способы ее применения. Подмонтировать? Этим занимается kubelet, насколько мне известно. Ну давай рассмотрим этот вектор атаки, ты каким-то образом ломанул kubelet, чтобы он монтировал левые сервис аккаунты, чтобы что? Чтобы код считал левый аккаунт, и не смог авторизоваться в kube-apiserver? А че бы тогда не монтировать левые entrypoint'ы?

Dmitry Sergeev 🇺🇦
да это очередные если бы да кабы. Конкретную уязви...

Я опять же говорил про потенциальные риски. Кто говорит про кублет)? Например есть 0дей который злоумышленику позволяет подменить твой сервис акаунт на какой либо левый файл. Это можно искобчать?

Jürgen Romins | no pm!
Я опять же говорил про потенциальные риски. Кто го...

> Например есть 0дей который злоумышленику позволяет подменить твой сервис акаунт на какой либо левый файл В чем этот 0day, монтированием файликов в под вроде kubelet занимается. Можно еще containerd/cri-o ломануть, но опять встает вопрос, нафига тогда подменять service аккаунты

Dmitry Sergeev 🇺🇦
> Например есть 0дей который злоумышленику позволя...

Ты достоверно не знаешь кто смонтировал и изменен ли файл. Так как нет достоверных данных о состоянии. На основе таких сигнатур работает фим. В таком случае ты достоверно знаешь изменился ли файл или нет и что поменялось

Dmitry Gadeev
исчерпывающее объяснение

резюмируя, читать можно, таких потенциальных дыр можно найти очень много, я бы не парился по этому поводу. Закрывают их судя по всему по субъективному принципу, по каким-то предпринимают меры, по каким-то нет или делают вид что предпринимают, потому что это комплексное решение.

Dmitry Sergeev 🇺🇦
резюмируя, читать можно, таких потенциальных дыр м...

кстати, если я правильно помню, там этот "волюм" - смонтирован с RO

Dmitry Gadeev
кстати, если я правильно помню, там этот "волюм" -...

да, но там 0day уязвимость, которая подменяет же, то есть монтирует другое

Похожие вопросы

Обсуждают сегодня

Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Запускаю SIMD на Delphi 11 CE пишет: Exception class name: EJclError Exception message: Function not found: kernel32.dll.GetEnabledExtendedFeatures (0014763C){Jcl280.bpl } [7...
Александр Смоляков
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
10
Hello, good time everyone I use Firebase to implement push notification inside the Flutter application and it works, but I don't receive the notification when the application ...
Iman
1
Вот такая неприятность на stable и ea версиях: werf helm --namespace s4c upgrade --install --atomic --timeout 5m --set s4c.version=839185f3 --set s4c.deployEnv=staging -f d...
citius
6
Вместо import и library придется писать importlib?
The Bird of Hermes
19
Карта сайта