A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Segurança na .NET Framework

Apresentações semelhantes


Apresentação em tema: "Segurança na .NET Framework"— Transcrição da apresentação:

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

2 Agenda Web Services e Smart Devices A Plataforma .NET
A segurança na .NET Sumário Console.WriteLine( “Duracao: {0}m”, ( new Random(). Next(15)) )

3 Agenda Web Services e Smart Devices A Plataforma .NET
Segurança na .NET Sumário

4 Empregados no Exterior Empregados no Exterior
A empresa “Virtual” Empresa A Empresa B Clientes Parceiros Fornecedores Escrit.Remoto/Consumidores Empregados no Exterior Escrit.Remoto/Consumidores Empregados no Exterior Exigencia de negócio = Estar tudo ligado

5 Exigencia de negócio = tudo ligado
Empresa A Escrit.Remoto/Consumidores Empregados no Exterior Company C Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Empregados no Exterior Empresa B Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Empregados no Exterior Empresa D Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Empregados no Exterior Empresa E Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Empregados no Exterior Empresa F Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Empregados no Exterior Exigencia de negócio = tudo ligado

6 A Integração Problema clássico Exemplos Costuma ficar para o fim
Demasiado difícil, cara, lenta e frágil Ilhas de tecnologia no mar da conectividade As soluções estão a evoluir para constelações Exemplos Dentro das empresas Entre empresas O indivíduo e diferentes tecnologias

7 Web Services Conceptualmente “Pequenos componentes de funcionalidade disponibilizadas para poderem ser consumidos como serviços através de uma rede” Tecnicamente “Conjunto de operações acessíveis através de mensagens “standard” sobre uma rede

8 Demo

9 Novos dispositivos Uma plataforma de desenvolvimento tem de integrar os novos dispositivos de forma transparente; Conectividade Baixo custo, a Internet a universalizar-se Wireless, acesso a banda larga Proliferação de equipamentos Equipamentos ligados à Internet - PDAs, Telefones celulares etc. Standards para a Internet Integração assente em XML

10 Demo Vídeo Web Services

11 Agenda Web Services e Smart Devices A plataforma .NET
A segurança na .NET Sumário

12 O que é o .NET? Uma plataforma de desenvolvimento: interfaces, componentes e ferramentas para desenvolver software. A maior alteração dentro da Microsoft desde que o Windows substituíu o DOS As alterações incluem: Formato do código, compiladores, Modelos de carregamento e execução do código, Modelo de segurança, Modelo de objectos, metadados, protocolos remoting Bibliotecas de classes,

13 A plataforma .NET

14 O valor estratégico da plataforma
Suporte ao desenvolvimento de novos negócios assentes na tecnologia

15 Novos modelos de negócio
AUTENTICAÇÃO Leilões Fornecedor A Fornecedor B ……… Fornecedor C

16 Novos modelos de negócio
Pagamentos AUTENTICAÇÃO Leilões Fornecedor A Fornecedor B ……… Fornecedor C Empresa A Empresa B Empresa C

17 Novos modelos de negócio
Pagamentos AUTENTICAÇÃO Leilões Fornecedor A Fornecedor B ……… Fornecedor C Empresa A Empresa B Empresa C

18 O Software será a base dos novos modelos de negócio
Experiências de utilização de software consistentes entre os diversos dispositivos; Produção de software como um serviço; Modelo de programação consistente. O software tem de permitir:

19 .NET: Princípios Visão Microsoft para a computação
Tornar a computação distribuida na Internet comum Explorar o poder de processamento e largura de banda cada vez mais baratos Integração natural entre múltiplas aplicações e dispositivos Disponibilizar software como um serviço Experiência de utilização nova e mais rica A .NET Framework é o modelo de programação que serve de base para a visão .NET

20 Objectivos no desenho da .NET Framework
Simplificar o desenvolvimento de aplicações Fornecer um ambiente de execução seguro e robusto Suporte para múltiplas linguagens de programação Simplificar a distribuição e manutenção de aplicações

21 Common Language Runtime
.NET Framework Common Language Runtime (CLR) Suporte múltiplas linguagens Sistema único de tipos Deployment simplificado Code Access Security Bibliotecas base ricas Modelo de programação poderoso e consistente Focus no código e funcionalidade Integração com as tools de desenvolvimento Suporte de funcionalidade design-time Suporte para Debugging ASP.NET Web Forms Web Services Mobile Devices Windows Forms ADO.NET and XML Base Class Library Common Language Runtime

22 Common Language Runtime
Desenvolvimento Assembly public static void Main(String[] args ) usr=Environment.GetEnvironmentVariable("USERNAME"); try { { String usr; FileStream f; StreamWriter w; w.WriteLine(usr); w=new StreamWriter(f); f=new FileStream(“C:\\test.txt",FileMode.Create); Console.WriteLine("Exception:"+e.ToString()); } catch (Exception e){ w.Close(); } Compilador public static void Main(String[] args ) usr=Environment.GetEnvironmentVariable("USERNAME"); try { { String usr; FileStream f; StreamWriter w; w.WriteLine(usr); w=new StreamWriter(f); f=new FileStream(“C:\\test.txt",FileMode.Create); Console.WriteLine("Exception:"+e.ToString()); } catch (Exception e){ w.Close(); } Código C# J# VB Cobol CIL Metadata Resources

23 Common Language Runtime
Distribuição Assembly Desenvolvimento Compilador Assembly Desenvolvimento C# J# VB Cobol CIL Metadata Resources try { { String usr; FileStream f; StreamWriter w; public static void Main(String[] args ) w.WriteLine(usr); w=new StreamWriter(f); f=new FileStream(“C:\\test.txt",FileMode.Create); usr=Environment.GetEnvironmentVariable("USERNAME"); } catch (Exception e){ w.Close(); } Console.WriteLine("Exception:"+e.ToString()); Código Global Assembly Cache (GAC) Install Setup Copy Browser Application Directory Download Cache

24 Common Language Runtime
Assembly Desenvolvimento Application Directory Setup Copy Browser Download Cache Distribuição Global Assembly Cache (GAC) Assembly on Target Machine Install Policy <security> <mscorlib> <configuration> <?xml version="1.0" encoding="utf-8" ?> <policy> version="1" <CodeGroup class="UnionCodeGroup" <PolicyLevel version="1"> PermissionSetName="Nothing" Description="Code group grants no permissio ns and forms the root of the code group tree."> Name="All_Code" <IMembershipCondition clas s="AllMembershipCondition" version="1"/> PermissionSetName="FullTrust" Execução IL to Native Compiler Class Loader Security Assembly Loader Garbage Collection Native .exe + GC table Code Manager Exception Manager Thread Support COM Interop Debug Engine

25 Common Language Runtime
Demo Common Language Runtime

26 .NET Compact Framework .NET Framework para dispositivos embebidos

27 As ferramentas de desenvolvimento
XML Web Services HTML, scripting Visual Basic PowerBuilder Delphi MS-BASIC Turbo Pascal QuickBasic A Web Cobol RPG GUI O PC O “sistema”

28 Como saber mais sobre a .NET Framework?
.NET Framework SDK (essencial!) CLR, compiladores de linha de comando, debuggers, class libraries, documentação, … Download grátis Size: ~100 MB Visual Studio .NET (opcional) IDE (Ambiente de Desenvolvimento Integrado) Size: ~1.5 GB

29 Agenda Web Services e Smart Devices A plataforma .NET
A segurança na .NET Sumário

30 Segurança “Code Access” e “Evidence Based” Segurança “Role Based”
Boas práticas

31 Code Access Security Visão Geral
Controlo Identidade Utilizador Recursos Controlo Identidade Código Código

32 Code Access Security Visão Geral
O código também ter identidade De acordo com as provas de identidade são atribuídas permissões Só código com “confiança” suficiente pode aceder a recursos protegidos do sistema O código precisa de ter as permissões necessárias para aceder aos recursos Os recursos validam a sua lógica usando permissões

33 Segurança em .NET Principais conceitos
Provas (Evidence) Dados sobre o código site, url, zona, app directory, strong name, publisher, hash Política (Policy) Determinam o que o código pode fazer Concedem permissões às assemblies Permissões (Permissions) Autorizações específicas Definem o nível de acesso a um recurso

34 Provas (Evidence) 7 Tipos
Dados sobre o local de onde o código é carregado: site, url, zona, app directory Dados sobre quem escreveu o código: strong name, publisher Dados sobre todo o assembly: hash

35 Evidence Based Security
Distribuição Assembly Desenvolvimento Compilador Assembly Desenvolvimento C# J# VB Cobol CIL Metadata Resources try { { String usr; FileStream f; StreamWriter w; public static void Main(String[] args ) w.WriteLine(usr); w=new StreamWriter(f); f=new FileStream(“C:\\test.txt",FileMode.Create); usr=Environment.GetEnvironmentVariable("USERNAME"); } catch (Exception e){ w.Close(); } Console.WriteLine("Exception:"+e.ToString()); Código Global Assembly Cache (GAC) Install Setup Copy Browser Application Directory Download Cache

36 Evidence Based Security
Assembly Desenvolvimento Directoria aplicação Setup Copy Browser Download Cache Distribuição Assembly na máquina destino Global Assembly Cache (GAC) Install Policy <security> <mscorlib> <configuration> <?xml version="1.0" encoding="utf-8" ?> <policy> version="1" <CodeGroup class="UnionCodeGroup" <PolicyLevel version="1"> PermissionSetName="Nothing" Description="Code group grants no permissio ns and forms the root of the code group tree."> Name="All_Code" <IMembershipCondition clas s="AllMembershipCondition" version="1"/> PermissionSetName="FullTrust" Execução Provas <mscorlib> <configuration> <?xml version="1.0" encoding="utf-8" ?> <security> version="1" <CodeGroup class="UnionCodeGroup" <PolicyLevel version="1"> <policy> Description="Code group grants no permissio ns and forms the root of the code group tree."> Name="All_Code" PermissionSetName="Nothing" <IMembershipCondition clas s="AllMembershipCondition" version="1"/> PermissionSetName="FullTrust" Compilador IL para Nativo Class Loader Security Assembly Loader Garbage Collection Native .exe + GC table Code Manager Exception Manager Thread Support COM Interop Debug Engine

37 Só a intersecção é que é concedida
Evidence Based Security Permissões concedidas As permissões são o resultado da intersecção Todas as policies concordam antes de conceder um privilégio enterprise machine Só a intersecção é que é concedida appdomain user

38 Atribuição de Permissões

39 Evidence Based Security Code Groups (determinam a policy)
Um Code Group tem 2 atributos Condição “Membership” Um PermissionSet associado

40 Code Groups As provas da Assembly são comparadas
com cada condição do Code Group Se a condição se verificar, o PermissionSet é adicionado à lista actual, e são verificados outros Code Groups abaixo deste nó Se não se verificar, não são verificados os CodeGroups abaixo deste                               A Hierarchy

41 Built-in Code Groups                   

42 Code Access Security Permissões
Permissões são definidas para controlar o acesso granular aos recursos do sistema Tipicamente, os construtores das permissões definem o nível de permissão Podem ser imperativas ou declarativas FileIOPermission fp = new FileIOPermission( FileIOPermissionAccess.AllAccess, @”C:\myapp” ); [ FileIOPermission( SecurityAction.Demand, ]

43 Code Access Security Permissões
FileIO FileDialog IsolatedStorage Environment Registry UI Printing Reflection Security Socket Web DNS OleDb SQLClient MessageQueue EventLog DirectoryServices … extensível Execution, Assertion, Skip Verification, Unmanaged code, Control evidence, Control policy, Control principal, Control threads

44 Code Access Security Permissões
As permissões são garantidas pelo Security Manager do Common Language Runtime MYCOMPONENT (LOCALMACHINE) Stream fileStream = FileStream.Open(“cod_mb.xml”); Tem permissão? Chama .NET FRAMEWORK public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name) fp.Demand() }

45 Code Access Security Excepções de segurança
Sempre que o código tentar efectuar alguma operação para a qual não tenha privilégios é gerada uma excepção do tipo SecurityException Excepção MYCOMPONENT (LOCALMACHINE) Stream fileStream = FileStream.Open(“cod_mb.xml”); Tem permissão? Chama .NET FRAMEWORK public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name) fp.Demand() }

46 Code Access Security – stack walk
Excepção NOTMYAPP (outra app) myComponent.ReadSetting(key); . . . Tem permissão? MYCOMPONENT (com privilégios) Stream fileStream = FileStream.Open(“cod_mb.xml”); Chama Tem permissão? Chama FRAMEWORK public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name) fp.Demand() }

47 Evidence Based Security Alterar as políticas default
Os administradores podem ajustar as políticas actuais, assim como criar novas utilizando novos code groups .NET Framework Configuration Tool (MMC) Caspol.exe (linha de comando) As políticas podem ser definidas ao nível da aplicação, utilizador, máquina e empresa.

48 Segurança Segurança “Role Based” “Code Access” e “Evidence Based”
Boas práticas

49 Role-Based Security Principais conceitos
Centrada na identidade do utilizador e funções (“roles”) Fornece um modelo de programação unificado para todos os tipos de autenticação Basic, Digest, Kerberos, Microsoft Passport, Forms/Custom, Certificados Cliente

