Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
короче, это у них очередной бардак с правами.
смотрите, у них уже тут двусмысленно:
Guidelines on revoking Guest user access in a database.
In SQL Server, a special user, guest, exists to permit access to a database for logins that are not mapped to a specific database user.
Because any login can use the database through the guest user, it is suggested that the guest user not be enabled.

сами пишут сперва, что guest нужен для неотмапленных
и тут же "любой логин может проникнуть в базу через guest-а".
хитрожопые, простите за точный эпитет.
уж правда определились бы, всех через guest-а пускают или только неотмапленных,
а то удобно устроились:
ведь "неотмапленные" как раз в guest-а и мапятся, а отмапленные значит попадают через guest-а,
а мапятся в себя?
27 янв 15, 16:38    [17178003]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
сами пишут сперва, что guest нужен для неотмапленных
и тут же "любой логин может проникнуть в базу через guest-а".

А вы всегда отдельные предложения читаете отдельно ?
27 янв 15, 16:40    [17178020]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory
o-o
нет, ну ТС уже исправился и зашел в базу чисто,

Что значит "чисто" ?
Если он зашел в базу уже как guest, то зачем ему еще выполнять execute as user = 'guest' ?

он не зашел как guest.
посмотрите его права:
select *
  from sys.fn_my_permissions(null, 'database')

там нет ни коннекта, ни прав на таблицу, к-ые выдали guest-у.
у него его собственные права, вернее, их полное отсутствие.
27 янв 15, 16:44    [17178043]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
он не зашел как guest.
посмотрите его права:

там нет ни коннекта, ни прав на таблицу, к-ые выдали guest-у.
у него его собственные права, вернее, их полное отсутствие.


Как он тогда смог выполнить на текущей базе имперсонацию в пользователя базы, если он не зашел в базу ?
27 янв 15, 16:46    [17178064]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory
o-o
сами пишут сперва, что guest нужен для неотмапленных
и тут же "любой логин может проникнуть в базу через guest-а".

А вы всегда отдельные предложения читаете отдельно ?

представьте себе, нет.
но меня изрядно бесит, когда пишут неопределенно,
как хочешь, так и понимай.
вернее, пока все хорошо, все довольны,
а как неконсистентность налицо, надо же, документация так написана, что оправдает что угодно.
из серии "казнить нельзя помиловать",
вы такое как читаете, запятую ставите в зависимости от того, что сегодня хотите оправдать?
а завтра в другое место?
удобно, да.
27 янв 15, 16:49    [17178095]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
представьте себе, нет.
но меня изрядно бесит, когда пишут неопределенно,

А почему вы тогда читаете эти два предложения не как связанный текст ?
27 янв 15, 16:51    [17178113]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
ttt_user
Guest
Glory
А как тогда выполнятеся revoke connect to ttt, если уже нет прав на connect к текущей базы у ttt ?

Или вы сначала дали права на connect.
Потом соединились с базой.
А потом в этом соединении ждете, что после выполнения
revoke connect to ttt
вам нужно будет заново устанавливать соединение с базой ?


Я с самого начала воспроизводил ситуацию, когда вход в базу был осуществлён из-под админа. Раздавал требуемые права ttt и guest, а затем запускал execute as user для ttt при различных правах, определённых в скриптах, и разным выходным поведением . Поэтому право на коннект было дано, имея админские права.

o-o указал на то, что эксперимент не совсем чистый. Поэтому было проведено ещё 2, показавших то же самое: зашел в базу чисто, из мастера, сделав там execute as login; сделал попытки входа из Management Studio при тех же условиях.
27 янв 15, 17:00    [17178168]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory
o-o
он не зашел как guest.
посмотрите его права:

там нет ни коннекта, ни прав на таблицу, к-ые выдали guest-у.
у него его собственные права, вернее, их полное отсутствие.


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

во блин, вот эксперимент в наичистейшем виде, без имперсонэйтов:
use master;
go 

create login ttt with password = 'Abcd1Abcd'; -- login that will have user in db0
go

create login tttt with password = 'Abcd1Abcd'; --  login that will NOT have user in db0
go


create database db0;
go

