Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 execute as и сертификат  [new]
nem1
Guest
Добрый день.
Sql server 2012
Есть 2 db, db1 и db2
В db1 есть процедура procedure1, которая должна вставить данные в db2 в таблицу table2
У user1 есть права доступа только к db1, к db2 прав доступа быть не должно.
Как я понимаю, есть 2 решения execute as и сертификат
Распишите, пожалуйста, по шагам, что необходимо сделать, код необязателен, найду в mdsn
18 янв 17, 11:24    [20117558]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
Еще cross-database ownership chaining.
18 янв 17, 11:27    [20117566]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
nem1
Guest
Сергей Алексеевич,

Спасибо, не знал про этот способ, благодаря ему нашёл отличную тему на форуме:
https://www.sql.ru/forum/1136627/mezhbazovye-cepochki-vladeniya
18 янв 17, 12:29    [20117938]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
Rankatan
Member

Откуда:
Сообщений: 250
1. вариант
БД1

CREATE CERTIFICATE CertName

CREATE USER UserName FOR CERTIFICATE CertName

даем права UserName

BACKUP CERTIFICATE CertName TO FILE

БД2

CREATE CERTIFICATE CertName FROM FILE

CREATE USER UserName FOR CERTIFICATE CertName

даем права UserName

--подписываем ХП сертификатом
ADD SIGNATURE TO MYStorageProc BY CERTIFICATE CertName


2. вариант
execute sp_configure 'show advanced',1;
RECONFIGURE
execute sp_configure 'cross db ownership chaining',1;
RECONFIGURE
alter database MyBase SET DB_CHAINING ON
18 янв 17, 12:36    [20117972]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
o-o
Guest
Зачем же чейнить *все* базы на сервере?
Для задачи ТС две базы зачейнить и не подкладывать свинью всем остальным
18 янв 17, 13:59    [20118480]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
Rankatan
Member

Откуда:
Сообщений: 250
o-o
Зачем же чейнить *все* базы на сервере?
Для задачи ТС две базы зачейнить и не подкладывать свинью всем остальным

Имеется ввиду только SET DB_CHAINING ON на БД без включенного "cross db ownership chaining" ? А так будет работать? (вроде нет)
18 янв 17, 14:05    [20118514]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
o-o
Guest
When cross db ownership chaining is off (0) for the instance, cross-database ownership chaining is disabled for all databases.
When cross db ownership chaining is on (1) for the instance, cross-database ownership chaining is on for all databases.
You can set cross-database ownership chaining for individual databases using the SET clause of the ALTER DATABASE statement. If you are creating a new database, you can set the cross-database ownership chaining option for the new database using the CREATE DATABASE statement.
Setting cross db ownership chaining to 1 is not recommended unless all of the databases hosted by the instance of SQL Server must participate in cross-database ownership chaining and you are aware of the security implications of this setting.
18 янв 17, 14:09    [20118539]     Ответить | Цитировать Сообщить модератору
 Re: execute as и сертификат  [new]
o-o
Guest
https://msdn.microsoft.com/en-us/library/ms188694.aspx
18 янв 17, 14:11    [20118547]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить