Илья
^
я думаю имеется ввиде не на виртуалке, а на железе
Daniel
Илья
в виртуалке менеджер ресурсов и не такое может сотвриться
L
TWIMC: вчерашняя проблема с listen оказалась очень странной: нельзя слишком часто открывать-закрывать unix сокеты. от этого что-то где-то ломается, и listen сокет закрывается надо бы багрепорт написать, но непонятно, куда
Вот интересно на каком уровне это происходит? Емнип я что-то такое ловил года 1.5 назад когда активно тестировал сервисы. Тоже на голом железе. Хз, но может после закрытия сокета его что-то держит и он не вычищаться так сразу?
Daniel
нет
Kirill
ну первый раз я это в докере поймал
Это по барабану, попробуй воспроизвести на нормальном ядре
L
Что происходит с сокетом после закрытия? Просто удаляется файл и все?
Daniel
там же не гошный сокет у меня, а прямо системны ufd, который int
Daniel
а я на писателе эту проблему выхватил
L
а я на писателе эту проблему выхватил
Ааа вот че. У меня было при открытии
Daniel
самое неприятно - никаких сообщений об ошибке
Daniel
совсем никаких
L
А оно воспроизводимое как я понимаю?
L
Могу повторить?
Daniel
кода не дам
Daniel
но можно повторит, да
Kirill
какое ядро ты считаешь нормальным?
У меня на центовом ядре проблем почему-то нет, затести
Daniel
каких проблем у тебя нет на центосном (каком, кстати) ядре?
arkady
Господа, кто может поделиться знаниями насчет микросервисной архитектуры и как в рамках нее организовать авторизацию и аутентификацию пользователя?!
Kirill
каких проблем у тебя нет на центосном (каком, кстати) ядре?
С очень частым открытием/закрытием сокетов. При чём на убунте у меня такое бывало, но я не докапывался почему именно, попробовал цент и всё взлетело
Kirill
как понять Blackbox?
Сервис с простым апи, который имеет доступ к пользовательским данным. Остальные сервисы доступа не имеют
Kirill
Вся авторизация и проверка сессий на стороне этого сервиса
arkady
Вся авторизация и проверка сессий на стороне этого сервиса
тоесть этот сервис же должен как-то сообщить клиенту - что он теперь может пользоваться всеми остальными сервисами?
Kirill
А как сервис работает - другие сервисы не знают и знать не должны
arkady
Kirill
тоесть этот сервис же должен как-то сообщить клиенту - что он теперь может пользоваться всеми остальными сервисами?
Клиент первым запросом делает public auth на блэкбоксе, получает sso сессию и токен, а дальше ходит с сессией и токеном на апи гейтвей или, если его нет, то на сервисы напрямую. Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req
Peter
аутефикацию можно вынести на api gateway если она по JWT токену, так-то в токен можно права доступа добавить
Kirill
Kirill
аутефикацию можно вынести на api gateway если она по JWT токену, так-то в токен можно права доступа добавить
Тогда челу придется переполучать токен при обновлении прав, это плохо для UX
arkady
Клиент первым запросом делает public auth на блэкбоксе, получает sso сессию и токен, а дальше ходит с сессией и токеном на апи гейтвей или, если его нет, то на сервисы напрямую. Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req
»Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req имеется в виду, что сервис на каждый пользовательский запрос идет на auth сервис и там проверяет права, так?
arkady
Ага. А если доступа нет - можно считать попытки взлома и банить юзера, если надо
супер, спасибо тебе, ато у меня были мысли насчет этого, но не знал, как организовать.
Kirill
Да не за что
Peter
Тогда челу придется переполучать токен при обновлении прав, это плохо для UX
А в чем проблема? Api gateway возвращает код что нужно обновить токен и уже с новым токеном выполняется запрос
arkady
Ага. А если доступа нет - можно считать попытки взлома и банить юзера, если надо
еще вот такой смежный вопрос — обычно это все через k8s делается, или просто docker достаточно?
Kirill
еще вот такой смежный вопрос — обычно это все через k8s делается, или просто docker достаточно?
Зависит от того, что нужно. Если хватает допера - сиди на допере, не усложняй жизнь k8s
Kirill
Он нужен только на гейтвее
не в этом суть любой мастер ключ — это то, что нужно хитро защищать. зачем, если можно сделать проще, и при этом не менее надёжно?
Peter
jwt эта та же информаци из сессии только она хранится на стороне клиента, на один сервис меньше получается
Kirill
если у тебя не было api gateway, то вообще по барабану, всё равно +1 сервис
Peter
У нас на проекте нет гейтвея и мы страдаем. Сейчас пришли к тому чтобы вынести отдельно сервис который формирует объект с правами и находится во внутренней сети, в каждом сервисе которому требуются проверка прав доступа придется это реализовывать
Co.In
Народ. А как в go грохнуть запушенный процесс? cmd := exec.Command("/usr/local/bin/gedit", "/home/pi/test.txt") err := cmd.Run() if err != nil { panic(err) } err = cmd.Process.Kill() if err != nil { panic(err) } Пробовал так, но процесс запустился но не убился. Никаких ошибок нет. Видимо какой-то другой механизм
Co.In
> Никаких ошибок нет так ты их не проверяешь
Я их прям в дебаггере смотрю) Но проверил на всякий случай, это ничего не меняет. Походу оно деатачит процесс просто и он живет своей жизнью после
L
но можно повторит, да
Нужно быстро поратировать сокеты?
Aleksey
Он так и делает
Я выше исправил коммент, добавил код
Aleksey
Ток проверки ошибок не забыть :)
Aleksandr
Aleksandr
Народ. А как в go грохнуть запушенный процесс? cmd := exec.Command("/usr/local/bin/gedit", "/home/pi/test.txt") err := cmd.Run() if err != nil { panic(err) } err = cmd.Process.Kill() if err != nil { panic(err) } Пробовал так, но процесс запустился но не убился. Никаких ошибок нет. Видимо какой-то другой механизм
Aleksey
Там gedit спрашивает о сохранении файла, видимо, перед закрытием
Aleksey
kill -9 надо
Aleksey
Как он там называется...
Aleksey
https://ru.m.wikipedia.org/wiki/Сигнал_(Unix) там табличка классификаций
arkady
не в этом суть любой мастер ключ — это то, что нужно хитро защищать. зачем, если можно сделать проще, и при этом не менее надёжно?
Я вот о чем подумал, а как происходит взаимодействие между двумя сервисами, когда один идёт за проверкой прав пользователя на сервис авторизации? Он же спалит данные пользователя
arkady
кто он спалит и почему?
Например. Я иду на сервис авторизации, получаю токен и сессию. Потом с этим иду на второй сервис, который не имеет доступа к данным пользователя и вынужден идти проверять данные, которые я прислал, на сервис авторизации. Так? Тогда вот этот самый последний поход сервиса 2, к сервису авторизации как осуществляется?
Dmitriy
Например. Я иду на сервис авторизации, получаю токен и сессию. Потом с этим иду на второй сервис, который не имеет доступа к данным пользователя и вынужден идти проверять данные, которые я прислал, на сервис авторизации. Так? Тогда вот этот самый последний поход сервиса 2, к сервису авторизации как осуществляется?
У тебя идет передача запроса на endpoint, а дальше сервисы взаимодействуют друг с другом. Т.е. для примера ты прислал запрос на получение постов пользователя на endpoint в составе social сервиса, в составе запроса есть токен авторизации. Т.е. до того как social сервис тебе отдаст данные, он должен отправить запрос на user сервис с полученным токеном и получить от него ответ о валидности
Dmitriy
Хорошо, это понятно. Я, видимо, неправильно вопрос написал. По какому протоколу общаются между собой сервисы?
А тут как тебе удобно. У меня в реализациях по amqp обычно, через кролика или кафку. Можно через http и тут тоже не будет криминала, т.к. запросы host 2 host, между двумя твоими серверами
Cat
Btw, вы не путаете авторизацию с аутентификацией?
Cat
Просто ходить на внешний ресурс за авторизацией это странно
Cat
Почему?
Ну только если это не ваша распределённая сеть, ну а внутри неё можно использовать что угодно, данные сливаются только самим себе
Dmitriy
Host 2 host тогда должны быть во внутренней сети, да?
Тоже не обязательно конечно. Там уже если это разные сети, то можно на панельном уровне добавить безопасности. Хош впн, хош айписек
Cat
Ну только если это не ваша распределённая сеть, ну а внутри неё можно использовать что угодно, данные сливаются только самим себе
А для работы с каким нибудь гуглом, вам должно хватить аутентификации, там тоже ничего не сливается Соответсвенно https
Dmitriy
Btw, вы не путаете авторизацию с аутентификацией?
Это был сферический пример в вакууме, т.ч. терминалогия не сильно принципиальна)