Poziomy zaufania zabezpieczeń podczas uzyskiwania dostępu do zasobów
W tym temacie opisano, jak dostęp jest ograniczony do typów zasobów, które System.Transactions przedstawia.
Istnieją trzy główne poziomy zaufania System.Transactions. Poziomy zaufania są definiowane w oparciu o typy zasobów który System.Transactions ujawnia i poziom zaufania, który powinien uzyskać dostęp do tych zasobów. Zasoby który System.Transactions zapewnia dostęp do pamięci systemowej, zasoby całego procesu współużytkowanego i międzynarodowe zasoby systemowe. Te poziomy są następujące:
AllowPartiallyTrustedCallers (APTCA) dla aplikacji korzystających z transakcji w jednej domenie aplikacji.
DistributedTransactionPermission (DTP) dla aplikacji korzystających z transakcji rozproszonych.
Pełna relacja zaufania dla trwałych zasobów, aplikacji do zarządzania konfiguracją i starszych aplikacji międzyoperacyjnej.
Uwaga
Nie należy wywołać wszystkich interfejsów rejestracja przy użyciu personifikowanej kontekstów.
Poziomy zaufania
APTCA (częściowej relacji zaufania)
Zestaw System.Transactions może być wywoływany przez częściowo zaufany kod, ponieważ został oznaczony atrybutem AllowPartiallyTrustedCallers (APTCA). Ten atrybut zasadniczo usuwa niejawny LinkDemand zestaw uprawnień FullTrust , który w przeciwnym razie jest automatycznie umieszczany w każdej publicznie dostępnej metodzie w każdym typie. Niektóre typy i elementy członkowskie nadal wymaga jednak lepsze gwarancje uprawnień.
Atrybut APTCA umożliwia aplikacjom używanie transakcji w częściowym zaufaniu w ramach jednej domeny aplikacji. Umożliwia to-eskalowany transakcji i nietrwałe, które mogą być używane do obsługi błędów. Jednym z przykładów jest tabela skrótów transacted i aplikacja, która z niej korzysta. Dane mogą być dodawane do lub usunięte z tabeli skrótu w pojedynczą transakcję. Jeśli transakcja jest później wycofana, wszystkie zmiany wprowadzone w tabeli wyznaczania wartości skrótu, w tym transakcji można cofnąć.
DistributedTransactionPermission (DTP)
Gdy System.Transactions eskalacji transakcji, aby były zarządzane przez MSDTC, System.Transactions wymagań DistributedTransactionPermission (DTP), aby utworzyć transakcji rozproszonych. Oznacza to, że transakcje mogą być przekazany kod (takie jak za pomocą serializacji lub dodatkowe trwałych rejestracji) musi otrzymać DTP. Kod, który pierwotnie został utworzony System.Transactions transakcji nie trzeba mieć to uprawnienie.
Wymaga FullTrust łącza
Ten poziom uprawnień ma na celu ograniczenie aplikacji zapisywanych w zasobach trwałych. Po niepowodzeniu aplikacja musi być w stanie odzyskać dane za pomocą menedżera transakcji, aby określić ostateczny wynik transakcji, aby można było zaktualizować trwałe dane. Ten typ aplikacji jest nazywany trwałym menedżerem źródła. Klasycznym przykładem tej aplikacji jest SQL.
Aby włączyć odzyskiwanie, ten typ aplikacji ma możliwość trwałego korzystania z zasobów systemowych. Jest to spowodowane Menedżer transakcji do odzyskania musi zapamiętać transakcje, które mają wykonywane, dopóki nie można potwierdzić, że otrzymane wyniki wszystkich menedżerów trwałe zasobów, które uczestniczą w transakcji. W związku z tym ten typ aplikacji wymaga pełnego zaufania i nie należy go uruchamiać, chyba że udzielono tego poziomu zaufania.
Aby uzyskać więcej informacji na temat trwałych rejestracji i odzyskiwania, zobacz enlisting resources as Participants in a Transaction and Performing Recovery (Rejestrowanie zasobów jako uczestnicy transakcji i wykonywania odzyskiwania ).
Aplikacje, które wykonują starszą pracę międzyoperayjną z modelu COM+, również muszą mieć pełne zaufanie.
Poniżej znajduje się lista typów i elementów członkowskich, które nie są wywoływane przez częściowo zaufany kod, ponieważ są one ozdobione atrybutem zabezpieczeń deklaratywnych FullTrust :
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
Tylko bezpośredni obiekt wywołujący jest wymagany do posiadania zestawu uprawnień FullTrust , aby używać powyższych typów lub metod.