Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.
CAS (Code access security) to system zabezpieczeń, który pozwala zarządzać dostępem programów do zasobów systemowych. Jest to system dający znacznie więcej możliwości konfiguracji, niż standardowe zarządzanie rolami (RBS, role-based security). Możemy np. określić, czy dana aplikacja może wysyłać zapytania do Internetu, czy otwierać pliki lokalne. Niestety mechanizm ograniczony jest do aplikacji zarządzanych (ang. managed) .NET Framework, pozostałe ograniczone są tylko przez uprawnienia systemu operacyjnego, które dotyczą także aplikacji z CAS.
CasPol.exe (%Windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe) to narzędzie pozwalające kontrolować niemal każdy aspekt CAS. Udostępnia wiele opcji, jednak wyłącznie z wiersza poleceń.
Uwaga: Większość materiałów na ten temat odnosiła się do przystawki Mscorcfg.msc, której nie znalazłem w swoim systemie. Nie znalazłem też żadnego opisu jak ją dodać.
Składniki CAS
- Evidence – identyfikuje program, może to być ścieżka aplikacji, wyliczony hash, czy sygnatura aplikacji. Typy można przejrzeć we wpisie Evidence. Przykładowo Zone jest oparty na lokalizacji, z której aplikacja została uruchomiona, Hash to sygnatura wygenerowana z aplikacji. Niektóre sposoby identyfikacji wymagają podpisania aplikacji – są to przykładowo Strong Name i Publisher.
- Permissions – określają, do których zasobów aplikacja ma dostęp. Listę znajdziemy np. we wpisie CAS Code Permissions. Możemy aplikacji nie zezwolić na obsługę gniazd (ang. socket) – SocketPermission, wykonywać zapytań DNS – DnsPermission, czy wykonywać żądań HTTP do serwerów Web – WebPermission.
- Permission sets – grupują zbiory uprawnień (minimalnie jedno). Przykłady wbudowanych zbiorów - Named Permission Sets.
- Code groups – przypisują zbiory uprawnień do programów na podstawie evidence. Lista grup - Default Security Policy. My_Computer_Zone korzysta ze zbioru uprawnień FullTrust i daje wysoki poziom uprawnień, LocalIntranet_Zone korzysta z LocalIntranet, Internet_Zone - Internet, czyli dość restrykcyjny zbiór uprawnień, Restricted_Zone – Nothing, który nie daje żadnych uprawnień, jest najbardziej restrykcyjny. Przykład utworzenia:
1: caspol –addgroup 1.1. –zone Intranet Everything –name "Intranet_CG"
- Security Policy – zarządzanie na najwyższym poziomie. Przykład dodania grupy User_Code_Group do polityki zabezpieczeń użytkownika All_Code:
1: CasPol -user -addgroup All_Code -site www.contoso.com FullTrust -name "User_Code_Group"
CAS a uprawnienia systemowe
Mechanizm CAS nie zastępuje nam uprawnień systemowych, nie może nam pozwolić na więcej, niż sam system i związane z nim uprawnienia. Nawet jeśli uruchomimy aplikację w grupie, która nada mu zbiór uprawnień FullTrust, a konto użytkownika ma prawo tylko do odczyty, to nie możemy zapisać, usunąć, czy zmienić uprawnień pliku. Najlepiej ilustruje to poniższy rysunek.

Kolejny artykuł z serii to 70-536: Using Declarative Security to Protect Assemblies