54
1 Segurança na .NET Segurança na .NET Framework Framework Vitor Santos Vitor Santos .NET Group .NET Group Microsoft Corporation Microsoft Corporation

1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

Embed Size (px)

Citation preview

Page 1: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

1

Segurança na .NETSegurança na .NETFrameworkFramework

Vitor SantosVitor Santos

.NET Group.NET Group

Microsoft CorporationMicrosoft Corporation

Page 2: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

2

AgendaAgenda

Web Services e Smart DevicesWeb Services e Smart DevicesA Plataforma .NETA Plataforma .NETA segurança na .NETA segurança na .NETSumárioSumário

Console.WriteLine( “Duracao: {0}m”,40 + ( -15 + new Random(). Next(15)) )

Page 3: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

3

AgendaAgenda

Web ServicesWeb Services e Smart Devicese Smart DevicesA Plataforma .NETA Plataforma .NETSegurança na .NETSegurança na .NETSumárioSumário

Page 4: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

4

Empresa AEmpresa A

A empresa “Virtual” A empresa “Virtual”

Escrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

Empregados no ExteriorEmpregados no Exterior

Empresa BEmpresa B

ClientesClientesParceirosParceiros

Fornecedores Fornecedores

Escrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

Empregados no ExteriorEmpregados no Exterior

Exigencia de negócio = Estar tudo ligadoExigencia de negócio = Estar tudo ligado

Page 5: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

5

Empresa AEmpresa A

Escrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

Empregados no Empregados no ExteriorExterior

Exigencia de negócio = tudo ligadoExigencia de negócio = tudo ligado

Empresa BEmpresa BEscrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

ClientesClientesParceirosParceiros

FornecedoresFornecedores

Empregados no Empregados no ExteriorExterior

Empresa FEmpresa FEscrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

ClientesClientesParceirosParceiros

FornecedoresFornecedores

Empregados no Empregados no ExteriorExterior

Empresa EEmpresa EEscrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

ClientesClientesParceirosParceiros

FornecedoresFornecedores

Empregados no Empregados no ExteriorExterior

Company CCompany CEscrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

ClientesClientesParceirosParceiros

FornecedoresFornecedores

Empregados no Empregados no ExteriorExterior

Empresa DEmpresa DEscrit.Remoto/ConsumidoresEscrit.Remoto/Consumidores

ClientesClientesParceirosParceiros

FornecedoresFornecedores

Empregados no Empregados no ExteriorExterior

Page 6: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

6

A IntegraçãoA Integração Problema clássicoProblema clássico

Costuma ficar para o fimCostuma ficar para o fim Demasiado difícil, cara, lenta e frágilDemasiado difícil, cara, lenta e frágil Ilhas de tecnologia no mar da Ilhas de tecnologia no mar da

conectividadeconectividade As soluções estão a evoluir para As soluções estão a evoluir para

constelaçõesconstelações ExemplosExemplos

Dentro das empresasDentro das empresas Entre empresasEntre empresas O indivíduo e diferentes tecnologiasO indivíduo e diferentes tecnologias

Page 7: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

7

Web ServicesWeb Services ConceptualmenteConceptualmente““Pequenos componentes de Pequenos componentes de

funcionalidade funcionalidade disponibilizadas para poderem disponibilizadas para poderem ser consumidos como serviços ser consumidos como serviços através de uma rede”através de uma rede”

TecnicamenteTecnicamente““Conjunto de operações Conjunto de operações

acessíveis através deacessíveis através de mensagensmensagens “ “standard” sobre standard” sobre uma redeuma rede

Page 8: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

8

DemoDemo

Page 9: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

9

Novos dispositivosNovos dispositivos Uma plataforma de Uma plataforma de

desenvolvimento tem de desenvolvimento tem de integrar os novos dispositivos integrar os novos dispositivos de forma transparente; de forma transparente;

ConectividadeConectividade Baixo custo, a Internet a Baixo custo, a Internet a

universalizar-seuniversalizar-se Wireless, acesso a banda largaWireless, acesso a banda larga Proliferação de equipamentosProliferação de equipamentos Equipamentos ligados à Internet Equipamentos ligados à Internet

- PDAs, Telefones celulares etc.- PDAs, Telefones celulares etc.

Standards para a Internet Standards para a Internet Integração assente em XMLIntegração assente em XML

Page 10: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

10

DemoDemoVídeo Web ServicesVídeo Web Services

Page 11: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

11

