|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Может ли другой юзер выбрать список датабазе ролей другого юзера? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:26 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, права на просмотр метаданных должны быть. а так: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:49 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, права на просмотр метаданных должны быть. а так: Код: sql 1. 2. 3.
В частном случае - да. Фигня начинается, когда domain\user входит в domain\group, а сам domain\user явно не включен в назначения ролей. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 15:57 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин felix_ff Ролг Хупин, права на просмотр метаданных должны быть. а так: Код: sql 1. 2. 3.
В частном случае - да. Фигня начинается, когда domain\user входит в domain\group, а сам domain\user явно не включен в назначения ролей. Код: sql 1. 2. 3. 4. 5. 6.
Более того доменный пользователь может вообще не быть отмаплен логином на сервер, а ходить из под доменной группы. Но тогда у вас изначальный вопрос несколько искажен. Что Вы в итоге хотите видеть? опишите ситуацию более конкретно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:19 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин пропущено... В частном случае - да. Фигня начинается, когда domain\user входит в domain\group, а сам domain\user явно не включен в назначения ролей. Код: sql 1. 2. 3. 4. 5. 6.
Более того доменный пользователь может вообще не быть отмаплен логином на сервер, а ходить из под доменной группы. Но тогда у вас изначальный вопрос несколько искажен. Что Вы в итоге хотите видеть? опишите ситуацию более конкретно. я заустил приложение, коннектнулся к среднеуровневому сервису, передал ему имя юзера Юзер101, хотелось бы, чтоб сервис сходил на SQL Server и узнал список ролей, которые получил бы Юзер101, если бы коннектнулся напрямую к серверу базы. При этом Юзер101 может быть SQL Server-ным юзером, доменным юзером, у которого явно в базе указаны его роли или членом группы ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:24 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, на мой взгляд самый простой вариант это процедура обертка, которая повышает права сервисного пользователя внутри себя до возможности олицетворения нужного контекста пользователя. олицетворяете пользователя, вычитываете инфу токена базы данных, возвращаете требуемый набор. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:28 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, на мой взгляд самый простой вариант это процедура обертка, которая повышает права сервисного пользователя внутри себя до возможности олицетворения нужного контекста пользователя. олицетворяете пользователя, вычитываете инфу токена базы данных, возвращаете требуемый набор. Т.е. все-таки то, во что я не хотел в 2020 г поверить снова: только юзер сам может вычитать список своих ролей ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:32 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, нет, вам по сути хватит VIEW DEFINITION права, и потом гемороится с sys.database_role_members на предмет "ой, а доменный ли это пользователь" "ой а не входит ли он в доменную группу" и.т.д вычитать разову инфу с sys.user_token sys.login_token намного проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:35 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, нет, вам по сути хватит VIEW DEFINITION права, и потом гемороится с sys.database_role_members на предмет "ой, а доменный ли это пользователь" "ой а не входит ли он в доменную группу" и.т.д вычитать разову инфу с sys.user_token sys.login_token намного проще. так все-таки - процедуру? как? пример можно чисто штрихами, как художник художнику ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 16:53 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин так все-таки - процедуру? как? пример можно чисто штрихами, как художник художнику для AD\account можно так: - выбрать все пути входа в сиквел - найти пересечение с результатом sp_helprolemember (выполнять в нужной бд) Код: sql 1. 2.
для SQL логина можно просто вторую процедуру ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 17:07 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин felix_ff Ролг Хупин, нет, вам по сути хватит VIEW DEFINITION права, и потом гемороится с sys.database_role_members на предмет "ой, а доменный ли это пользователь" "ой а не входит ли он в доменную группу" и.т.д вычитать разову инфу с sys.user_token sys.login_token намного проще. так все-таки - процедуру? как? пример можно чисто штрихами, как художник художнику ну примерно так, там еще поиграться с условностями входа в public оно для dbo к примеру никогда не показывает что он туда входит, думаю допилить под себя сможете. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 17:45 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин пропущено... так все-таки - процедуру? как? пример можно чисто штрихами, как художник художнику ну примерно так, там еще поиграться с условностями входа в public оно для dbo к примеру никогда не показывает что он туда входит, думаю допилить под себя сможете. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
спасибо, пытаюсь адаптировать, всё сработало, но на последнем дает ошибку, выполняю из-под sa Код: sql 1.
авторMsg 15151, Level 16, State 1, Line 48 Cannot find the certificate 'cert01', because it does not exist or you do not have permission. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 12:03 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, проверьте что сертификат мигрировал с master в вашу целевую базу: Код: sql 1. 2. 3.
если строки нет значит криво выполнилась эта инструкция: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
там где выделено тоже нужно заменить на вашу БД ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 13:55 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, проверьте что сертификат мигрировал с master в вашу целевую базу: Код: sql 1. 2. 3.
если строки нет значит криво выполнилась эта инструкция: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
там где выделено тоже нужно заменить на вашу БД во втором случае я исправил на мою базу, иначе была бы ошибка, причина была в том, что сертификат не мигрировал. Сейчас ошибка ушла. Теперь осталось: при выполнении процедуры получаю естественно: exec [dbo].[usp_getRolesByLogin] 'юзер' Msg 50000, Level 16, State 16, Procedure dbo.usp_getRolesByLogin, Line 7 [Batch Start Line 53] You dont have permissions for impersonate this context ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 14:38 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, ну а теперь подписать надо, иначе права от сертификата не добавятся Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 14:56 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, ну а теперь подписать надо, иначе права от сертификата не добавятся Код: sql 1.
подписал, все ок, вот здесь нет имперсонизации if has_perms_by_name(@login_name, 'LOGIN', 'IMPERSONATE') = 0 throw 50000, 'You dont have permissions for impersonate this context', 16; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 14:57 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, а право impersonate any login для логина сертификата выдали? измените немного процедуру: перед проверками if добавьте Код: sql 1. 2.
и заново подписать только не забудьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 14:59 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, а право impersonate any login для логина сертификата выдали? измените немного процедуру: перед проверками if добавьте Код: sql 1. 2.
и заново подписать только не забудьте. добавил, переподписал, запросы выдали результаты Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 15:24 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, О так вы вообще под sa процу запускаете у него даже без сертификата права будут. В любом случае сертификат виден и право тоже, по сути проверку на if has_perms_by_name(login, 'login', 'impersonate') должно проходить на ура. вы в параметр @login_name точно указываете именно имя логина? и такой логин представляет именно отдельного пользователя, не доменную группу какую нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 15:31 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, О так вы вообще под sa процу запускаете у него даже без сертификата права будут. В любом случае сертификат виден и право тоже, по сути проверку на if has_perms_by_name(login, 'login', 'impersonate') должно проходить на ура. вы в параметр @login_name точно указываете именно имя логина? и такой логин представляет именно отдельного пользователя, не доменную группу какую нибудь? Пробовал из-под разных, решил кардинально попробовать - sa Но там возможно проблема в том, что тестовая база когда-то от кустомера получена, его домена у меня нет, групп и доменных юзеров тоже. Сейчас сделаю руками юзера, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 15:37 |
|
Как выбрать все database roles указанного юзера?
|
|||
---|---|---|---|
#18+
Ролг Хупин, если домена нет конечно под таким логином олицетворение не пройдет, но по сути вы и подключиться от такого логина никогда и не сможете. пробуйте дать на вход или реальный sql логин, или реальный доменный логин. касатально доменных логинов важная особенность: он реально должен иметь возможность подключаться к инстансу (или быть отмаплен в логины или иметь возможность аутентифицироваться через доменные группы) если к примеру у вас в домене три пользователя: mydomain\vasya mydomain\petya mydomain\igor mydomain\vasya реально отмаплен логином в инстанс mydomain\petya входит в доменную группу mydomain\sql_access которая отмаплена в инстанс то для васи и пети процедура отработает, а для igor будет ругаться, потому что данный логин не имеет доступа к сиквелу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 15:40 |
|
|
start [/forum/topic.php?fid=46&msg=40026004&tid=1685314]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 443ms |
0 / 0 |