Dela via


Säkerhetsförtroendenivåer för åtkomst till resurser

I det här avsnittet beskrivs hur åtkomst begränsas för de typer av resurser som System.Transactions exponeras.

Det finns tre huvudsakliga förtroendenivåer för System.Transactions. Förtroendenivåerna definieras baserat på de typer av resurser som System.Transactions exponeras och den förtroendenivå som ska krävas för att få åtkomst till dessa resurser. De resurser som System.Transactions ger åtkomst till är systemminne, delade processresurser och systemomfattande resurser. Här är nivåerna:

  • AllowPartiallyTrustedCallers (APTCA) för program som använder transaktioner inom en enda programdomän.

  • DistributedTransactionPermission (DTP) för program som använder distribuerade transaktioner.

  • Fullständigt förtroende för varaktiga resurser, konfigurationshanteringsprogram och äldre interop-program.

Kommentar

Du bör inte anropa något av användargränssnitten med personifierade kontexter.

Förtroendenivåer

APTCA (partiellt förtroende)

Sammansättningen System.Transactions kan anropas av delvis betrodd kod eftersom den har markerats med attributet AllowPartiallyTrustedCallers (APTCA). Det här attributet tar i princip bort den implicita LinkDemand för behörighetsuppsättningen FullTrust som annars automatiskt placeras på varje offentligt tillgänglig metod i varje typ. Vissa typer och medlemmar kräver dock fortfarande starkare behörigheter.

Attributet APTCA gör det möjligt för program att använda transaktioner i partiellt förtroende inom en enda programdomän. Detta möjliggör icke-eskalerade transaktioner och flyktiga registreringar som kan användas för felhantering. Ett exempel på detta är en transaktions-hash-tabell och ett program som använder den. Data kan läggas till och tas bort från hash-tabellen under en enda transaktion. Om transaktionen senare återställs kan alla ändringar som gjorts i hash-tabellen under transaktionen ångras.

DistributedTransactionPermission (DTP)

När en System.Transactions transaktion eskaleras för att hanteras av MSDTC System.Transactions kräver DistributedTransactionPermission (DTP) att skapa den distribuerade transaktionen. Det innebär att den kod som gör att transaktionen eskaleras (till exempel genom serialisering eller ytterligare varaktiga registreringar) måste beviljas DTP. Koden som ursprungligen skapade System.Transactions transaktionen behöver inte nödvändigtvis ha den här behörigheten.

Den här behörighetsnivån är avsedd att begränsa program som skriver till varaktiga resurser. Vid fel måste programmet kunna återställas med transaktionshanteraren för att fastställa det slutliga resultatet av transaktionen, så att den kan uppdatera permanenta data. Den här typen av program kallas för en beständig källhanterare. Ett klassiskt exempel på den här typen av program är SQL.

För att aktivera återställning har den här typen av program möjlighet att permanent använda systemresurser. Det beror på att den återställningsbara transaktionshanteraren måste komma ihåg transaktioner som har checkats in tills den kan bekräfta att alla varaktiga resurshanterare som deltar i transaktionen har fått resultatet. Därför kräver den här typen av program fullständigt förtroende och bör inte köras om inte den förtroendenivån har beviljats.

Mer information om varaktiga listor och återställning finns i avsnitten Om att registrera resurser som deltagare i en transaktion och utföra återställning .

Program som utför äldre interop-arbete med COM+ måste också ha fullt förtroende.

Följande är en lista över typer och medlemmar som inte kan anropas av delvis betrodd kod eftersom de är dekorerade med attributet FullTrust deklarativ säkerhet:

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

Endast den omedelbara anroparen måste ha behörighetsuppsättningen FullTrust för att använda ovanstående typer eller metoder.