Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7   вперед  Ctrl      все
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
mayton
dakeiras
пропущено...


Потому что они как раз и замещаются. См. ниже ссылки.

Где конкретнее смотреть? На что они замещаются?


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security

Сообщение было отредактировано: 12 май 20, 22:37
12 май 20, 22:39    [22131634]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
SpringMan
ТС имеет в виду, что все замещается одним фильтром OrbitJwtTokenAuthenticationFilter


Да, спасибо!
12 май 20, 22:39    [22131635]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
А, кстати вот пример клиентской реализации в Swing.

(код самого GUI плохой, прошу не ругаться - он для демонстрации концепта только).

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-gui
12 май 20, 22:42    [22131639]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
dakeiras
mayton
пропущено...

Где конкретнее смотреть? На что они замещаются?


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security


Разве так делаются презентации? Чувак ты серъезно?

Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь
ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать
выводы что фреймворк с мировым именем имеет неверную архитектуру?

Ты серъезно, родной?
12 май 20, 22:43    [22131641]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
mayton
dakeiras
пропущено...


Вот пример приложения, защищённого с помощью Ascend:

https://github.com/INFINITE-TECHNOLOGY/ORBIT

Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend.

https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security


Разве так делаются презентации? Чувак ты серъезно?

Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь
ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать
выводы что фреймворк с мировым именем имеет неверную архитектуру?

Ты серъезно, родной?


Не делаются, согласен 100%.
Интерес есть, я очень рад. Теперь есть мотивация сделать норм. документацию и презентацию.

Чуть подождите (1-2 месяца).

Ещё раз спасибо за комментарии.
12 май 20, 22:49    [22131644]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Мне кажется за тобой должок.

Ты еще по своему Толстому Робину-Бобину обещал выкатить доклад.
12 май 20, 22:51    [22131646]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
chpasha
Member

Откуда:
Сообщений: 9222
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)
13 май 20, 11:46    [22131896]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
chpasha
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)


я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю.

Но вроде всё срослось и решение отлично работает на омологационном проекте.

Это при том что это же решение несколько лет в банке на проде крутится (реализованное индусами по моему ТЗ). И тогда та же самая ситуация была.

Это реально опасно для мозга такими проектами заниматься, ночами не спишь - продумываешь решения.

Кстати поэтому и такая интонация у меня, немного с чувством несправедливости :)

С другой стороны, сделав прошлой осенью мега проект на много миллиардов баксов без единого бага (написав транспилятор Кобола в Яву), уверенность в себе оч. возраста, да...
13 май 20, 14:15    [22132080]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
dakeiras
chpasha
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;)


я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю.

По поводу всех велосипедов связанных с безопасностью.

Я брошу 5 копеек. Очень многие Кулибины и Бахметьевы делают свои фреймворки и библиотечки.
Но их разработки не имеют никакого значения до тех пор пока не будет экспертизы со стороны
людей которые инфо-безопасностью занимаются.

И ругать здесь Spring - не продуктивно. Spring это связующий клей для фреймворков. Он просто
предлагает самый верхний уровень абстракций. Если я аннотирую метод @Secured - то я не регламентирую
никоим образом ни алгоритм ни протокол проверки сертификата пользователя. Я отдаю его на откуп
библиотеке и конфигурации. Сюда-же до кучи фильтры сервлетов и прочее. Это просто абстракции.

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

А если ты нашел в JWT Token дефект безопасности - пожалуйста пиши баги сюда
https://github.com/lcobucci/jwt/issues если это действительно баг или предложения по изменениям.
13 май 20, 14:31    [22132102]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
Mayton, насчёт "не изобретать свой фреймворк безопасности и не экспериментировать" - это правильно и общеизвестный факт.

И я с ним согласен.

Кстати я занимаюсь безопасностью в частности. Но это не отменяет вышенаписанное.

Могу сказать одно: есть разрыв между теоретическим аппаратом Веб Безопасности и прикладными моделями предметных областей (ООП, та же Java).

Это кстати вызвано отмороженностью (отбитостью) некоторых безопасников, за ними замечено уже :)
Но тем не менее эта проблема имеет место и применима и к Spring Security.
13 май 20, 14:38    [22132110]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Дада. Это в первую очередь относится к теме топика

Spring Security имеет неверную архитектуру


Тема слишком громкая и вызывающая. Я думаю что ее стоит смягчить.

Этот топик - закрыть. А тебе - поднять новый. По безопасности карточных продуктов.
Насколько я понял это твой основной поинт.
13 май 20, 14:46    [22132119]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
dakeiras,

Кстати, посмотрел мельком код вашего очередного решения
Правильно ли я понимаю:
1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)
2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body
3) Что с проверкой безопасности в случае multipart request?
4) Что с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:)
5) Кеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос?
19 май 20, 12:21    [22135665]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
Lelouch,

