Okno dialogowe usługa Broker zabezpieczeń
Okno dialogowe zabezpieczeń zapewnia szyfrowanie i uwierzytelnianie zdalnego zdalnego autoryzacja dla 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 w poszczególnych oknach konwersacji (lub okna dialogowego).Domyślnie wszystkich oknach konwersacji za pomocą okna dialogowego zabezpieczeń.Po rozpoczęciu okno dialogowe, okno dialogowe kontynuować bez okna dialogowego zabezpieczeń przez włączenie szyfrowanie może jawnie zezwalających na = OFF klauzula w instrukcja BEGIN KONWERSACJI DIALOG.Jednak jeśli wiązanie usługi zdalnej dla usługa docelowych konwersacji, okno dialogowe używane zabezpieczeń, nawet wówczas, gdy szyfrowanie = OFF.
Dla okna dialogowego, które korzysta z zabezpieczeń, Service Broker szyfruje wszystkie wiadomości wysłane poza SQL Server wystąpienie. Wiadomości pozostają w SQL Server wystąpienie nigdy nie są szyfrowane. W oknie dialogowym zabezpieczeń tylko bazy danych, obsługującym usługa inicjujący i obsługującej usługa miejsce docelowe bazy danych musi mieć dostępu do certyfikatów, używany do zabezpieczenia.Oznacza to wystąpienie, które wykonuje przesyłanie wiadomości dalej nie jest wymagany do umożliwiającym odszyfrowywania wiadomości, która przesyła dalej wystąpienie.
Service Broker Istnieją dwa typy zabezpieczeń okno dialogowe pełne zabezpieczenia and anonimowy zabezpieczeń.Dla konwersacji, należy użyć okna dialogowego zabezpieczeń, Service Broker Umożliwia zdalnym autoryzacja do mapowania jego strony zdalnej komunikacji użytkownika lokalnego.
Wiadomości są szyfrowane w sieci, podczas komunikacji wykorzystuje Zabezpieczenia pełne lub zabezpieczenia anonimowe.Jednakże czynne prawa w miejsce docelowe bazie danych i 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 jest szyfrowana przy symetrycznych kluczy sesja wygenerowany 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ń.Aby chronić klucz sesja w czasie, gdy jest on przechowywany w bazie danych Service Broker szyfruje klucz sesja z klucza głównego w bazie danych. Jeśli klucz główny bazy danych nie jest dostępny, wiadomości w konwersacji pozostaną w transmission_status z powodu błędu do momentu utworzenia klucza głównego do bazy danych lub do czasu konwersacji się.Dlatego obie bazy danych, które uczestniczyć w konwersacji musi zawierać klucz główny, nawet w przypadku baz danych są obsługiwane w tym samym wystąpieniu.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, z powodu których nie można dostarczyć wiadomości.Albo użycie ENCRYPTION = OFF parametr do tworzenia niezaszyfrowane okna dialogowego lub do utworzenia klucz głównego do bazy danych należy użyć następującego polecenia:
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. W czasie, gdy dwóch różnych baz danych mogą być przenoszone do innego wystąpienia programu SQL Server podczas trwania konwersacji, konwersacji w jednej bazie danych zawsze pozostaje w tej bazie danych.W związku z tym przejdź do konwersacji.
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.
Pełne zabezpieczenia zapewnia identyfikację inicjujący usług i usługa miejsce docelowe.Pełne zabezpieczenia wymaga usługi inicjujący ufać usługi miejsce docelowe i wymaga również, że Usługa miejsce docelowe ufać inicjujący usługi.Na przykład usługa, która porządkuje części od dostawcy mogą wymagać zamawiania aplikacji ufać usługa dostawcy i usługa dostawcy zaufania zamawiania aplikacji.
Administratorzy baz danych ustanowić relację zaufania przez wymianę certyfikaty zawierające kluczy publicznych.Pełne okno dialogowe zabezpieczeń po obu stronach konwersacji zawiera klucz prywatny dla użytkownika lokalnego i klucz publiczny dla zdalnego użytkownika.Baza danych, która obsługuje usługa inicjujący zawiera wiązanie usługi zdalnej.To wią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 działań w imieniu inicjujący usługa uruchamiane jako wyznaczonych użytkowników w miejsce docelowe bazie danych.
miejsce docelowe baza danych zawiera przez użytkownika.Certyfikat, który odpowiada klucz prywatny, którego właścicielem jest użytkownik, który jest właścicielem inicjujący usługa należące do tego użytkownika.Dlatego operacje w imieniu usługa miejsce docelowe uruchamiać inicjujący bazy danych jako użytkownik, który jest właścicielem inicjujący usługa.
W oknach dialogowych za pomocą pełnego bezpieczeństwa po obu stronach konwersacji generuje klucz sesja.Do pierwszej wiadomości w każdym kierunku zawiera klucz sesja, szyfrowane przy użyciu klucza wymiany kluczy, zgodnie z opisem w Certyfikaty i usługa Broker.
Anonimowy 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.
Anonimowy zabezpieczeń identyfikuje usługa miejsce docelowe inicjujący usługa, ale nie identyfikuje usługa inicjujący z usługa docelową.
Na przykład aplikacja, która przesyła zamówień może być konieczne do zagwarantowania, że adresat kolejności pracy jest zamierzony miejsce docelowe, ale miejsce docelowe bazy danych nie może być potrzebne podanie żadnych specjalnych uprawnień do usługa, która przesyła zamówień.W takim przypadek bazę danych zawierającą inicjujący usługa musi zawierać wiązanie usługi zdalnej dla usługa miejsce docelowe.
Ponieważ Usługa miejsce docelowe nie może sprawdzić tożsamość usługi inicjujący, działania w imieniu usługi inicjujący uruchamianie jako członek stała rola bazy danych publiczne w miejsce docelowe bazie danych.miejsce docelowe baza danych otrzymuje żadnych informacji o użytkowniku, który zainicjował rozmowę.miejsce docelowe baza danych nie musi zawierać certyfikat dla użytkownika, który inicjuje komunikację.
Dla okien dialogowych, korzystających z zabezpieczeń anonimowych po obu stronach konwersacji używają klucz sesja generowany przez inicjujący bazy danych.miejsce docelowe baza danych nie zwraca klucz sesja do inicjujący bazy danych.
Konteksty zabezpieczeń dla okna dialogowego zabezpieczeń
Service Broker zdalny autoryzacja kontroli dostępu zdalnego do poszczególnych usługa.Zdalne autoryzacja Określa kontekst zabezpieczeń, w którym przychodzące wiadomości do SQL Server wystąpienie są wysyłane do usługa.
Service Broker zawsze używa zdalnego autoryzacja dla bezpiecznej konwersacji, która nie całkowicie poziomu przeprowadzona SQL Server wystąpienie. Zabezpieczenia okna dialogowego, które jest skonfigurowane do konwersacji Określa kontekst zabezpieczeń, Service Broker używa zdalnego autoryzacja.
Service Broker nie będzie używać zdalnego autoryzacja podczas konwersacji pozostaje w SQL Server wystąpienie, nawet jeśli autoryzacja zdalnego jest skonfigurowana. Na konwersację w obrębie wystąpienie SQL Server podmioty zabezpieczeń są już dostępne do SQL Server, dzięki czemu nie ma potrzeby do używania zdalnego autoryzacja w celu określenia kontekstu poprawnych zabezpieczeń dla Service Broker operacje. Jednak w sposób opisany we wcześniejszej części tego tematu Service Broker tworzy klucz sesja, jeśli jedną z baz danych jest przenoszona do innego wystąpienie podczas konwersacji można przejść konwersacji.
Dla komunikacji korzystającej z zabezpieczeń anonimowe, połączenie działa jako element członkowski członkowski stałych rola bazy danych publiczne w miejsce docelowe bazie danych.W tym przypadek stała rola bazy danych publiczne musi mieć uprawnienia do wysyłania wiadomości do usługa.Jednak rola musi nie uprawnienia w bazie danych.
Dla konwersacji używa pełne zabezpieczenia, działa połączenie na każdej stronie konwersacji z uprawnieniami użytkownika określonego w wiązanie usługi zdalnej.Na przykład jeśli wiązanie usługi zdalnej kojarzy nazwę usługi InventoryService z użytkownika InventoryServiceRemoteUser, SQL Server używany jest kontekst zabezpieczeń dla InventoryServiceRemoteUser umieszczać wiadomości dla InventoryService aplikacja w kolejce docelowej usługi.
W celu zachowania większego bezpieczeństwa 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 prywatnego, musi tylko uprawnienia do dodawania wiadomości do kolejki — to znaczy SEND uprawnień do usługa, która korzysta z kolejki.Z drugiej strony użytkownik, który został określony dla aktywacja ma uprawnienia, które są wymagane do wykonania żądanej pracy i wysłać odpowiedź.W powyższym przykładzie InventoryServiceRemoteUser nie jest wymagane uprawnienia do przeszukiwania tabela zapasów i wysyła komunikat zwrotny.Użytkownik musi tylko uprawnienia do wysyłania wiadomości do kolejki, InventoryService używa.procedura przechowywana aktywacja odbywa się w innej sesja z poświadczenia, które określa kolejkę.Żadne poświadczenia nie muszą być współużytkowane w sesja tej enqueues wiadomości i sesja, która przetwarza wiadomość.
Tworzenie okna dialogowego zabezpieczeń
Kiedy Service Broker ustanawia się okno dialogowe między dwiema bazami danych inicjujący usługa musi ustanowić kontekst użytkownika w miejsce docelowe bazie danych, dzięki czemu może ono zagrażać wiadomości w kolejce miejsce docelowe. Ten kontekst użytkownika określa, czy usługa inicjujący ma uprawnienie do otwierania okna dialogowego do miejsce docelowe.
Jest najbardziej elastyczną sposób, w tym celu należy utworzyć certyfikat i wiązanie usługi zdalnej.Aby uzyskać więcej informacji na temat tworzenia certyfikat Zobacz CREATE certyfikat (języka Transact-SQL). Aby uzyskać więcej informacji na temat tworzenia zdalnej usługa, wiązanie, zobacz CREATE REMOTE SERVICE BINDING (Transact-SQL).
Alternatywą dla tworzenia certyfikat i wiązanie usługi zdalnej jest ustanowić relację zaufania między dwiema bazami danych za pomocą zabezpieczeń programu SQL Server.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 na bazie inicjujący on i udzielania uwierzytelnienia uprawnienie użytkownikowi w miejsce docelowe bazie danych.Aby uzyskać więcej informacji zobacz Extending Database Impersonation by Using EXECUTE AS.
Uwaga
Jeśli nie znajduje się w kontekście zabezpieczeń zestaw, maksymalnie poprawnie, wiadomości wysłane w oknie dialogowym pozostanie sys.transmission_queue inicjujący usługa z następującym komunikatem o błędzie kolumna transmission_status: Główny serwer "%. * ls"nie jest w stanie uzyskać dostępu do bazy danych"%. * ls w bieżącym kontekście zabezpieczeń.