AgendaAgenda

Web Services e Smart DevicesWeb Services e Smart DevicesA plataforma .NETA plataforma .NETA segurança na .NETA segurança na .NETSumárioSumário

Page 12: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

12

O que é o .NET?O que é o .NET? Uma plataforma de desenvolvimento: Uma plataforma de desenvolvimento:

interfaces, componentes e ferramentas para interfaces, componentes e ferramentas para desenvolver software.desenvolver software.

A maior alteração dentro da Microsoft desde A maior alteração dentro da Microsoft desde que o Windows substituíu o DOSque o Windows substituíu o DOS

As alterações incluem:As alterações incluem: Formato do código, compiladores,Formato do código, compiladores, Modelos de carregamento e execução do código, Modelos de carregamento e execução do código, Modelo de segurança,Modelo de segurança, Modelo de objectos, metadados, protocolos remotingModelo de objectos, metadados, protocolos remoting Bibliotecas de classes,Bibliotecas de classes, ……

Page 13: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

13

A plataforma .NETA plataforma .NET

Page 14: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

18

O software tem de permitir:O software tem de permitir:

O Software será a base dos O Software será a base dos novos modelos de negócionovos modelos de negócio

Experiências de utilização de software Experiências de utilização de software consistentes entre os diversos consistentes entre os diversos dispositivos;dispositivos;

Produção de software como um Produção de software como um serviço;serviço;

Modelo de programação consistente.Modelo de programação consistente.

Page 15: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

19

A .NET Framework é o modelo de A .NET Framework é o modelo de programação que serve de base programação que serve de base para a visão .NETpara a visão .NET

.NET: Princípios.NET: Princípios Visão Microsoft para a computaçãoVisão Microsoft para a computação

Tornar a computação distribuida na Internet Tornar a computação distribuida na Internet comumcomum

Explorar o poder de processamento e largura de Explorar o poder de processamento e largura de banda cada vez mais baratosbanda cada vez mais baratos

Integração natural entre múltiplas aplicações e Integração natural entre múltiplas aplicações e dispositivosdispositivos

Disponibilizar software como um serviçoDisponibilizar software como um serviço Experiência de utilização nova e mais ricaExperiência de utilização nova e mais rica

Page 16: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

20

Objectivos no desenho Objectivos no desenho da .NET Frameworkda .NET Framework

Simplificar o desenvolvimento de Simplificar o desenvolvimento de aplicaçõesaplicações

Fornecer um ambiente de execução Fornecer um ambiente de execução seguro e robustoseguro e robusto

Suporte para múltiplas linguagens Suporte para múltiplas linguagens de programaçãode programação

Simplificar a distribuição e Simplificar a distribuição e manutenção de aplicaçõesmanutenção de aplicações

Page 17: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

21

Common Language RuntimeCommon Language Runtime

Base Class LibraryBase Class Library

ADO.NET and XMLADO.NET and XML

ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services

Mobile DevicesMobile Devices

WindowsWindowsFormsForms

Common Language Common Language Runtime (CLR) Runtime (CLR) Suporte múltiplas Suporte múltiplas

linguagenslinguagens Sistema único de tiposSistema único de tipos Deployment simplificadoDeployment simplificado Code Access SecurityCode Access Security

Bibliotecas base ricasBibliotecas base ricas Modelo de programação Modelo de programação

poderoso e consistentepoderoso e consistente Focus no código e Focus no código e

funcionalidadefuncionalidade Integração com as tools de Integração com as tools de

desenvolvimentodesenvolvimento Suporte de funcionalidade Suporte de funcionalidade

design-timedesign-time Suporte para DebuggingSuporte para Debugging

.NET Framework.NET Framework

Page 18: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

22

CompiladorCompilador AssemblyAssemblyAssemblyAssembly

Common Language RuntimeCommon Language RuntimeDesenvolvimentoDesenvolvimento

C#C#J#J#VBVB

CobolCobol……

CILCILMetadataMetadata

ResourcesResources

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

CódigoCódigo

Page 19: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

23

CompiladorCompilador AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento

C#C#J#J#VBVB

CobolCobol……

CILCILMetadataMetadata

ResourcesResources

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

CódigoCódigo

AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento

ApplicationApplicationDirectoryDirectory

ApplicationApplicationDirectoryDirectory

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

Common Language RuntimeCommon Language RuntimeDistribuiçãoDistribuição

SetupSetupCopyCopy

BrowserBrowser

Download Download CacheCache

Download Download CacheCache

InstallInstall

Page 20: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

24Debug EngineDebug Engine

IL to NativeIL to NativeCompilerCompiler

ApplicationApplicationDirectoryDirectory

ApplicationApplicationDirectoryDirectory

SetupSetupCopyCopy

BrowserBrowser

Download Download CacheCache

Download Download CacheCache

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

AssemblyAssemblyon Target on Target MachineMachine

AssemblyAssemblyon Target on Target MachineMachine

Common Language RuntimeCommon Language Runtime

AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento DistribuiçãoDistribuição

InstallInstall

ExecuçãoExecução

AssemblyAssemblyLoaderLoaderSecuritySecurityClass Class

LoaderLoader

Native .exe Native .exe + GC table + GC table Native .exe Native .exe + GC table + GC table

Code Code ManagerManager

Garbage CollectionGarbage Collection

Exception ManagerException Manager

Thread SupportThread Support

COM InteropCOM Interop

Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"

Page 21: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

25

DemoDemoCommon Language RuntimeCommon Language Runtime

Page 22: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

26

.NET Compact Framework.NET Compact Framework

.NET Framework para dispositivos .NET Framework para dispositivos embebidosembebidos

Page 23: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

27

As ferramentas de As ferramentas de desenvolvimentodesenvolvimento

Cobol Cobol

RPGRPG

MS-BASIC MS-BASIC Turbo Pascal Turbo Pascal QuickBasicQuickBasic

Visual Basic Visual Basic PowerBuildePowerBuilde

r r DelphiDelphi

GUIGUI

O PCO PC

A WebA Web

O O “sistema“sistema

””

XML Web XML Web ServicesServicesHTML,HTML,

scriptingscripting

Page 24: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

28

Como saber mais sobre Como saber mais sobre a .NET Framework?a .NET Framework?

.NET Framework SDK (essencial!).NET Framework SDK (essencial!) CLR, compiladores de linha de comando, CLR, compiladores de linha de comando,

debuggers, class libraries, documentação, …debuggers, class libraries, documentação, … Download grátisDownload grátis Size: ~100 MBSize: ~100 MB

Visual Studio .NET (opcional)Visual Studio .NET (opcional) IDE (Ambiente de Desenvolvimento IDE (Ambiente de Desenvolvimento

Integrado) Integrado) Size: ~1.5 GBSize: ~1.5 GB

Page 25: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

29

AgendaAgenda

Web Services e Smart DevicesWeb Services e Smart DevicesA plataforma .NETA plataforma .NETA segurança na .NETA segurança na .NETSumárioSumário

Page 26: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

30

SegurançaSegurança

““Code Access” e “Evidence Code Access” e “Evidence Based”Based”

Segurança “Role Based”Segurança “Role Based” Boas práticasBoas práticas

Page 27: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

31

RecursosRecursos

Controlo Identidade UtilizadorControlo Identidade Utilizador

Code Access SecurityCode Access SecurityVisão GeralVisão Geral

CódigoCódigo

Controlo Identidade CódigoControlo Identidade Código

Page 28: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

32

Code Access SecurityCode Access SecurityVisão GeralVisão Geral

O código também ter identidadeO código também ter identidade De acordo com as provas de identidade De acordo com as provas de identidade

são atribuídas permissõessão atribuídas permissões Só código com “confiança” suficiente Só código com “confiança” suficiente

pode aceder a recursos protegidos do pode aceder a recursos protegidos do sistemasistema O código precisa de ter as permissões O código precisa de ter as permissões

necessárias para aceder aos recursosnecessárias para aceder aos recursos Os recursos validam a sua lógica usando Os recursos validam a sua lógica usando

permissõespermissões

Page 29: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

33

Segurança em .NETSegurança em .NETPrincipais conceitosPrincipais conceitos Provas (Evidence) Provas (Evidence)

Dados sobre o código Dados sobre o código site, url, zona, app directory, strong name, site, url, zona, app directory, strong name,

publisher, hashpublisher, hash

Política (Policy)Política (Policy) Determinam o que o código pode fazerDeterminam o que o código pode fazer Concedem permissões às assembliesConcedem permissões às assemblies

Permissões (Permissions)Permissões (Permissions) Autorizações específicasAutorizações específicas Definem o nível de acesso a um recursoDefinem o nível de acesso a um recurso

Page 30: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

34

Provas (Evidence) Provas (Evidence)

7 Tipos7 Tipos

Dados sobre o local de onde o código é Dados sobre o local de onde o código é carregado:carregado:

site, url, zona, app directorysite, url, zona, app directory Dados sobre quem escreveu o código: Dados sobre quem escreveu o código:

strong name, publisherstrong name, publisher Dados sobre todo o assembly: Dados sobre todo o assembly:

hashhash

Page 31: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

35

CompiladorCompilador AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento

C#C#J#J#VBVB

CobolCobol……

CILCILMetadataMetadata

ResourcesResources

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

public static void Main(String[] args ){ String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); }}

CódigoCódigo

AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento

ApplicationApplicationDirectoryDirectory

ApplicationApplicationDirectoryDirectory

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

Evidence Based SecurityEvidence Based SecurityDistribuiçãoDistribuição

SetupSetupCopyCopy

BrowserBrowser

Download Download CacheCache

Download Download CacheCache

InstallInstall

Page 32: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

36Debug EngineDebug Engine

CompiladorCompiladorIL para NativoIL para Nativo

DirectoriaDirectoriaaplicaçãoaplicaçãoDirectoriaDirectoriaaplicaçãoaplicação

SetupSetupCopyCopy

BrowserBrowser

Download Download CacheCache

Download Download CacheCache

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

GlobalGlobalAssemblyAssembly

Cache (GAC)Cache (GAC)

AssemblyAssemblyna máquina na máquina

destinodestino

AssemblyAssemblyna máquina na máquina

destinodestino

Evidence Based SecurityEvidence Based Security

AssemblyAssemblyAssemblyAssembly

DesenvolvimentoDesenvolvimento DistribuiçãoDistribuição

InstallInstall

ExecuçãoExecução

AssemblyAssemblyLoaderLoaderSecuritySecurityClass Class

LoaderLoader

Native .exe Native .exe + GC table + GC table Native .exe Native .exe + GC table + GC table

Code Code ManagerManager

Garbage CollectionGarbage Collection

Exception ManagerException Manager

Thread SupportThread Support

COM InteropCOM Interop

Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"

Provas<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"

Page 33: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

37

As permissões são o resultado da intersecçãoAs permissões são o resultado da intersecção Todas as policies concordam antes de conceder um Todas as policies concordam antes de conceder um

privilégioprivilégio

useruser

appd

omai

n

appd

omai

n

machine

machine

ente

rpri

se

ente

rpri

seSó a Só a

intersecção intersecção é que é é que é

concedidaconcedida

Evidence Based SecurityEvidence Based SecurityPermissões concedidasPermissões concedidas

Page 34: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

38

Atribuição de PermissõesAtribuição de Permissões

Page 35: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

39

Evidence Based SecurityEvidence Based SecurityCode Groups (determinam a policy)Code Groups (determinam a policy)

Um Code Group tem 2 atributosUm Code Group tem 2 atributos Condição “Membership”Condição “Membership” Um PermissionSet associadoUm PermissionSet associado

Page 36: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

40

Code GroupsCode Groups

              

A Hierarchy

As provas da Assembly são comparadasAs provas da Assembly são comparadas com cada condição do Code Groupcom cada condição do Code Group

Se a condição se verificar, o Se a condição se verificar, o PermissionSet é adicionado à lista PermissionSet é adicionado à lista actual, e são verificados outros actual, e são verificados outros Code Code Groups abaixo deste nóGroups abaixo deste nó

Se não se verificar, não Se não se verificar, não são verificados os são verificados os CodeGroups abaixo desteCodeGroups abaixo deste               

Page 37: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

41

Built-in Code Groups Built-in Code Groups

                  

Page 38: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

42

Code Access SecurityCode Access SecurityPermissõesPermissões

Permissões são definidas para controlar o Permissões são definidas para controlar o acesso granular aos recursos do sistemaacesso granular aos recursos do sistema Tipicamente, os construtores das permissões Tipicamente, os construtores das permissões

definem o nível de permissãodefinem o nível de permissão

Podem ser imperativas ou declarativasPodem ser imperativas ou declarativasFileIOPermission fp = new FileIOPermission(

FileIOPermissionAccess.AllAccess,@”C:\myapp” );

[ FileIOPermission(SecurityAction.Demand, Write=@”C:\temp”) ]

Page 39: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

43

Code Access SecurityCode Access SecurityPermissõesPermissões FileIOFileIO FileDialogFileDialog IsolatedStorage IsolatedStorage EnvironmentEnvironment RegistryRegistry UI UI PrintingPrinting Reflection Reflection SecuritySecurity

SocketSocket WebWeb DNSDNS OleDbOleDb SQLClientSQLClient MessageQueueMessageQueue EventLogEventLog DirectoryServicesDirectoryServices … … extensível extensível

Execution, Assertion, Skip Verification, Execution, Assertion, Skip Verification, Unmanaged code, Control evidence, Control Unmanaged code, Control evidence, Control policy, Control principal, Control threadspolicy, Control principal, Control threads

Page 40: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

44

ChamaChama

.NET FRAMEWORK.NET FRAMEWORKpublic FileStream (string name) {public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name)FileIOPermission fp = new FileIOPermission(name) fp.Demand()fp.Demand() . . . .. . . .}}

Code Access SecurityCode Access SecurityPermissõesPermissões

MYCOMPONENT (LOCALMACHINE)MYCOMPONENT (LOCALMACHINE). . . .. . . .Stream fileStream = FileStream.Open(“cod_mb.xml”);Stream fileStream = FileStream.Open(“cod_mb.xml”);. . . .. . . .

Tem permissão?Tem permissão?

As permissões são garantidas pelo As permissões são garantidas pelo Security Manager do Common Security Manager do Common Language RuntimeLanguage Runtime

Page 41: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

45

Code Access Security Code Access Security Excepções de segurançaExcepções de segurança

Sempre que o código tentar efectuar Sempre que o código tentar efectuar alguma operação para a qual não alguma operação para a qual não tenha privilégios é gerada uma tenha privilégios é gerada uma excepção do tipo SecurityExceptionexcepção do tipo SecurityException

ChamaChama

.NET FRAMEWORK.NET FRAMEWORKpublic FileStream (string name) {public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name)FileIOPermission fp = new FileIOPermission(name) fp.Demand()fp.Demand() . . . .. . . .}}

MYCOMPONENT (LOCALMACHINE)MYCOMPONENT (LOCALMACHINE). . . .. . . .Stream fileStream = FileStream.Open(“cod_mb.xml”);Stream fileStream = FileStream.Open(“cod_mb.xml”);. . . .. . . .

Tem permissão?Tem permissão?

ExcepçãoExcepção

Page 42: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

46

Code Access Security – stack walkCode Access Security – stack walk

NOTMYAPP (outra app)NOTMYAPP (outra app). . . .. . . .myComponent.ReadSetting(key);myComponent.ReadSetting(key);. . .. . .

MYCOMPONENT (com privilégios)MYCOMPONENT (com privilégios). . . .. . . .Stream fileStream = FileStream.Open(“cod_mb.xml”);Stream fileStream = FileStream.Open(“cod_mb.xml”);. . . .. . . .

ChamaChama

Tem permissão?Tem permissão?

Tem permissão?Tem permissão?

ExcepçãoExcepção

ChamaChama

FRAMEWORKFRAMEWORKpublic FileStream (string name) {public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name)FileIOPermission fp = new FileIOPermission(name) fp.Demand()fp.Demand() . . . .. . . .}}

Page 43: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

47

Os administradores podem ajustar as Os administradores podem ajustar as políticas actuais, assim como criar políticas actuais, assim como criar novas utilizando novos code groupsnovas utilizando novos code groups .NET Framework Configuration Tool .NET Framework Configuration Tool

(MMC)(MMC) Caspol.exe (linha de comando)Caspol.exe (linha de comando)

As políticas podem ser definidas ao As políticas podem ser definidas ao nível da aplicação, utilizador, máquina nível da aplicação, utilizador, máquina e empresa.e empresa.

Evidence Based SecurityEvidence Based SecurityAlterar as políticas defaultAlterar as políticas default

Page 44: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

48

SegurançaSegurança

““Code Access” e “Evidence Based”Code Access” e “Evidence Based”

Segurança “Role Based”Segurança “Role Based” Boas práticasBoas práticas

Page 45: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

49

Role-Based Security Role-Based Security Principais conceitosPrincipais conceitos Centrada na identidade do utilizador e Centrada na identidade do utilizador e

funções (“roles”)funções (“roles”) Fornece um modelo de programação Fornece um modelo de programação

unificado para todos os tipos de unificado para todos os tipos de autenticaçãoautenticação Basic, Digest, Kerberos, Microsoft Basic, Digest, Kerberos, Microsoft

Passport, Forms/Custom, Certificados Passport, Forms/Custom, Certificados ClienteCliente

Page 46: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

50

Role-Based Security Role-Based Security IdentidadeIdentidade IIdentity – interface que define a IIdentity – interface que define a

identidade. Esta interface é genérica, e identidade. Esta interface é genérica, e pode ser utilizada / extendidapode ser utilizada / extendida

A autenticação é responsabilidade de A autenticação é responsabilidade de quem implementa esta interfacequem implementa esta interface

Implementações existentes na .NET Implementações existentes na .NET FrameworkFramework GenericIdentity – implementação genéricaGenericIdentity – implementação genérica WindowsIdentity – implementação que WindowsIdentity – implementação que

integra com a segurança do Windowsintegra com a segurança do Windows

Page 47: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

51

Role-Based Security Role-Based Security Funções (Roles)Funções (Roles) IPrincipal – interface que associa IPrincipal – interface que associa

funções (“roles”) à identidade. Esta funções (“roles”) à identidade. Esta interface é genérica, e pode ser interface é genérica, e pode ser utilizada / extendidautilizada / extendida

Implementações existentes na .NET Implementações existentes na .NET FrameworkFramework GenericPrincipal – implementação GenericPrincipal – implementação

genéricagenérica WindowsPrincipal – implementação que WindowsPrincipal – implementação que

integra com a segurança do Windowsintegra com a segurança do Windows

Page 48: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

52

SegurançaSegurança

““Code Access” e “Evidence Based”Code Access” e “Evidence Based” Segurança “Role Based”Segurança “Role Based”

Boas práticasBoas práticas

Page 49: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

53

Boas PrácticasBoas PrácticasSegurança na .NET FrameworkSegurança na .NET Framework

Não ignorar a Não ignorar a segurança!!!!segurança!!!! Não correr tudo como Administrator / Não correr tudo como Administrator /

FullTrust “porque senão não funciona”!!!FullTrust “porque senão não funciona”!!! Provavelmente existe uma razão de Provavelmente existe uma razão de

segurança para esse comportamento !!!segurança para esse comportamento !!!

Pensar na segurança desde o inícioPensar na segurança desde o início

Page 50: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

54

AgendaAgenda

Web Services e Smart DevicesWeb Services e Smart DevicesA plataforma .NETA plataforma .NETSegurança na .NETSegurança na .NETSumárioSumário

Page 51: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

55

.NET em suma.NET em suma A plataforma de desenvolvimento de A plataforma de desenvolvimento de

software da Microsoft para a próxima software da Microsoft para a próxima décadadécada

Baseada em standards, para múltiplas Baseada em standards, para múltiplas linguagens e múlplipos dispositivoslinguagens e múlplipos dispositivos

Baseada na ideia dos Web ServicesBaseada na ideia dos Web Services

Page 52: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

56

Segurança .NET em sumaSegurança .NET em suma

O código também tem identidadeO código também tem identidade Os níveis de acesso do código são Os níveis de acesso do código são

concedidos mediante provasconcedidos mediante provas As políticas determinam que privilégios As políticas determinam que privilégios

atribuir de acordo com as provas atribuir de acordo com as provas apresentadasapresentadas

Particularmente útil para código móvelParticularmente útil para código móvel Existem mecanismos para implementar Existem mecanismos para implementar

segurança de acordo com a “função” segurança de acordo com a “função” do utilizador.do utilizador.

Nós só vimos a ponta do iceberg ! Nós só vimos a ponta do iceberg !

Page 53: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

57

Para mais informação…Para mais informação… Site MSDN PortugalSite MSDN Portugal

http://http://www.microsoft.comwww.microsoft.com//portugalportugal//msdnmsdn

Site MSDN InternacionalSite MSDN Internacional http://msdn.microsoft.com/http://msdn.microsoft.com/ http://msdn.microsoft.com/net/http://msdn.microsoft.com/net/

NewsgroupsNewsgroups newsnews://://msnews.microsoft.commsnews.microsoft.com//

microsoft.public.pt.dotnetmicrosoft.public.pt.dotnet

.NET Security.NET Security http://http://msdn.microsoft.commsdn.microsoft.com//netnet//securitysecurity

LivroLivro .NET Framework Security, ISBN:0-672-32184-x.NET Framework Security, ISBN:0-672-32184-x

Page 54: 1 Segurança na.NET Framework Vitor Santos.NET Group Microsoft Corporation

58

Tomar café !!! Tomar café !!!