Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro...

39
Controle de Acessos na Plataforma .NET Notas para a disciplina de “Segurança Informática” Pedro Félix ([email protected] Instituto Superior de Engenhari a de Lisboa

Transcript of Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro...

Page 1: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

Controle de Acessos na Plataforma .NET

Notas para a disciplina de “Segurança Informática”

Pedro Félix ([email protected])

Instituto Superior de Engenharia de Lisboa

Page 2: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

2P. Félix, 2006 Controlo de acessos na plataforma .NET

Terminologia

• Sujeito – quem realiza o acessoactivo que realiza o acesso• Objecto – entidade acedida

• Operação – tipo do acesso• O monitor de referências concede (“grant”) ou recusa (“deny”) o

acesso

Sujeito ObjectoPedido de

acessoMonitor de

Referências

Page 3: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

3P. Félix, 2006 Controlo de acessos na plataforma .NET

Modelos baseados na identidade do utilizador

• Modelo de segurança clássico – as decisões de autorização são baseadas na identidade do utilizador (Windows NT e Unix)

• Os sistemas baseados em componentes tem requisitos de segurança diferentes– uma aplicação é constituída por componentes de diferentes origens e

diferentes graus de confiança

• Modelo antigo– Full trust (privilégios do utilizador) ou No trust– Decisão em tempo de carregamento (certificados ou confiança explícita)– Na prática, não é possível distinguir entre código local e código móvel -

todas as linhas de código tem os mesmos privilégios

• Os ambientes de execução virtuais possibilitam a criação de modelos de segurança diferentes dos do sistema operativo– O ambiente de execução funciona como Trusted Computing Base (TCB)

– entidade omnisciente e omnipresente responsável por implementar o modelo de segurança

Page 4: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

4P. Félix, 2006 Controlo de acessos na plataforma .NET

Requisitos para a plataforma .NET

• Sistema de segurança para código móvel parcialmente confiável– autorizações fine-grained

– extensível

– configurável

– baseado em componentes e não em processos

• Modelo onde a autorização depende da identidade do código - Code Acess Security (CAS)

• Type safety– Definição das fronteiras dum assembly

– Verificação– reinterpret_cast é proibído – código C++ (managed) não é

verificável

Page 5: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

5P. Félix, 2006 Controlo de acessos na plataforma .NET

Modelo

• Autenticação - Em tempo de carregamento, o CLR recolhe provas (evidence) sobre a proveniência do assembly: local de carregamento, autoria, ... Esta evidência fica associada ao Assembly

• Autorização - O CLR utiliza a evidência para determinar o conjunto de permissões do assembly– Permissão: possibilidade de realizar uma acção

– A relação entre evidências e conjuntos de permissões é estabelecida pela política de segurança

• Enforcement - As permissões são explicitamente exigidas pelos objectos (tipicamente em bibliotecas seguras)

Assembly Evidence PermissionSet

PolicyLevel

Código SecurityManager

PolicyLevelPolicyLevel

Page 6: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

6P. Félix, 2006 Controlo de acessos na plataforma .NET

Diagrama

Assembly

Método

PermissionSet

IPermission

Método

Sujeito Objecto

EvidenceCLR CLR

Acesso

pertence a

contém

demands

CodeGroup

IMembershipCondition PermissionSet

Autenticação Autorização

Política

Page 7: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

7P. Félix, 2006 Controlo de acessos na plataforma .NET

Questões

• O que é a identidade do código?• Como é implementada a relação entre identidades e permissões?• Como é implementado o controlo aos acessos?

Page 8: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

8P. Félix, 2006 Controlo de acessos na plataforma .NET

Autenticação e autorização

• Em tempo de carregamento, o CLR recolhe informação sobre cada assembly. Esta informação é designada de evidence.

• Ainda em tempo de carregamento, o CLR usa informação de configuração (Policy Levels) para transformar a evidence dum assembly num conjunto de permissões. Este conjunto de permissões fica associado a todos os tipos do assembly

• Em tempo de execução, os métodos acedídos verificam se os chamadores possuem as permissões necessárias

Page 9: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

9P. Félix, 2006 Controlo de acessos na plataforma .NET

Evidence

• Evidence é um conjunto de informação sobre um assembly ou AppDomain

• A evidence não depende do utilizador• A evidence é fornecida por

– CLR

– Hosts

– Assemblies

• Exemplos:– Nome (Strong Name)

– Localização

– Publisher

– Valor de hash

– Evidence contida dentro do assembly

Page 10: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

10P. Félix, 2006 Controlo de acessos na plataforma .NET

Evidence

• O tipo Evidence é um contentor de evidence• Contém dois sub-conjntos

– Evidence fornecida pelo host

– Evidence fornecida pelo assembly

• Propriedade Evidence do tipo Assembly• Propriedade Evidence do tipo AppDomain

Page 11: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

11P. Félix, 2006 Controlo de acessos na plataforma .NET

Evidence fornecida pelo host

• Um host é – Troço de código unmanaged que lança o CLR– Troço de código managed que lança outro troço de código managed

• Unmanaged Host– Fornece informação (evidence) ao CLR, tal como a directoria de

execução– Este informação fica associada ao AppDomain

• Managed Host– public static Assembly Load(AssemblyName, Evidence); – public static ObjectHandle CreateInstance(string, string, bool,

BindingFlags, Binder, object[], CultureInfo, object[], Evidence);– public static AppDomain CreateDomain(string, Evidence,

AppDomainSetup)– …

• Independentemente do tipo de host, o CLR fornece evidence por omissão

Page 12: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

12P. Félix, 2006 Controlo de acessos na plataforma .NET

Classes pré-definidas

• ApplicationDirectory– Directoria de execução da aplicação

• Hash– Valor de hash do assembly

• Publisher– Informação sobre o criador do assembly, no caso deste conter um

certificado

• Site– Informação sobre a localização original do assembly

• StrongName– Nome do assembly

• Url– Localização original do assembly

• Zone– Classificação da localização original do assembly (Internet, Intranet,

MyComputer, Trusted, Untrusted, NoZone)

Page 13: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

13P. Félix, 2006 Controlo de acessos na plataforma .NET

Evidence fornecida pelo Assembly

• Informação contida no próprio assembly

• Exemplo: certificação por uma entidade externa

• Processo de criação e associação:1. Criar um objecto para representar a evidence

2. Serializar o objecto usando o formatador binário

3. Compilar o código do assembly para módulos

4. Criar o assembly, usando a ferramenta al, incluindo o objecto evidence serializado (/evidence:<filename>)

Page 14: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

14P. Félix, 2006 Controlo de acessos na plataforma .NET

Diagrama

Evidence

ICollection

Site

Publisher

IEvidenceFactory

AppDomain Assembly

ApplicationDirectory

Zone StrongName HashUrl

Certificate

Page 15: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

15P. Félix, 2006 Controlo de acessos na plataforma .NET

Permissões

• Permissão – capacidade para realizar uma acção• As permissões são associadas a código (via assemblies)• As operações cujo acesso é controlado exigem (demand) que o

chamador possua as permissões adequadas• Existem três tipos de permissões

– Code Access Permissions

– Identity Permissions

– Outras

Page 16: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

16P. Félix, 2006 Controlo de acessos na plataforma .NET

Interface IPermission

• Descreve um conjunto de operações associadas ao mesmo tipo de recurso

• Exemplos– FileIOPermission

– UIPermission

• Fornece interface com operações de conjuntos– IPermission Copy()

– IPermission Intersect(IPermission)

– IPermission Union(IPermission)

– Bool IsSubsetOf(IPermission)

• Método para o controlo de acesso– void Demand() – verifica se os chamadores tem permissão para realizar

a operação

Page 17: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

17P. Félix, 2006 Controlo de acessos na plataforma .NET

IUnrestrictedPermission e PermissionState

• A interface IUnrestrictedPermission é implementada por todas as permissões que possuem um estado “não-restrito” (todas as operações sobre o tipo de recurso são possíveis)

• A interface possui a propriedade isUnrestriced, que retorna true se a permissão está no estado “não-restrito”

• Tipicamente, todas as permissões que implementam esta interface possum um construtor que recebe PermissionState (enumerado com os valores None e Unrestricted)

• Um PermissionSet construido com PermissionState.Unrestricted contém todas a permissões que implementam a interface IUnrestrictedPermission no estado PermissionState.Unrestricted

Page 18: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

18P. Félix, 2006 Controlo de acessos na plataforma .NET

Exemplo

IPermission perm1 = new FileIOPermission(FileIOPermissionAccess.Read, @"c:\teste.txt");

IPermission perm2 = new FileIOPermission(FileIOPermissionAccess.Write, @"c:\teste.txt");

IPermission perm3 = new FileIOPermission(FileIOPermissionAccess.Write, @"c:\teste2.txt");

IPermission perm4 = new FileIOPermission(FileIOPermissionAccess.AllAccess, @"c:\teste.txt");

IPermission all = new FileIOPermission(PermissionState.Unrestricted);

IPermission none = new FileIOPermission(PermissionState.None);

Console.WriteLine(perm1.Union(perm2));

Console.WriteLine(perm2.Union(perm3));

Console.WriteLine(perm1.Intersect(perm4));

Console.WriteLine(perm1.Union(all));

Console.WriteLine(perm1.Intersect(all));

Console.WriteLine(perm1.Union(none));

<IPermission class=“…" version="1" Read="c:\teste.txt" Write="c:\teste.txt"/>

<IPermission class=“…" version="1" Write="c:\teste.txt;c:\teste2.txt"/>

<IPermission class=“…" version="1" Read="c:\teste.txt"/>

<IPermission class=“…" version="1“ Unrestricted="true"/>

<IPermission class=“…" version="1" Read="c:\teste.txt"/>

<IPermission class=“…" version="1" Read="c:\teste.txt"/>

Page 19: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

19P. Félix, 2006 Controlo de acessos na plataforma .NET

Interface IStackWalk

• A exigência de algumas permissões implica verificar se todos os chamadores no call stack possuem a permissão – stack walk

• A interface IStackWalk define um conjunto de métodos associados a esta operação

• Exigência da permissão– void Demand()

• Modificadores do percurso – quando presentes numa stack frame, alteram o comportamento do percurso

– void Assert() – Garante a existência da permissão, terminando o percurso no stack

– void Deny() - Recusa a permissão, terminando o percurso no stack– void PermitOnly() – Apenas permite esta permissão

• Para a utilização do método Assert sobre uma permissão é necessário:– Possuir a permissão essa permissão– Possuir a permissão SecurityPermission com SecurityPermissionFlag.Assert

Page 20: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

20P. Félix, 2006 Controlo de acessos na plataforma .NET

Percurso no stack

método

métodométodo

método

método

método

assembly

assembly

assembly

assembly

assembly

método

PermissionSet

PermissionSet

PermissionSet

PermissionSet

PermissionSet

Recurso

Raíz PermissionSetThread

IStackWalkDemand

Stack Walk

Page 21: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

21P. Félix, 2006 Controlo de acessos na plataforma .NET

Modificadores do percurso no stack

método

métodométodo

método

método

método

método

Recurso

Raíz

Demand

Assert

Deny

Page 22: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

22P. Félix, 2006 Controlo de acessos na plataforma .NET

Classe CodeAccessPermission

• A classe abstracta CodeAccessPermission implementa as interfaces IPermission e IStackWalk

• Fornece implementações para os métodos de IStackWalk• Não fornece implementações para os métodos de IPermission (à

excepção de Demand). Estes devem ser implementados pela classes derivadas

• Serve de base para todas as classes de permissões cuja exigência implica um percurso no stack

• Existem permissões que não derivam de CodeAccessPermission (ex. PrincipalPermission)

Page 23: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

23P. Félix, 2006 Controlo de acessos na plataforma .NET

CodeAccessPermission: classes derivadas

• Associadas a recursos– System.Data.Common.DBDataPermission– System.Data.OracleClient.OraclePermission– System.Drawing.Printing.PrintingPermission– System.Messaging.MessageQueuePermission– System.Net.DnsPermission– System.Net.SocketPermission– System.Net.WebPermission– System.Security.Permissions.EnvironmentPermission– System.Security.Permissions.FileDialogPermission– System.Security.Permissions.FileIOPermission– System.Security.Permissions.IsolatedStoragePermission– System.Security.Permissions.ReflectionPermission– System.Security.Permissions.RegistryPermission– System.Security.Permissions.ResourcePermissionBase– System.Security.Permissions.SecurityPermission– System.Security.Permissions.UIPermission– System.Web.AspNetHostingPermission

• Associadas a componentes da identidade do código– System.Security.Permissions.PublisherIdentityPermission– System.Security.Permissions.SiteIdentityPermission– System.Security.Permissions.StrongNameIdentityPermission– System.Security.Permissions.UrlIdentityPermission– System.Security.Permissions.ZoneIdentityPermission

Page 24: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

24P. Félix, 2006 Controlo de acessos na plataforma .NET

Classe PermissionSet

• A classe PermissionSet representa um conjunto de permissões• Implementa a interface IStackWalk – utilizada para exigir

permissões e/ou alterar os percursos no stack• Implementa semântica de conjunto – Intersect, Union, IsSubsetOf

Page 25: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

25P. Félix, 2006 Controlo de acessos na plataforma .NET

Outras permissões

• Nem todas as permissões implicam percurso no stack – não derivam de CodeAccessPermission

• Exemplo: permissão PrincipalPermission– Verifica a identidade do utilizador currente

– Verifica os roles do utilizador currente

Page 26: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

26P. Félix, 2006 Controlo de acessos na plataforma .NET

Diagrama

PermissionSet CodeAcessPermission

XxxxPermission

IPermission

DemandIntersectIsSubsetOfUnion

IStackWalk

DemandAssertDenyPermitOnly

addPermissiongetPermissionIntersectIsSubsetOfUnion

IUnrestrictedPermission

YyyyPermission

implementa

estende

implementa

implementa

implementa

implementaimplementa

Page 27: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

27P. Félix, 2006 Controlo de acessos na plataforma .NET

Exigência declarativa

• Utilização de atributos

[FileIOPermission(SecurityAction.Demand, Read = “c:\\MyPath”]

void AMethod(){

// se chegou aqui, então existem as permissões necessárias

// realizar o trabalho

}

• Vantagens– Existem exigência que só podem ser expressas na forma declarativa

– Facilita a análise estática

– Podem ser aplicadas a todo um tipo

– São realizadas no início do método

Page 28: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

28P. Félix, 2006 Controlo de acessos na plataforma .NET

Exigência Imperativa

• Exigência da permissão no código do método

void AMethod(){

FileIOPermission perm = new FileIOPermission(FileIOPermissionAcess.Read, “c:\\MyPath”);

perm.Demand();

// se chegou aqui, então existem as permissões necessárias

// realizar o trabalho

}

• Vantagens– Possibilita lógica mais complexa na determinação da permissão a

exigir. Ex.: exigência dependente do valor dos parâmetros

Page 29: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

29P. Félix, 2006 Controlo de acessos na plataforma .NET

Outras acções de segurança

• Demand, Assert, Deny, PermitOnly• LinkDemand

– Exige que o chamador tenha a permissão– Controlo realizado em tempo de geração de código JIT

• InheritanceDemand– Exige que classes derivadas tenham a permissão– Controlo realizado em tempo de carregamento

• RequestMinumum– Conjunto mínimo de permissões para o assembly se poder executar– Resolvido em tempo de determinação de permissões dum assembly

• RequestOpcional– Conjunto opcional de permissões que o assembly pode ter– Resolvido em tempo de determinação de permissões dum assembly

• RequestRefuse– Conjunto permissões que o assembly não pode ter– Resolvido em tempo de determinação de permissões dum assembly

Page 30: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

30P. Félix, 2006 Controlo de acessos na plataforma .NET

Acções de segurança: resumo

• Enumerado SecurityAction

Acção Fase Alvos Imperativa

LinkDemand Compilação JIT Classe, método Não

InheritanceDemand Carregamento Classe, método Não

Demand Execução Classe, método Sim

Assert Execução Classe, método Sim

Deny Execução Classe, método Sim

PermitOnly Execução Classe, método Sim

RequestMinimum Grant Assembly Não

RequestOptional Grant Assembly Não

RequestRefuse Grant Assembly Não

Page 31: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

31P. Félix, 2006 Controlo de acessos na plataforma .NET

Permissões dos assemblies

• Processo de determinação das permissões dum assembly (permission grant)– Entrada: Evidence

– Saída: PermissionSet

– Parametrização: PolicyLevel

PermissionSetEvidence CLR

CodeGroup

IMembershipCondition PermissionSet

PolicyLevel

Page 32: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

32P. Félix, 2006 Controlo de acessos na plataforma .NET

Policy Level

• Um nível da política (policy level) é constituído por– Conjunto de assemblies de confiança (“full trust”)

– Conjunto de conjuntos de permissões (“named permission sets”)

– Grupo de código raíz (“root code group”)

• Assemblies de confiança (“full trust”)– Conjunto de assemblies, referenciados pelos strong names, de

assemblies em quem o nível da política deposita toda a confiança.

– Tipicamente são assemblies que contém tipos relacionados com a arquitectura de controlo de acessos

• Conjuntos de permissões– Conjuntos de permissões (classes que implementam IPermission) aos

quais é atribuído um nome

Page 33: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

33P. Félix, 2006 Controlo de acessos na plataforma .NET

Grupos de código

• Um grupo de código (“code group”) define– Um conjunto de assemblies que pertençem ao grupo

– Um conjunto de permissões a atribuir aos assemblies do grupo

– Um conjunto de grupos de código filhos

• A definição dos assemblies que pertençem ao grupo é realizada através de implementação de IMembershipConditions

public interface IMembershipCondition {

bool Check( Evidence evidence );

}

• A atribuição das permissões aos assemblies do grupo é realizada através do nome do named permission set

Page 34: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

34P. Félix, 2006 Controlo de acessos na plataforma .NET

Diagrama

CodeGroup

PolicyLevel

AssemblyPermissionSet

Named Permission Sets

Root CodeGroup

Trusted Assemblies

Childs

IMembershipConditionIPermission

Condição de pertença

Checks

Contém

Permissões dos elementos do grupo

Evidence

Page 35: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

35P. Félix, 2006 Controlo de acessos na plataforma .NET

Policy Manager

• PolicyManager - Fornece métodos estáticos para acesso e manipulação da security policy

• bool IsGranted(IEvidence)

• PolicyLevel LoadPolicyLevelFromFile(string path, PolicyLevelType type)

• PolicyLevel LoadPolicyLevelFromString(string str, PolicyLevelType type)

• IEnumerator PolicyHierarchy()

• PermissionSet ResolvePolicy(Evidence)

• IEnumerator ResolvePolicyGroups(Evidence)

• void SavePolicy()

• void SavePolicyLevel(PolicyLevel)

Page 36: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

36P. Félix, 2006 Controlo de acessos na plataforma .NET

Esquema

PolicyLevel

SecurityClasses SecurityClass

name

description

NamedPermissionSets PermissionSetclass

name

IPermissionclass

propertiesCodeGroup

IMemberShipCondition

class

PermissionSet

name

Class

properties

FullTrustAssemblies

IMemberShipCondition

1

1

1

1

n

n

n

n

1

n

Page 37: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

37P. Félix, 2006 Controlo de acessos na plataforma .NET

Permissões User-Identity

IPrincipal

IdentityIsInRole

Thread IIdentity

AuthenticationTypeIsAuthenticatedName

GenericPrincipal

WindowsPrincipal

GenericIdentity

WindowsIdentity

Page 38: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

38P. Félix, 2006 Controlo de acessos na plataforma .NET

Permissões proprietárias

• Code Access Permissions– Derivar de CodeAccessPermission

– Implementar os métodos de IPermission, excepto o Demand: Copy, Intersect, Union e IsSubsetOf

– Implementar os métodos de ISecurityEncodable: ToXml e FromXml

– Nota: a implementação do método Demand e dos métodos associados a IStackWalk é herdada de CodeAccessPermission

– Implementar construtores públicos • .ctor()• .ctor(PermissionState)

– Marcar a classe como Serializable

Page 39: Controle de Acessos na Plataforma.NET Notas para a disciplina de Segurança Informática Pedro Félix (pedrofelix@cc.isel.ipl.pt)pedrofelix@cc.isel.ipl.pt.

39P. Félix, 2006 Controlo de acessos na plataforma .NET

Exigência declarativa

• Definir um Custom Attribute derivado de CodeAccessSecurityAttribute– Implementar construtor público .ctor(SecurityAction action)

– Implementar método IPermission CreatePermission()

• Nota: a definição deste Custom Attribute não pode ser realizada na mesma classe onde é utilizado, dado que o atributo é instanciado em tempo de compilação