Beveiligingsvertrouwensniveaus in toegang tot resources
In dit onderwerp wordt beschreven hoe de toegang wordt beperkt tot de typen resources die System.Transactions beschikbaar worden gesteld.
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.
Notitie
U moet geen van de insluitingsinterfaces met geïmiteerde contexten aanroepen.
Vertrouwensniveaus
APTCA (gedeeltelijke vertrouwensrelatie)
De System.Transactions assembly kan worden aangeroepen door gedeeltelijk vertrouwde code omdat deze is gemarkeerd met het kenmerk AllowPartiallyTrustedCallers (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 sterkere machtigingen.
Met het KENMERK APTCA kunnen toepassingen transacties in gedeeltelijke vertrouwensrelatie binnen één toepassingsdomein gebruiken. Dit maakt niet-geëscaleerde transacties en vluchtige aanhalingslijsten 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.
DistributedTransactionPermission (DTP)
Wanneer een System.Transactions transactie wordt geëscaleerd om te worden beheerd door MSDTC, System.Transactions vraagt u de DistributedTransactionPermission (DTP) om de gedistribueerde transactie te maken. Dit betekent dat de code die ervoor zorgt dat de transactie wordt geëscaleerd (bijvoorbeeld via serialisatie of aanvullende duurzame inlisttingen) DTP moet worden verleend. De code die oorspronkelijk de System.Transactions transactie heeft gemaakt, hoeft niet noodzakelijkerwijs over deze machtiging te beschikken.
Vereisten voor FullTrust Link
Dit machtigingsniveau is bedoeld om toepassingen te beperken die naar duurzame resources schrijven. 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.
Zie de onderwerpen Voor het inschakelen van resources als deelnemers aan een transactie en het uitvoeren van herstelonderwerpen voor meer informatie over duurzame opname en herstel.
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 is vereist voor het bezit van de FullTrust-machtiging die is ingesteld voor het gebruik van de bovenstaande typen of methoden.