use db0;
create user ttt from login ttt;
revoke connect to ttt;
grant connect to guest;
create table dbo.t (id int);
grant select on dbo.t to guest;

---
---another session, logged in as ttt that has the mapped user ttt

select *
from dbo.t;
---
Msg 229, Level 14, State 5, Line 1
The SELECT permission was denied on the object 't', database 'db0', schema 'dbo'.

select *
from sys.fn_my_permissions(null, 'database');
---
(empty resultset)


---another session, logged in as tttt that HAS NOT any mapped user 

select *
from dbo.t;
---
id

select *
from sys.fn_my_permissions(null, 'database');
---
entity_name	subentity_name	permission_name
database		CONNECT
27 янв 15, 17:02    [17178183]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
во блин, вот эксперимент в наичистейшем виде, без имперсонэйтов:

И что в нем неправильного ?
27 янв 15, 17:07    [17178210]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory,

неправильно, на мой взгляд и по мнению ttt_user, вот что:
первый login ttt имеет явно отмапленный user, второй (tttt) нет.
оба пролезли через гостя, только один лишь пролез через него,
позаимствовав гостевой коннект, и остался при своих правах.
а второй, раз явно не отмаплен, унаследовал ВСЕ права гостя.

при этом, как мы думаем с ТС, хоть что-то да должно отражать "позаимствованный" коннект.
но его нельзя вывести ни по user_name, ни по fn_my_permissions.
27 янв 15, 17:11    [17178233]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
оба пролезли через гостя,

И что им должно было _запретить_ пролезть ?
Где в вашем скрипте хоть какие то _запреты_ ?

Сообщение было отредактировано: 27 янв 15, 17:14
27 янв 15, 17:12    [17178240]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory
o-o
оба пролезли через гостя,

И что им должно было _запретить_ пролезть ?
Где в вашем скрипте хоть какие то _запреты_ ?


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

o-o
Glory
пропущено...

Что значит "чисто" ?
Если он зашел в базу уже как guest, то зачем ему еще выполнять execute as user = 'guest' ?

он не зашел как guest.
посмотрите его права:
select *
  from sys.fn_my_permissions(null, 'database')

там нет ни коннекта, ни прав на таблицу, к-ые выдали guest-у.
у него его собственные права, вернее, их полное отсутствие.


вы это игнорируете.
это не диалог.
это увиливание и перевод стрелок (будто мало такой же скользкой документации).
a все конструктивное давно высказано
27 янв 15, 17:18    [17178283]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
я удаляюсь из темы,
мне не надо про намекать про DENY, вы меняете аргумент.
вы несколькими постами выше утверждали, что наш ttt пролез ва базу как гость,
на что я вам привожу:

Конечно. Вы все хотите меня уверить, что все что не разрешено, то запрещено.
А верить в то, что разрешено то, что не запрещено, вы отказываетесь.

o-o
вы это игнорируете.

Потому что я вам уже повторял, что список прав в системных таблицах есть входные данные для механизма определения прав. А не сам механизм.
Но вы это тоже игнорируете.
27 янв 15, 17:22    [17178309]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
ttt_user
Guest
Glory
А верить в то, что разрешено то, что не запрещено, вы отказываетесь.


Это не так. Если нет явного или неявного grant на select, то прочитать таблицу Вам не дадут.

Ещё раз:

1) Я спросил: "Вот я и хочу понять, откуда у ttt неявные права на доступ к базе."
2) Ваш ответ: "Ну так grant connect to guest".
3) Моя фраза: "Если guest - это права, то ВСЕ права guest должны добавляться к ttt. Однако, например, право guest на SELECT не добавляется к правам ttt. Тогда получается, что конкретно право guest на connect - это неявное право для всех, а любые другие права guest - только для не имеющих логина, для которых USER_NAME вернёт guest."
4) Вы про SELECT: "Где репродакшен ?"
5) Я привёл скрипт.
6) Тогда Вы стали утверждать, что не наследовался connect от guest-а: "Откуда connect то уноследовался ?"
7) НО: connect ttt к базе (при отсутствии явного права) любым из трёх способов проходит при наличии права на connect у guest-а и не проходит при отсутствии такого права. Что это, как не "connect унаследовался"?
27 янв 15, 17:34    [17178386]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
ttt_user
7) НО: connect ttt к базе (при отсутствии явного права) любым из трёх способов проходит при наличии права на connect у guest-а и не проходит при отсутствии такого права. Что это, как не "connect унаследовался"?

