Úrovně důvěryhodnosti zabezpečení při přístupu k prostředkům

Toto téma popisuje, jak je přístup omezený na typy prostředků, které System.Transactions zveřejňuje.

Existují tři hlavní úrovně důvěryhodnosti pro System.Transactions. Úrovně důvěryhodnosti jsou definovány na základě typů prostředků, které System.Transactions zpřístupňují, a úrovně důvěryhodnosti, která by se měla vyžadovat pro přístup k těmto prostředkům. Prostředky, ke kterým System.Transactions poskytuje přístup, zahrnují systémovou paměť, sdílené prostředky v rámci procesu a prostředky na úrovni systému. Jsou to tyto úrovně:

  • AllowPartiallyTrustedCallers (APTCA) pro aplikace využívající transakce v rámci jedné domény aplikace.

  • DistributedTransactionPermission (DTP) pro aplikace využívající distribuované transakce.

  • Plná důvěra pro trvanlivé zdroje, aplikace pro správu konfigurace a starší aplikace pro interoperabilitu.

Poznámka:

Neměli byste volat žádná rozhraní pro přihlášení ve kontextech s přetvářením identity.

Úrovně důvěryhodnosti

APTCA (částečná důvěryhodnost)

Sestavení System.Transactions lze volat kódem s částečnou důvěryhodností, protože bylo označeno atributem AllowPartiallyTrustedCallers (APTCA). Tento atribut v podstatě odebere implicitní LinkDemand pro sadu oprávnění FullTrust , která je jinak automaticky umístěna pro každou veřejně přístupnou metodu v každém typu. Některé typy a členové ale stále vyžadují silnější oprávnění.

Atribut APTCA umožňuje aplikacím používat transakce v částečné důvěryhodnosti v rámci jedné domény aplikace. To umožňuje neeskalované transakce a nestálé připojení, které lze použít ke zpracování chyb. Jedním z příkladů je transactovaná hash tabulka a aplikace, která ji používá. Data lze přidat do a odebrat z tabulky hash v rámci jedné transakce. Pokud se transakce později vrátí zpět, všechny změny provedené v tabulce hash v rámci této transakce lze vrátit zpět.

Oprávnění pro distribuované transakce (DTP)

System.Transactions Pokud je transakce eskalována tak, aby byla spravována pomocí MSDTC, System.Transactions požaduje DistributedTransactionPermission (DTP) vytvořit distribuovanou transakci. To znamená, že kód, který způsobí eskalaci transakce (například prostřednictvím serializace nebo dalších trvalých zařazení), by bylo nutné udělit DTP. Kód, který původně vytvořil System.Transactions transakci, nemusí nutně mít toto oprávnění.

Tato úroveň oprávnění je určená k omezení aplikací, které zapisují do trvalých prostředků. Při selhání musí být aplikace schopná obnovit pomocí správce transakcí, aby určila konečný výsledek transakce, aby mohla aktualizovat trvalá data. Tento typ aplikace se označuje jako trvalý správce zdrojů. Klasickým příkladem tohoto typu aplikace je SQL.

Pro povolení obnovení má tento typ aplikace možnost trvale využívat systémové prostředky. Důvodem je to, že správce transakcí schopný obnovy musí pamatovat transakce, které byly potvrzeny, dokud nemůže potvrdit, že všichni správci trvalých zdrojů, kteří se účastní transakce, obdrželi výsledek. Tento typ aplikace proto vyžaduje plnou důvěru a neměl by být spuštěn, pokud tato úroveň důvěry nebyla udělena.

Další informace o trvalých přihlášeních a obnově viz témata Začlenění prostředků jako účastníků transakce a Provádění obnovy.

Aplikace, které provádějí starší interoperabilitu s COM+, musí mít také plnou důvěru.

Následuje seznam typů a členů, které nelze volat částečně důvěryhodným kódem, protože jsou zdobeny deklarativním atributem zabezpečení FullTrust :

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

K použití výše uvedených typů nebo metod je požadováno pouze to, aby bezprostřední volající měl oprávnění FullTrust.