Delen via


Vertrouwensniveaus van beveiliging bij toegang tot middelen

In dit onderwerp wordt toegelicht hoe de toegang wordt beperkt tot de soorten bronnen die System.Transactions beschikbaar stelt.

Er zijn drie hoofdniveaus van vertrouwen voor System.Transactions. De vertrouwensniveaus worden gedefinieerd op basis van de typen resources die System.Transactions beschikbaar worden gesteld en het vertrouwensniveau dat nodig moet zijn voor toegang tot deze resources. De resources die System.Transactions toegang bieden zijn systeemgeheugen, gedeelde procesbrede resources en systeembrede resources. De niveaus zijn:

  • AllowPartiallyTrustedCallers (APTCA) voor toepassingen die gebruikmaken van transacties binnen één toepassingsdomein.

  • DistributedTransactionPermission (DTP) voor toepassingen die gebruikmaken van gedistribueerde transacties.

  • Volledig vertrouwen voor duurzame resources, configuratiebeheertoepassingen en verouderde interop-toepassingen.

Opmerking

U moet geen van de inschrijvingsinterfaces met nagebootste contexten aanroepen.

Vertrouwensniveaus

APTCA (gedeeltelijk vertrouwen)

De System.Transactions assembly kan worden aangeroepen door gedeeltelijk vertrouwde code omdat deze is gemarkeerd met het AllowPartiallyTrustedCallers kenmerk (APTCA). Dit kenmerk verwijdert in wezen de impliciete LinkDemand voor de FullTrust-machtigingenset die anders automatisch wordt geplaatst op elke openbaar toegankelijke methode in elk type. Sommige typen en leden vereisen echter nog steeds uitgebreidere machtigingen.

Met het KENMERK APTCA kunnen toepassingen transacties in gedeeltelijke vertrouwensrelatie binnen één toepassingsdomein gebruiken. Dit maakt transacties zonder escalatie en vluchtige deelnemingen mogelijk die kunnen worden gebruikt voor foutafhandeling. Een voorbeeld hiervan is een transacted hash-tabel en een toepassing die deze gebruikt. Gegevens kunnen worden toegevoegd aan en verwijderd uit de hash-tabel onder één transactie. Als de transactie later wordt teruggedraaid, kunnen alle wijzigingen in de hash-tabel onder die transactie ongedaan worden gemaakt.

DistributieTransactiePermissie (DTP)

Wanneer een System.Transactions transactie wordt geëscaleerd om onder beheer van MSDTC te vallen, vereist System.Transactions dat de DistributedTransactionPermission (DTP) de gedistribueerde transactie creëert. Dit betekent dat de code die ervoor zorgt dat de transactie wordt geëscaleerd (bijvoorbeeld via serialisatie of aanvullende duurzame inschrijvingen) DTP zou moeten worden toegekend. De code die oorspronkelijk de System.Transactions transactie heeft gemaakt, hoeft niet noodzakelijkerwijs over deze machtiging te beschikken.

Dit machtigingsniveau is bedoeld om toepassingen die naar duurzame bronnen schrijven te beperken. Bij een fout moet de toepassing kunnen herstellen met de transactiebeheerder om het uiteindelijke resultaat van de transactie te bepalen, zodat deze permanente gegevens kan bijwerken. Dit type toepassing wordt een duurzame bronbeheerder genoemd. Een klassiek voorbeeld van dit type toepassing is SQL.

Als u herstel wilt inschakelen, heeft dit type toepassing de mogelijkheid om systeembronnen permanent te gebruiken. Dit komt doordat de herstelbare transactiebeheerder transacties moet onthouden die zijn vastgelegd totdat ze kunnen bevestigen dat alle duurzame resourcemanagers die deelnemen aan de transactie het resultaat hebben ontvangen. Daarom vereist dit type toepassing een volledige vertrouwensrelatie en mag niet worden uitgevoerd, tenzij dat vertrouwensniveau is verleend.

Voor meer informatie over duurzame inschakelingen en herstel, zie de onderwerpen Resources inschakelen als deelnemers in een transactie en Herstel uitvoeren.

Toepassingen die oudere interop-werkzaamheden uitvoeren met COM+ zijn ook vereist om volledig vertrouwen te hebben.

Hier volgt een lijst met typen en leden die niet kunnen worden aangeroepen door gedeeltelijk vertrouwde code, omdat ze zijn ingericht met het declaratieve beveiligingskenmerk FullTrust :

PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")

Alleen de directe beller moet de FullTrust-machtigingsset bezitten om de hierboven genoemde typen of methoden te gebruiken.