Господи. Чесно слово
Покажите мне скрипт, где кто-то получил что-то при запрете это получить.
Иначе все это болтология.
27 янв 15, 17:40    [17178428]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory
Конечно. Вы все хотите меня уверить, что все что не разрешено, то запрещено.
А верить в то, что разрешено то, что не запрещено, вы отказываетесь.

неприкрытое вранье.
пока не дали коннект гостю, при "отозванном" (revoked) коннекте в базу ttt не попадал, правда?
хотя и не было явного DENY, и отмаплен товарищ с самого начала.

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

ну так чего же нам его не показывает fn_my_permissions ?
кажется, нам БОЛ обещает все права, не только явно выданные, а откуда угодно унаследованные
Returns a list of the permissions effectively granted to the principal on a securable.

securable = database.
effective permission = дуля с маком по мнению fn_my_permissions.
суслика нет, а он есть?

Glory
Еще раз guest не добавляет кому-то прав. И не отнимает.

никакого коннекта, ну конечно.
то ttt не попадал, то вдруг попал, а гость-то не при делах
27 янв 15, 17:49    [17178492]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
o-o
ну так чего же нам его не показывает fn_my_permissions ?
+ Репро
create login TestLogin01 with password = '111111';
create database DBTestUserPermissions;
go

use DBTestUserPermissions;
create user TestLogin01 for login TestLogin01;
go

-- №1
use master;
execute as login = 'TestLogin01';
use DBTestUserPermissions;
select * from sys.user_token;
select * from (select db_name(), user_name()) as a(db, u) left join sys.fn_my_permissions(null, 'database') on 1 = 1;
use master;
revert;
go

-- №2
use DBTestUserPermissions;
grant connect to guest;
revoke connect from TestLogin01;
go

use master;
execute as login = 'TestLogin01';
use DBTestUserPermissions;
select * from sys.user_token;
select * from (select db_name(), user_name()) as a(db, u) left join sys.fn_my_permissions(null, 'database') on 1 = 1;
use master;
revert;
go

-- №3
use DBTestUserPermissions;
drop user TestLogin01;
go

use master;
execute as login = 'TestLogin01';
use DBTestUserPermissions;
select * from sys.user_token;
select * from (select db_name(), user_name()) as a(db, u) left join sys.fn_my_permissions(null, 'database') on 1 = 1;
use master;
revert;
go

drop login TestLogin01;
use master;
drop database DBTestUserPermissions;
go
Нам интересен случай №2.
TestLogin01 попадает в БД DBTestUserPermissions за счет guest'a.
Но в user_token не может быть более более одной записи типа SQL USER и туда естественно попадает отмапленный TestLogin01, а не guest.
В результате fn_my_permissions не показывает разрешений guest'а.
27 янв 15, 18:21    [17178668]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
invm,

т.е. вы считаете, что разрешения гостя у TestLogin01 есть, их просто нам не показывают?
давайте расширим тест №2:
use DBTestUserPermissions;
create table dbo.t (id int);
grant select on dbo.t to guest;
go

use master;
execute as login = 'TestLogin01';
use DBTestUserPermissions;
select * from dbo.t;
use master;
revert;
go

Msg 229, Level 14, State 5, Line 4
The SELECT permission was denied on the object 't', database 'DBTestUserPermissions', schema 'dbo'.


как-то гость выборочно своими правами делится, только коннектом
27 янв 15, 18:58    [17178879]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
неприкрытое вранье.
пока не дали коннект гостю, при "отозванном" (revoked) коннекте в базу ttt не попадал, правда?
хотя и не было явного DENY, и отмаплен товарищ с самого начала.

какое уж тут вранье то
Абсолютно все ваши скрипты _разрешают_ кому-то что-то.
А вы почему-то ожидаете в результате, что кому-то что-то будет _запрещено_.
На мой взгляд, это как минимум абсурдно.

