Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Добрый день.

Вопрос возможно глупый т.к. с ServiceBroker только разбираюсь. Почитал несколько статеек, но так и нет однозначного ответа.

А нужно ли создавать MASTER KEY для базы если обмен сообщениями протекает только внутри сервера, даже внутри базы данных сервера?
14 окт 14, 13:25    [16701701]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Ennor Tiegael
Member

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

Мастер-ключи БД используются для шифрования закрытых ключей сертификатов, как альтернатива паролям. Если закрытый ключ серта зашифрован паролем, то для брокера он не подходит.

Точно не уверен, но вроде это нужно только в случае, если у вас в брокере используются сертификаты. Посмотрите свой код инициализации БД, если там нигде сертов нет, то и мастер-ключи не нужны (кажется).
14 окт 14, 14:29    [16702137]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
http://technet.microsoft.com/ru-ru/library/bb522911(v=sql.105).aspx
14 окт 14, 14:59    [16702381]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
invm,

Спасибо за "масштабный ответ"!

Но на мой вопрос, ответ я там так и не нашёл. Где то пишут нужно где то ненужно.


форумчане, посоветуйте: "Нужно ли создавать MASTER KEY для базы если обмен сообщениями протекает только внутри сервера, даже внутри базы данных сервера?". Сертификаты не использую!
14 окт 14, 15:24    [16702591]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Glory
Member

Откуда:
Сообщений: 104751
ServiceBroker
Но на мой вопрос, ответ я там так и не нашёл. Где то пишут нужно где то ненужно.

Стрелки на картинке непоняты ???
http://technet.microsoft.com/ru-ru/library/ms189586(v=sql.105).aspx
14 окт 14, 15:29    [16702637]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Glory,

Можно долго ходить вокруг до около. Понимаю все гуру, и писать лишний раз лень, но и бывают такие как я))))

Мне бы ответ такого плана)))
- Да нужно, потому что...
- Нет не нужно т.к. ...
- Лучше предусмотреть, а то может быть...
14 окт 14, 15:39    [16702705]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Glory
Member

Откуда:
Сообщений: 104751
ServiceBroker
Можно долго ходить вокруг до около. Понимаю все гуру, и писать лишний раз лень, но и бывают такие как я))))

Т.е. за вас нужно выбрать одну из стрелок что ли ?
Вы сами не в состоянии это сделать ?
14 окт 14, 15:41    [16702713]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Glory,

Я не против, но там всё посещено защите данных. Ни разу с этим не сталкивался.
Пока не могу по поводу стрелок
14 окт 14, 15:46    [16702744]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Glory
Member

Откуда:
Сообщений: 104751
Безопасность компонента Service Broker основана на сертификатах.
Компонент Service Broker обеспечивает два различных типа безопасности — безопасность диалога и безопасность транспорта. Понимание этих двух типов безопасности и принципов их работы поможет проектировать, развертывать и администрировать приложения компонента Service Broker.

- Безопасность диалога шифрует сообщения в отдельных диалогах и проверяет подлинность участников диалога. Безопасность диалога обеспечивает также удаленную авторизацию и проверку целостности сообщений. Безопасность диалога устанавливает подтвержденную шифрованную связь между двумя службами.

- Безопасность транспорта предохраняет от отправки в базы данных на локальном экземпляре компонента Service Broker сообщений неавторизованными базами данных. Безопасность транспорта устанавливает подтвержденное сетевое соединение между двумя базами данных.

http://technet.microsoft.com/ru-ru/library/ms166079(v=sql.105).aspx
Сценарий реализации безопасности в базе данных компании Adventure Works Cycles
...
14 окт 14, 15:52    [16702786]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Glory,

Супер, спасибо... немного стало понятней...

Вопрос,
1.
а сертификат создаёт СУБД на каждый диалог? Или это делается принудительно?
2.
сертификаты в ServiceBroker являются неотъемлемой частью?
3.
Если сертификаты необязательны в работе ServiceBroker и они не создаются, получается можно не создавать MASTER KEY?
14 окт 14, 16:14    [16702900]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Ennor Tiegael
Member

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

Вы мой ответ видели?
15 окт 14, 07:14    [16705374]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Ennor Tiegael,

Видел, но Вы не уверены в ответе...
15 окт 14, 11:35    [16706360]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Glory
Member

Откуда:
Сообщений: 104751
ServiceBroker
Ennor Tiegael,

Видел, но Вы не уверены в ответе...

http://technet.microsoft.com/ru-ru/library/ms166072(v=sql.105).aspx

2. Создайте сертификат для этого пользователя.
Примечание
Этот сертификат должен быть зашифрован при помощи главного ключа. Дополнительные сведения см. в разделе CREATE MASTER KEY (Transact-SQL).
15 окт 14, 12:13    [16706645]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Glory,

Спасибо,
теперь более чем понятно.

MASTER KEY нужно создавать обязательно, иначе если и будет что-то работать, то временно, но скорей всего работать вообще ничего не будет))))
15 окт 14, 13:04    [16706939]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
Ennor Tiegael
Member

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

Базовая функциональность брокера не требует ни мастер-ключей, ни сертификатов. Вот тестовый скрипт, который это доказывает (кстати, вы могли бы и сами такую проверку по-быстрому набросать):
+
use master;
go
if db_id('SBTest') is not null
	drop database [SBTest];
go

CREATE DATABASE [SBTest];
go
alter authorization on database::SBTest to sa;
go
ALTER DATABASE [SBTest] SET  ENABLE_BROKER;
GO
ALTER DATABASE [SBTest] SET trustworthy on;
GO
USE [SBTest];
GO

create message type [SBTest\Msg]
authorization [dbo]
validation = well_formed_xml;
go

create contract [SBTest\Cntr]
authorization [dbo]
([SBTest\Msg] sent by initiator);
go

create queue dbo.QInit
with
	status = on;
go

create queue dbo.QTarget
with
	status = on;
go

create service [SBTest\Init]
authorization [dbo]
on queue dbo.QInit
(
	[SBTest\Cntr]
);
go

create service [SBTest\Target]
authorization [dbo]
on queue dbo.QTarget
(
	[SBTest\Cntr]
);
go

-- Send a message
declare @Handle uniqueidentifier;

begin dialog conversation @Handle
from service [SBTest\Init]
to service 'SBTest\Target', 'current database'
on contract [SBTest\Cntr]
with encryption = off;

select @Handle as [InitiatorHandle];

send on conversation @Handle
message type [SBTest\Msg] ('<Message Type="Init" />');
go

-- Get the message on the target side
declare @Handle uniqueidentifier, @MessageType sysname, @Body xml;

receive @Handle = conversation_handle,
	@MessageType = message_type_name,
	@Body = cast(message_body as xml)
from dbo.QTarget;

select @Handle as [TargetHandle], @MessageType as [MessageType], @Body as [MessageBody];

end conversation @Handle;
go

use master;
go

drop database [SBTest];
go
Статья, на которую вам дал ссылку Glory, эмм, отвечает на несколько другой вопрос - как затянуть секюрити в брокере по максимуму. Собственно, она так и называется. Подход, описанный в ней, практически обязателен к применению, если у вас участники диалогов находятся в разных подсетях и между ними нет надежно закрытого канала связи. Собственно, во всех случаях, когда у вас участники диалогов находятся на разных экземплярах SQL Server, вам придется создавать эндпойнты, а это значит, что потребуются соотв. пользователи, мастер-ключи и сертификаты в БД master - для обеспечения безопасности на уровне транспортного протокола.

В случае же, если все вертится в рамках одной БД, то это не обязательно. Проверку варианта с разными БД в пределах одного экземпляра оставляю вам .
16 окт 14, 07:04    [16711466]     Ответить | Цитировать Сообщить модератору
 Re: ServiceBroker. Обязательно ли CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AbraCadabra'  [new]
ServiceBroker
Guest
Ennor Tiegael,

Спасибо за полный ответ...
хм, теперь у меня не пойми какое мнение сложилось... буду тестировать!
16 окт 14, 08:38    [16711573]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить