|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Просветите ДБА, пожалуйста, неужели ASP.NET Core теперь не поддерживает имперсонацию? И все программы, которые подключаются через pool должны теперь использовать один общий логин (service pool login) для подключения к БД? Ссылка ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 03:04 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111, Включить персонализацию, можно, но разрабочики ASP.NET Core настоятельно не рекомендуют это делать. А если уж и включили, то использовав персонализированные запросы максимально быстро закрывать соединения. Убрана персонализация на основании того, что сам процесс жестко привязан к IIS pipeline. То есть, таким образом кроссплатформенность сводится на "нет". От слова "совсем". Уверен, что персонализированные запросы можно полностью исклчючить в любой бизнес-логики, любого приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:32 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Просветите ДБА, пожалуйста, неужели ASP.NET Core теперь не поддерживает имперсонацию? И все программы, которые подключаются через pool должны теперь использовать один общий логин (service pool login) для подключения к БД? Ссылка У веб-приложения должна быть единственная учётка для походов в БД, т.е. логин/пароль. Имперсонация нужна для приложений, выполняющихся на стороне пользователей, которые подключаются к БД напрямую. Для сервера приложений это полность лишено смысла, и протаскивать туда методы работы с БД из десктопа это натуральные грабли. Вроде как ДБА должен это понимать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:40 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Calabonga, Спасибо за ответ. Вы правы если речь идет об одном приложении, но если это API и он используется несколькими приложениями, убирать возможность управления правами доступа на уровне базы данных не просто глупо, но и опасно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:41 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
hVosttIdol_111Просветите ДБА, пожалуйста, неужели ASP.NET Core теперь не поддерживает имперсонацию? И все программы, которые подключаются через pool должны теперь использовать один общий логин (service pool login) для подключения к БД? Ссылка У веб-приложения должна быть единственная учётка для походов в БД, т.е. логин/пароль. Имперсонация нужна для приложений, выполняющихся на стороне пользователей, которые подключаются к БД напрямую. Для сервера приложений это полность лишено смысла, и протаскивать туда методы работы с БД из десктопа это натуральные грабли. Вроде как ДБА должен это понимать. вот тут я Вас вообще не понял. см мой первый ответ. Вы считаете, что забить на безопасность на уровне ДБ - это наступать на грабли? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:43 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Calabonga, Спасибо за ответ. Вы правы если речь идет об одном приложении, но если это API и он используется несколькими приложениями, убирать возможность управления правами доступа на уровне базы данных не просто глупо, но и опасно. Правами доступа управляет приложение, так как оно находится на сервере, а не на компьтере пользователя, это абсолютно нормальная практика, это безопасно. Сказать, что это глупо, это критиковать 99% информационных систем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:45 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111вот тут я Вас вообще не понял. см мой первый ответ. Вы считаете, что забить на безопасность на уровне ДБ - это наступать на грабли? Не вижу никаких проблем с безопасностью. Пользователи не имеют доступа к БД, соответственно не нужно грантовать каждого пользователя по отдельности, во-первых вот это действительно глупо, во-вторых очень не гибко, в-третьих, если дба занимается тем, что раздаёт полномочия каждому пользователю в БД, то совершенно точно, дба занимается не тем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:47 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
hVosttIdol_111Calabonga, Спасибо за ответ. Вы правы если речь идет об одном приложении, но если это API и он используется несколькими приложениями, убирать возможность управления правами доступа на уровне базы данных не просто глупо, но и опасно. Правами доступа управляет приложение, так как оно находится на сервере, а не на компьтере пользователя, это абсолютно нормальная практика, это безопасно. Сказать, что это глупо, это критиковать 99% информационных систем. Я слишком хорошо знаю реальность и 99% это не аргумент. Представим, что одно приложение должно читать данные из таблицы, а другое не в коем случае (т.е. deny), и вот это уже не сделать. Я уже молчу, если нужно реализовать доступ по колонкам или строкам, что легко делается на уровне ДБ. Хотел бы я посмотреть как это реализуют на уровне приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:52 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
hVosttIdol_111вот тут я Вас вообще не понял. см мой первый ответ. Вы считаете, что забить на безопасность на уровне ДБ - это наступать на грабли? Не вижу никаких проблем с безопасностью. Пользователи не имеют доступа к БД, соответственно не нужно грантовать каждого пользователя по отдельности, во-первых вот это действительно глупо, во-вторых очень не гибко, в-третьих, если дба занимается тем, что раздаёт полномочия каждому пользователю в БД, то совершенно точно, дба занимается не тем. ресь от доступе приложению, а не пользователям. И обычно делается один раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 04:53 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Я слишком хорошо знаю реальность и 99% это не аргумент. Представим, что одно приложение должно читать данные из таблицы, а другое не в коем случае (т.е. deny), и вот это уже не сделать. Я уже молчу, если нужно реализовать доступ по колонкам или строкам, что легко делается на уровне ДБ. Хотел бы я посмотреть как это реализуют на уровне приложения. Если приложения клиентов не имеют доступа к БД, но имеют доступ к API, при чём тут доступ на уровне ДБ? https://docs.microsoft.com/ru-ru/aspnet/core/security/authorization/roles?view=aspnetcore-2.1 Вот уж невидаль, сервер приложения реализует доступ к данным ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 05:33 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
hVosttIdol_111Я слишком хорошо знаю реальность и 99% это не аргумент. Представим, что одно приложение должно читать данные из таблицы, а другое не в коем случае (т.е. deny), и вот это уже не сделать. Я уже молчу, если нужно реализовать доступ по колонкам или строкам, что легко делается на уровне ДБ. Хотел бы я посмотреть как это реализуют на уровне приложения. Если приложения клиентов не имеют доступа к БД, но имеют доступ к API, при чём тут доступ на уровне ДБ? https://docs.microsoft.com/ru-ru/aspnet/core/security/authorization/roles?view=aspnetcore-2.1 Вот уж невидаль, сервер приложения реализует доступ к данным ))) похоже мы идем по кругу. И в Вашем примере я не вижу как это через роли приложений реализовали раздельный доступ (колонки/строки). Можно я резюмирую, а Вы поправите если я не прав: 1)так делают все, потому что МелкоСофт "сказал". Т.е. это реально майнстрим на сегодня. 2)управление доступом к данным переносится подальше от источника данных, с БД уровня на уровень API. (что логически снижает безопасность, "чем дальше тем хуже контролировать"). Наверное в каких-то случаях это оправданно. Может, что-то облегчает (хотя мне сложно представить что). 3) рулят доступом теперь те кто рулит API (сисадмины или девелоперы, зависит от конторы) Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 06:28 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Я может быть где-то недопонял, поэтому переспрошу. Если вы хотите Windows-аутентификацию приложения в СУБД, то причем тут Core - это кроссплатформ, а не винда. Если нужно разделить права для приложений, почему бы не воспользоваться аутентификацией сервера (без AD) и логиниться из разных приложений под разными логинами и разделить права для этих логинов? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 06:51 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111но если это APIвот здесь подробнее. Что за API к СУБД. Есть двухзвенка клиент сервер и трехзвенка. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:15 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Shocker.ProЯ может быть где-то недопонял, поэтому переспрошу. Если вы хотите Windows-аутентификацию приложения в СУБД, то причем тут Core - это кроссплатформ, а не винда. Если нужно разделить права для приложений, почему бы не воспользоваться аутентификацией сервера (без AD) и логиниться из разных приложений под разными логинами и разделить права для этих логинов? хороший вопрос, в точку, вот только не ко мне, а к нашим девелоперам. Они похоже тоже решили - все делают и мы будем. Честно, понятия не имею зачем. Просто поставлен перед фактом. И теперь нужно как-то с этим жить. Во многих конторах так, вначале девелоперы наваяют, а потом советуются. А переписывать уже лень. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:17 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111не ко мне, а к нашим девелоперамну дак позовите их. Вам решать там, переписывать или нет. В трехзвенке доступ через обезличенного публичного пользователя (сайт). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:20 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111похоже мы идем по кругу. И в Вашем примере я не вижу как это через роли приложений реализовали раздельный доступ (колонки/строки). Видимо потому, что вы не разработчик, вам сложно понять и осознать, как можно делать такие вещи, на уровне приложения, как в зависимости от роли, группы и иных атрибутов безопасности пользователя разрешать доступ к отдельным API, условиям выборки, атрибутам данных при построении запросов и выполнение изменяющих операций. Idol_1111)так делают все, потому что МелкоСофт "сказал". Т.е. это реально майнстрим на сегодня. Это вообще к MS не относится. Управление безопасностью пользователей для серверов приложений уже давным давно вынесено на уровень приложений. Это уже 10 лет назад было так, и для оракла и остальных систем. Управление правами пользователей через консоль БД, это огромная дыра в безопасности, это очень сложно сопровождать, управлять и контролировать. Тем более это не гибко. Единственный случай, когда это может быть действительно уместным, при наличии клиентских приложений, которые ходят в БД напрямую. Там других вариантов и нет, кроме как закостылить безопасность на грантах и через слой ХП. Но даже в случае клиентских приложений, делают API, и адекватную безопасность на уровне приложения на основе различных механизмов (role-based, claim-based, и т.д.) Тут дело не вообще ни разу ни в мейнстримовости, это вопрос практичности и возможности решать сложные задачи. Idol_1112)управление доступом к данным переносится подальше от источника данных, с БД уровня на уровень API. (что логически снижает безопасность, "чем дальше тем хуже контролировать"). Наверное в каких-то случаях это оправданно. Может, что-то облегчает (хотя мне сложно представить что). Как раз наоборот, источником данных и средство выполнения операций для клиентов является API, соответственно безопасность должна решаться именно там. Какие проблемы с безопасностью вы видите? Я не вижу, и не только я. Управление доступом пользователей тоже должно быть скрыто за слоем той же безопасности. Например, вышеподчинённые роли раздают права нижеподчинённым в рамках своих полномочий. Как вы это собираетесь решать на уровне БД? Управление доступом пользователей осуществляется также через приложение (админка), как вы это будете решать на уровне БД? Делегирование полномочий, как решать на уровне БД? И т.д. и т.п. продолжать можно очень долго. Idol_1113) рулят доступом теперь те кто рулит API (сисадмины или девелоперы, зависит от конторы) Естественно. Я сложно могу себе представить ситуацию, когда начальник отдела попросит управлять правами для своих подчинённых в рамках своих полномочий, а ему скажут, это технически невозможно, так как это делается через консоль БД, и для этого нужно обладать квалификацией. Квалификацией, чтобы я могу пойти по ставить галочку, можно ли Васе редактировать документы? Издеваетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:21 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Petro123Idol_111но если это APIвот здесь подробнее. Что за API к СУБД. Есть двухзвенка клиент сервер и трехзвенка. А какая разница в данном случае. Одна или несолько БД -> API (для доступа к этим базам) -> много приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:22 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
hVostt, ну записывать меня в чистые админы я бы не стал :), я умудрился еще на фортране пописать. 1)2)3) Вы очевидно путаете админстрирование для конечного пользователя и для программы. Все, что Вы описали - это для конечного пользователя, и вне сомнения это должно быть сделано на уровне программы, тут спору нет. Еще раз опишу, что меня беспокоит как ДБА: Несколько программ обращаются к API и затем обезличиваясь под ОДНИМ логином лезут в БД. Это в принципе не есть хорошо (простые примеры привел выше). А уж о решение проблем с производительностью вообще можно свет тушить. Какая программа уронила сервер надо долго и нудно ковыряться в логах теперь не только БД, но еще API. Супер! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:37 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111А какая разница в данном случае. Одна или несолько БД -> API (для доступа к этим базам) -> много приложений. Угу. Какая разница какой врач, гинеколог или хирург. Всё одно и то же). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:38 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111ну записывать меня в чистые админы я бы не стал :), я умудрился еще на фортране пописать.в фирме есть интранет и веб приложение во внутренней сети? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:42 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Petro123, да ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:44 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Petro123, давот и расскажите, что за юзверь там ходит в бд через пул коннектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 08:00 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Shocker.ProЯ может быть где-то недопонял, поэтому переспрошу. Если вы хотите Windows-аутентификацию приложения в СУБД, то причем тут Core - это кроссплатформ, а не винда. Если нужно разделить права для приложений, почему бы не воспользоваться аутентификацией сервера (без AD) и логиниться из разных приложений под разными логинами и разделить права для этих логинов? хороший вопрос, в точку, вот только не ко мне, а к нашим девелоперам. Они похоже тоже решили - все делают и мы будем. Честно, понятия не имею зачем. Просто поставлен перед фактом. И теперь нужно как-то с этим жить. Во многих конторах так, вначале девелоперы наваяют, а потом советуются. А переписывать уже лень.А что там переписывать-то? В чем сложности изменить строку подключения с Windows-аутентификации на аутентификацию СУБД? Ваши аргументы как DBA мне понятны, но вы как DBA можете поставить условие разработчику "Вот эта твоя прога должна лезть в БД под таким-то логином и паролем. Точка". И волки сыты и данные целы. Повторю, это только вопрос строки подключения. Либо есть еще какие-то камни, которые вы не озвучиваете, например админы, которые навязывают AD. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 08:02 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Idol_111Еще раз опишу, что меня беспокоит как ДБА: Несколько программ обращаются к API и затем обезличиваясь под ОДНИМ логином лезут в БД. Это в принципе не есть хорошо (простые примеры привел выше). А уж о решение проблем с производительностью вообще можно свет тушить. Какая программа уронила сервер надо долго и нудно ковыряться в логах теперь не только БД, но еще API. Супер! эм вот я обращаюсь к сервиса доставки чтоб они мне дали адреса куда можно и цену. по вашему они мне что делают свое соединение? Хвост вам все правильно говорит. проблемы с перфомансом - как это решается за счет разных учеток? если программа уронила сайт для этого есть к примеру ролбар или грейлог, если в файловых логах стремно искать, что соберет максимально все и предоставить в удобном виде. если ваши программы лезут через одно общее апи то никто не отменял их авторизацию и реализацию прав, чтоб понять кто и откуда что сделал и что может впринципе сделать. Перекладывать эт на уровень учеток к бд это не есть хорошая практика в вебе, для изернета я б еще понял на основе учеток AD. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 08:55 |
|
ASP.NET Core doesn't implement impersonation
|
|||
---|---|---|---|
#18+
Shocker.Pro, Вы, похоже, немного не уловили суть проблемы. Windows authentication (по вашему - через AD) лучше чем SQL login по многим причинам (включай безопасность). И у каждой программы есть AD account, который и используется для подключения к API. Меня как ДБА не устраивает, что затем API подключается к БД под одним общим логином. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 00:13 |
|
|
start [/forum/topic.php?fid=18&fpage=19&tid=1355173]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 421ms |
0 / 0 |