Привет, спасибо за хорошие вопросы.

автор
1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)

Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там.
Гуй уже в процессе создания, на Vue.js.

автор
2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body

Проверка Body концептуально хитрая задача.
Взять хотя бы Spring ACL - это ужас, и к тому же не все случаи поддерживает (HATEOAS тот же нормально не поддержать).

Поэтому предлагается следующая конвенция:
- Ownership of parent entity проверяется через URL regex, при этом рекомендуется "Myself" approach:
"{chanelName}/videos"

- Ownership of nested entities проверяется через Body regex, но при этом используется только HATEOAS/HAL, т.к. это позволяет избежать нормализации Body и всяких атак на regex.
Т.е. вот так предлагается делать (пишу по памяти):

HTTP 1.1 POST
"/john.doe/videos/15/channel"

Сontent-Type: application/hal+json
Authorization: ....."authorizedCredentials": ["userName":"john.doe"]

/john.doe/channels/3


Где john.doe это authorizedCredential в токене.

И т.о. настройка безопасности:

"urlRegex": "https:\/\/somehost\/someroot\/%username%\/.*"
"bodyRegex": "https:\/\/somehost\/someroot\/%username%\/.*"

Даёт юзеру ключать только свои ресурсы в свои ресурсы.
20 май 20, 09:47    [22136205]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
автор
Что с проверкой безопасности в случае multipart request

bodyRegex работает с прочитанным inputStream.
Но как выше написано, предлагается bodyRegex использовать только с HATEOAS/HAL.

Иначе легко допустить уязвимость в написании regex для JSON или XML.

автор
Что с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:)

Кастомный валидатор нужен будет вместо regex. В реализации которую индусы делали по моим спекам так было сделано.
Я пока это убрал для простоты.

автор
Кеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос?

Завёл задачу:
https://github.com/INFINITE-TECHNOLOGY/ASCEND/issues/2

Спасибо!
20 май 20, 09:54    [22136209]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
dakeiras
Lelouch,

Привет, спасибо за хорошие вопросы.

автор
1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там)

Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там.
Гуй уже в процессе создания, на Vue.js.


Нежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL. При этом еще и требуется написать инструкцию для обновления (например, для релизного стенда - "при выкатывании версии 2 сходите в UI и поменяйте URL").

dakeiras
Проверка Body концептуально хитрая задача.

Только вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor. Скорее всего есть еще способы, лень искать. У вас - только во внешней системе. И кастомный фильтр не спасает - в таком случае мне необходимо обновлять этот фильтр всякий раз при изменении контракта.

Сообщение было отредактировано: 20 май 20, 14:42
20 май 20, 14:43    [22136394]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
P.S. Мне кажется или это - волшебно?
Картинка с другого сайта.
20 май 20, 14:54    [22136402]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
автор
Нежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL.


в этом весь смысл. Разработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности.

автор
Только вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor.


Повторюсь, Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности.

Это создаёт риск ошибок, вовлекает разработчиков в управление доступом, а также не платформонезависимо и не централизованно.

А также разрывает атомарность авторизационной транзакции, деля её на Аутентификацию (JWT) и будущую Авторизацию по факту каждого обращения к ресурсу. Это приводит к тому, что изменения правил доступа получают Обратную Силу, т.е. аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

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

А правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры.
20 май 20, 14:59    [22136404]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
Lelouch
P.S. Мне кажется или это - волшебно?
Картинка с другого сайта.


Ну нету гуя пока, уже делаю. Даже Vue.js освоил ради этого.
20 май 20, 15:01    [22136405]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
dakeiras
Lelouch
P.S. Мне кажется или это - волшебно?
Картинка с другого сайта.


Ну нету гуя пока, уже делаю. Даже Vue.js освоил ради этого.


Причем тут гуй?
1) Ключ вообще лучше хранить в настройках
2) Для накатывания состояния базы есть liquibase например
3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются

dakeiras
А правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры.

И что делать с вашим "решением", если логика работы зависит от прав пользователя?:)

dakeiras
Разработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности.

1) Разработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен
2) Что делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:)

dakeiras
Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности.

1) Ну то есть вы в этом топике сравниваете апельсин и лопату?
2) @PreAuthorize("isFullyAuthenticated() and @mySecurityBean.hasAccessTo(#objectId)") - не является "автоматизацией проверки доступа в acl"? или имеется в виду, что таки нужно реализовать этот самый mySecurityBean?

Сообщение было отредактировано: 20 май 20, 15:17
20 май 20, 15:17    [22136421]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
автор
Причем тут гуй?
1) Ключ вообще лучше хранить в настройках
2) Для накатывания состояния базы есть liquibase например
3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются


Это публичный ключ, его без разницы где хранить.

Как только появится гуй, этот класс вообще исчезнет, т.к. настройки будут правится через ГУЙ только.
Зато видно наглядно как настраивается на кокнетных примерах.

автор
И что делать с вашим "решением", если логика работы зависит от прав пользователя?:)


Это неправильная архитектура. Логика не должна зависеть от прав доступа. Т.е. Админ - это не Юзер, совсем. Это - другая сущность и другая identity. И у админа должно быть отдельное админское приложение.

Всё что должно быть - авторизация и step up авторизация. При этом step up не влияет на логику никак - лишь даёт доступ к существующей логике, но не меняет её.
Пример - менюшки. Неправильно делать так:
if (user.isAdmin()) {
    showUserMenu();
    showAdminMenu();
} else {
    showUserMenu();
}


Правильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений.
20 май 20, 15:31    [22136444]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
автор
Разработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен


Логика проверки доступа является частью управления доступом, т.е. разработчик может умышленно сделать backdoor.

автор
Что делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:)

Ascend - система Веб безопасности, поддерживает только протокол HTTP.

автор
или имеется в виду, что таки нужно реализовать этот самый mySecurityBean?

Да, имеется в виду реализация логики.

Вообще, давайте на секунду абстрагируемся от Спринга.

Ascend встроенный в Reverse Proxy или в гейтвей платформонезависим, и обеспечивает безопасность любых Веб приложений, например PHP, Python, и т.д.
Достаточно контейнеризовать legacy приложение и спрятать его в частной подсети в контейнере.

Сообщение было отредактировано: 20 май 20, 15:36
20 май 20, 15:36    [22136449]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
dakeiras
аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

Приведите пример, когда это плохо?
20 май 20, 15:39    [22136450]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
dakeiras,

dakeiras
Логика не должна зависеть от прав доступа.


Логика легко может зависеть от роли пользователя. Вы видимо считаете, что роли безопасности не могут быть частью "бизнес процессов". Это не так.


dakeiras
Правильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений.


"Менеджер" в автосалоне может сделать 2 скидки в день, а "старший менеджер" - 10.
Одновременно с этим "менеджер" не может продать машину без одобрения "старшего менеджера".
1) Видимо кто-то из них "админ", а кто-то "юзер"?:)
2) Вы видимо предлагаете реализовать 1 ограничение минуя правовую модель, а второе - в ней? А как у вас можно проверить состояние одобрения?
3) нужно для каждого по отдельному приложению сделать?:)
P.S. Пример выше - выдуманный

У меня ощущение что вы взяли из нормальных SECAAS только 1 функцию - ограничение доступа к ресурсам - и пытаетесь ее продать
github
Monthly:

0-5000 successfully granted authorizations - free
Each extra: $0.01 per each successful authorization grant

Кстати, а что будет, если я защищу что-либо вашей системой, а ее взломают? Сколько вы мне денег в таком случае заплатите?

P.S. А что если у меня приложение с сессиями и url + body ни разу не достаточны для понимания, что делает пользователь?

Сообщение было отредактировано: 20 май 20, 15:46
20 май 20, 15:42    [22136455]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
dakeiras
Member

Откуда:
Сообщений: 447
mayton
dakeiras
аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки.

Приведите пример, когда это плохо?


Вы купили Единый проездной на 1 неделю, он включает:
- Автобус
- Трамвай
- Метро

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

А по хорошему, должно было затронуть только билеты выпущенные после изменения правил доступа.

Можно добавить проверку на дату\время конечно, но это костыль в данном случае.
20 май 20, 15:52    [22136460]     Ответить | Цитировать Сообщить модератору
 Re: Spring Security имеет неверную архитектуру  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1850
dakeiras
mayton
пропущено...

Приведите пример, когда это плохо?


Вы купили Единый проездной на 1 неделю, он включает:
- Автобус
- Трамвай
- Метро

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

А по хорошему, должно было затронуть только билеты выпущенные после изменения правил доступа.

Можно добавить проверку на дату\время конечно, но это костыль в данном случае.


Классный пример из сторонней области. Вот вам более релевантный:
1) Злоумышленник узнал мой логин и пароль. Я срочно звоню админу с просьбой срезать мне все права. Злоумышленник продолжает спокойно работать со старым токеном. Прекрасное решение, я считаю.
2) Стажеру Васе случайно дали право на функцию "Achtung!!! Налоговая! Отправить сервер с черной бухгалтерией в космос!!!", но спохватились и через 10 секунд забрали. Но у Васи видимо доступ должен остаться :)

Сообщение было отредактировано: 20 май 20, 15:54
20 май 20, 15:54    [22136462]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Java Ответить