50 Role-Based Security Identidade
IIdentity – interface que define a identidade. Esta interface é genérica, e pode ser utilizada / extendida A autenticação é responsabilidade de quem implementa esta interface Implementações existentes na .NET Framework GenericIdentity – implementação genérica WindowsIdentity – implementação que integra com a segurança do Windows

51 Role-Based Security Funções (Roles)
IPrincipal – interface que associa funções (“roles”) à identidade. Esta interface é genérica, e pode ser utilizada / extendida Implementações existentes na .NET Framework GenericPrincipal – implementação genérica WindowsPrincipal – implementação que integra com a segurança do Windows

52 Segurança Boas práticas “Code Access” e “Evidence Based”
Segurança “Role Based” Boas práticas

53 Boas Prácticas Segurança na .NET Framework
Não ignorar a segurança!!!! Não correr tudo como Administrator / FullTrust “porque senão não funciona”!!! Provavelmente existe uma razão de segurança para esse comportamento !!! Pensar na segurança desde o início

54 Agenda Web Services e Smart Devices A plataforma .NET
Segurança na .NET Sumário

55 .NET em suma A plataforma de desenvolvimento de software da Microsoft para a próxima década Baseada em standards, para múltiplas linguagens e múlplipos dispositivos Baseada na ideia dos Web Services

56 Segurança .NET em suma O código também tem identidade
Os níveis de acesso do código são concedidos mediante provas As políticas determinam que privilégios atribuir de acordo com as provas apresentadas Particularmente útil para código móvel Existem mecanismos para implementar segurança de acordo com a “função” do utilizador. Nós só vimos a ponta do iceberg !

57 Para mais informação… Site MSDN Portugal Site MSDN Internacional
Site MSDN Internacional Newsgroups news://msnews.microsoft.com/microsoft.public.pt.dotnet .NET Security Livro .NET Framework Security, ISBN: x

58 Tomar café !!! 


Carregar ppt "Segurança na .NET Framework"

Apresentações semelhantes


Anúncios Google