ЗЫ
и revoke - это не запрещение. это отмена того, что было раньше назначено
27 янв 15, 20:29    [17179170]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
ttt_user
Guest
Glory
Абсолютно все ваши скрипты _разрешают_ кому-то что-то.
А вы почему-то ожидаете в результате, что кому-то что-то будет _запрещено_.
На мой взгляд, это как минимум абсурдно.


То есть "The SELECT permission was denied" из приводимых мной и o-o скриптов Вам тоже кажется "как минимум абсурдно"? Ведь там тоже скрипты _разрешают_ кому-то что-то и нет никаких deny. Если применить Вашу логику, то отсутствие явных или неявных прав не должно быть препятствием к показу таблиц.
27 янв 15, 21:28    [17179386]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
ttt_user
То есть "The SELECT permission was denied" из приводимых мной и o-o скриптов Вам тоже кажется "как минимум абсурдно"?Ведь там тоже скрипты _разрешают_ кому-то что-то и нет никаких deny.

Вы с о-о на пару наприводили уже так много скриптов, фрагментов скриптов и фрагментов фрагментов, так что уточняйте, где вы что-то разрешаете и не получаете того, что разрешили
28 янв 15, 01:37    [17180190]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Glory,

надо же, мы навалили.
это вы тут пропихиваете мега-идею, что
Glory
разрешено то, что не запрещено

чтобы кто-то на что-то не имел прав,
необязательно ему делать DENY, достаточно не выдавать сами права, или и с этим будете спорить?
вы как людям права раздаете, грантами кому надо
или денаями всем, кому нельзя?

скрипт вот, простейший:
create login ttt with password = '*****';
go
create database ddd;
go
use ddd;
create user ttt from login ttt; -- это создало юзера и выдало ему connect
revoke connect to ttt; -- это отобрало выданный connect

-- в соседней сессии залогинился ttt и делает:
use ddd;

Msg 916, Level 14, State 1, Line 1
The server principal "ttt" is not able to access the database "ddd" under the current security context.


после этого выдаете коннект гостю:
grant connect to guest


все. юзер ttt попадает.
но не как гость, хотя документация и пишет, что через гостя будут ходить не отмапленные в базу логины
(мапясь при этом в гостя)
он будет попадать как ttt, с правами ttt, но с коннектом простите кого?
28 янв 15, 02:14    [17180247]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
o-o
после этого выдаете коннект гостю:
grant connect to guest

Дайте подумать.
Значит вы выдаете права на коннект и права ... появляются.
Хм. А что тут не так ???
Еще раз.
Выдаю права - права появляются.
Черт ! В чем же подвох ???
Еще раз.
Выдаю - появляются
Все ! Разрыв шаблона причинно следственной связи ! При выдаче прав права больше не должны предоставляться !
Добро пожаловать или Посторонним вход запрещен - ремейк 2015 года
Занавес
Дальше продолжайте свое феерическое шоу без меня
28 янв 15, 09:15    [17180590]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
o-o
Guest
Show must go on:
create table dbo.t(id int);
grant select on dbo.t to guest;
-- в соседней сессии ttt выполняет
select * from dbo.t;
Msg 229, Level 14, State 5, Line 4
The SELECT permission was denied on the object 't', database 'ddd', schema 'dbo'.

Выдали права, ой, надо же, выдали, кому?
Дайте Глори подумать, все тому же гостю, а ttt не читает таблицу! И даже не было явного DENY!
Ужас-ужас.
Коннектом гость делится, а правами на таблицу не хочет. Жмот натуральный.
Может, гость это не роль паблик, куда все входят?
Может, в него мапятся дишь не имеющие в базе своего маппинга? Потому и права гостя это не права ttt? А, ну да, кроме коннекта. Гостевой же коннект он для всех...
28 янв 15, 09:40    [17180719]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение "grant connect to guest".  [new]
Glory
Member

Откуда:
Сообщений: 104751
Давай, Малешкин ! Жми, Малешкин ! (с) х/ф На войне как на войне
28 янв 15, 09:43    [17180735]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить