Service Broker okna dialogowego zabezpieczeń

Okno dialogowe zabezpieczeń zapewnia szyfrowanie, zdalne uwierzytelnianie i zdalnego autoryzacja określonych konwersacji.When a conversation uses dialog security, Service Broker encrypts all messages sent outside a SQL Server instance.Service Broker conversations use dialog security by default.

Okno dialogowe podstawy zabezpieczeń

Service Broker okno dialogowe zabezpieczeń pozwala aplikacji używać uwierzytelnianie, autoryzacja lub szyfrowanie dla poszczególnych oknach konwersacji (lub okna dialogowego).Domyślnie wszystkie konwersacje w oknie dialogowym użyć okna dialogowego zabezpieczeń.Rozpocząć okno dialogowe, można wyraźnie zezwolić, okno dialogowe kontynuować bez okna dialogowego zabezpieczeń poprzez włączenie szyfrowania = OFF klauzula rozpocząć konwersację okno DIALOGOWE instrukcja.Jednak jeśli powiązanie usługa zdalnej istnieje dla usługa, że cele konwersacji okna dialogowego używa zabezpieczeń, nawet wówczas, gdy SZYFROWANIE = OFF.

Dla okna dialogowego, który korzysta z zabezpieczeń Service Broker szyfruje wszystkie wiadomości wysłane poza SQL Server wystąpienie.Wiadomości, które pozostają w SQL Server wystąpienie nigdy nie są szyfrowane.W oknie dialogowym zabezpieczeń tylko baz danych, obsługującym usługa inicjujący i obsługującym usługa miejsce docelowe musisz mieć dostęp certyfikaty używane dla zabezpieczeń.Oznacza to, że wystąpienie wykonuje przekazywanie wiadomości nie jest wymagane mają możliwość odszyfrowywania wiadomości, które przekazuje wystąpienia.

Service Brokeroferuje dwa typy okno dialogowe zabezpieczeń, Zabezpieczenia pełne i anonimowych zabezpieczeń.Dla konwersacji, korzystających z okna dialogowego zabezpieczeń Service Broker zapewnia autoryzacja zdalnego mapowania strona zdalna konwersacji lokalnym użytkownika.

Wiadomości są szyfrowane w sieci podczas konwersacji używa Zabezpieczenia pełne lub zabezpieczenia anonimowe.Jednakże czynne prawa w miejsce docelowe bazy danych oraz strategii używany do szyfrowanie wiadomości się nieco różnić między dwa podejścia.

Czy konwersacji używa Zabezpieczenia pełne lub zabezpieczenia anonimowe, treść wiadomości zaszyfrowane przy użyciu sesja symetrycznego klucz generowany dla określonych konwersacji.Only the keys are encrypted with private key encryption using the certificate supplied for Dialog Security.Service Broker also performs a message integrity check to help detect message corruption or tampering.

SQL Server tworzy klucz sesja dla konwersacji, która korzysta z okna dialogowego zabezpieczeń.Do ochrony klucza sesja jest przechowywany w bazie danych, Service Broker szyfruje klucz sesja z klucza głównego dla bazy danych.Jeśli klucz główny bazy danych nie jest dostępny, wiadomości w konwersacji pozostają w transmission_status z błędem, aż do utworzenia klucza głównego do bazy danych lub do konwersacji limitu czasu.Dlatego obie bazy danych, które uczestniczyć w konwersacji musi zawierać kluczy głównych, nawet wtedy, gdy baz danych są obsługiwane w tym samym wystąpienie.Jeżeli inicjujący bazy danych nie zawiera klucz głównego, okno dialogowe nie powiedzie się.Jeśli miejsce docelowe baza danych nie zawiera klucz głównego, wiadomości pozostają w kolejce transmisji inicjujący bazy danych.Ostatni błąd transmisji dla tych wiadomości wskazuje przyczyny, że nie można dostarczyć wiadomości.Użyj ENCRYPTION = OFF parametru do tworzenia niezaszyfrowane okno dialogowe lub użyj następującego polecenia do tworzenia klucz głównego do bazy danych:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'

Dla wygody Service Broker umożliwia bezpiecznych konwersacji, które pozostają w jednej bazie danych, aby kontynuować, niezależnie od tego, czy baza danych zawiera klucz główny.Podczas dwóch różnych baz danych mogą być przenoszone do innego wystąpienia programu SQL Server w okresie istnienia konwersacji, konwersacji w jednej bazie danych zawsze pozostaje w tej bazie danych.Dlatego można rozpocząć konwersację.

Zabezpieczenia pełne

Full security helps to protect the initiating service from sending messages to an untrusted database and helps protect the target service from receiving messages from an untrusted database.Service Broker encrypts messages transmitted over the network when the conversation uses full security.

Zabezpieczenia pełne zapewnia identyfikację inicjujący usługa i usługa miejsce docelowe.Zabezpieczenia pełne wymaga, czy usługa inicjujący zaufania usługi miejsce docelowe i wymaga także, że Usługa miejsce docelowe zaufania inicjujący usługi.Na przykład usługa, która porządkuje części od dostawcy mogą wymagać zamawiania aplikacji zaufania usługi dostawcy i dostawcy zaufania zamawiania aplikacji.

Administratorzy bazy danych ustanawiania zaufania poprzez wymianę certyfikaty zawierające kluczy publicznych.Pełne okno dialogowe zabezpieczeń każdej stronie konwersacji zawiera klucz prywatny dla użytkowników lokalnych i klucz publiczny użytkownika zdalnego.Baza danych, obsługującym usługa inicjujący zawiera powiązanie usługa zdalnej.To powiązanie usługa zdalnej określa użytkownika lokalnego, który jest właścicielem certyfikat, który odpowiada klucz prywatny w zdalnej bazie danych.Dlatego operacje w imieniu inicjujący usługa uruchamiane jako użytkownika wyznaczone w miejsce docelowe bazie danych.

miejsce docelowe baza danych zawiera użytkownika.Ten użytkownik jest właścicielem certyfikat, który odpowiada klucz prywatny, którego właścicielem jest użytkownik, który jest właścicielem inicjujący usługa.Dlatego działania w imieniu usługa miejsce docelowe uruchamiać inicjujący bazy danych jako użytkownik, który jest właścicielem inicjujący usługa.

Dla okien dialogowych, używające Zabezpieczenia pełne każdej stronie konwersacji generuje klucz sesja.Do pierwszej wiadomości w każdym kierunku zawiera klucz sesja szyfrowane kluczem wymiany kluczy, zgodnie z opisem w Certyfikaty i Service Broker.

Anonimowe zabezpieczeń

Anonymous security helps protect the initiating service against sending messages to an untrusted database.Service Broker encrypts messages transmitted over the network when the conversation uses anonymous security.

Anonimowe zabezpieczeń identyfikuje usługa miejsce docelowe inicjujący usługa, ale nie identyfikuje usługa inicjujący usługa miejsce docelowe.

Na przykład aplikacja, która przesyła zamówień może być konieczne do zagwarantowania, że adresat kolejności pracy jest docelową, ale miejsce docelowe bazy danych może nie muszą dostarczać wszelkie specjalne uprawnienia usługa, który przesyła zamówień.W takim przypadek musi zawierać bazę danych zawierającą usługa inicjujący powiązanie usługa zdalnej usługa miejsce docelowe.

Ponieważ Usługa miejsce docelowe nie może zweryfikować tożsamość usługi inicjujący, operacje w imieniu inicjujący usługi uruchamiane jako element członkowski stała rola bazy danych public w miejsce docelowe bazie danych.miejsce docelowe baza danych odbiera żadnych informacji dotyczących użytkownika, który zainicjował rozmowę.miejsce docelowe baza danych musi zawierać certyfikat dla użytkownika, który inicjuje komunikację.

Dla okien dialogowych, korzystających z zabezpieczeń anonimowe obie strony konwersacji używają klucz sesja generowane przez inicjujący bazy danych.miejsce docelowe baza danych nie powróci do inicjujący bazy danych klucz sesja.

Konteksty zabezpieczeń dla okna dialogowego zabezpieczeń.

Service Broker zdalny autoryzacja dostępem zdalnym osobie usługa.Zdalny autoryzacja Określa kontekst zabezpieczeń, w którym wiadomości przychodzące do SQL Server wystąpienie są przesyłane do usługa.

Service Brokerzawsze używa zdalnego autoryzacja dla bezpiecznej konwersacji, które nie zostaną całkowicie w SQL Server wystąpienie.Zabezpieczenia okna dialogowego, skonfigurowanym dla konwersacji Określa kontekst zabezpieczeń, Service Broker używa zdalnego autoryzacja.

Service Brokernie używać zdalnego autoryzacja podczas konwersacji pozostaje w SQL Server wystąpienie, nawet jeśli pozwolenie zdalnego jest skonfigurowany.Konwersacji w wystąpienie, SQL Server podmiotów zabezpieczeń są już dostępne dla SQL Server, więc nie ma potrzeby używania zdalnego autoryzacja do określenia kontekstu poprawnych zabezpieczeń dla Service Broker operacji.Jednakże, w sposób opisany w tym temacie Service Broker tworzy klucz sesja konwersacji można przejść, jeżeli jeden z baz danych jest przenoszona do innego wystąpienie w trakcie konwersacji.

Konwersacji, która korzysta z zabezpieczeń anonimowe, połączenie działa jako element członkowski stała rola bazy danych public w miejsce docelowe bazie danych.W takim przypadek stała rola bazy danych public musi mieć uprawnienie do wysyłania wiadomości do usługa.Rola musi jednak żadnych uprawnień w bazie danych.

Konwersację używa Zabezpieczenia pełne, działa połączenie na każdej stronie konwersacji z uprawnieniami użytkownika określonego w powiązanie usługa zdalnej.Na przykład, jeśli powiązanie usługa zdalnej kojarzy nazwę usługa InventoryService użytkownika z InventoryServiceRemoteUser, SQL Server używa kontekst zabezpieczeń dla InventoryServiceRemoteUser do umieszczenia wiadomości dla InventoryService aplikacji dla kolejki obiekt docelowy usługa.

Dla lepszego zabezpieczenia użytkownika, który jest właścicielem klucz prywatnego dla usługa jest zazwyczaj innego użytkownika niż użytkownik określony dla aktywacja.Użytkownik, który jest właścicielem klucz prywatny musi tylko uprawnienia do dodawania do kolejki wiadomości —, Wyślij uprawnienie usługa korzystającej z kolejki.Natomiast użytkownik określony dla aktywacja ma uprawnienia, które są wymagane do wykonania żądanej pracy i wysłać odpowiedź.W poprzednim przykładzie InventoryServiceRemoteUser nie wymaga uprawnień do kwerendy tabela zapasów lub wysłać komunikat zwrotny.Użytkownik musi tylko uprawnienia do wysyłania wiadomości do kolejki, InventoryService używa.Występuje aktywacja procedury przechowywanej w innej sesja z poświadczenia , który określa kolejkę.Żadne poświadczenia muszą być współużytkowane sesja enqueues tej wiadomości i sesja, który przetwarza wiadomość.

Tworzenie bezpiecznego okno dialogowe

Gdy Service Broker ustanawia dialog między dwie bazy danych usługa inicjujący musi ustanowić kontekst użytkownika w miejsce docelowe bazie danych, tak, aby go umieścić wiadomości w kolejka docelowa.Ten kontekst użytkownika określa, czy usługa inicjujący ma uprawnienie do otwierania okna dialogowego do miejsce docelowe.

Najbardziej elastyczny sposób, w tym celu jest utworzenie certyfikat i powiązanie usługa zdalnej.Aby uzyskać więcej informacji dotyczących tworzenia certyfikat, zobacz Tworzenie certyfikatu (Transact-SQL).Aby uzyskać więcej informacji dotyczących tworzenia powiązanie usługa zdalnej, zobacz Tworzenie usługi zdalnego POWIĄZANIE (Transact-SQL).

Alternatywą tworzenia certyfikat i powiązanie usługa zdalnej jest użycie zabezpieczeń programu SQL Server do ustanawiania relacji zaufania między dwiema bazami danych.Właściciel usługa inicjujący personifikuje użytkownika w usłudze miejsce docelowe.Może to wymagać ustawienie właściwość ZAUFANEGO bazy danych inicjujący bazy danych, aby na i udzielania uwierzytelnienia uprawnienie użytkownikowi w miejsce docelowe bazie danych.Aby uzyskać więcej informacji, zobacz Rozszerzanie bazy danych personifikacji przy użyciu jako EXECUTE.

Ostrzeżenie

Jeśli kontekst zabezpieczeń nie jest zestaw , nawet poprawnie, wiadomości wysyłane w oknie dialogowym pozostanie sys.transmission_queue inicjujący usługa z następujący komunikat o błędzie kolumna transmission_status: Główne serwera "%. * ls nie będzie mógł uzyskać dostęp do bazy danych ' %. * ls w bieżącym kontekście zabezpieczeń.