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



Documentos relacionados
Segurança na Plataforma Microsoft.Net

DESENVOLVIMENTO DE SOFTWARE AULA 1

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Como acompanhar a evolução dos aplicativos? Console >> Desktop >> Web >> Mobile >> Cloud. Como aproveitar o melhor de cada programador?

Microsoft.NET. Desenvolvimento Baseado em Componentes

Forms Authentication em ASP.NET

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora.

Parte I Princípios básicos do Microsoft.NET Framework

Trabalho Prático Nº1 Introdução ao C#.NET

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

Computação Orientada aos Serviços. WCF Semestre de Inverno 11/12 (Parte 1)

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

A interface do Microsoft Visual Studio 2005

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Ambientes Visuais. Ambientes Visuais

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Protótipo de um sistema para licenciamento de aplicativos Microsoft.NET baseado em assinatura digital XML

MCTS SHAREPOINT 2010, CONFIGURING Um exame para obter a Certificação completa

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

Um pouco do Java. Prof. Eduardo

Introdução ao C# . Visão geral do.net Framework

Microsoft.NET. Grupo: Eduardo Getassi Maicon Lima Rodrigo Cunha

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Solutions for Information Technologies. BIS-Navegador. Manual de Instalação para Microsoft SQL Server

Encontro de Utilizadores Esri ArcGIS for Server 10.2 Administração Orador: João Ferreira Esri Portugal

1. INTRODUÇÃO AO WINDOWS MOBILE Primeiros computadores portáteis Personal Digital Assistant 12

UFG - Instituto de Informática

Professor: Douglas Sousa Cursos de Computação

Treinar - Cursos e Treinamentos C# Módulo I. Carga horária: 32 Horas

Introdução ao Desenvolvimento.NET Paulo Sousa

Instalando e configurando o IIS no Windows Server 2012 Depois do Windows server 2012 instalado, devemos adicionar IP estático a ele, vamos abrir o

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

XACML. extensible Access Control Markup Language

Construindo uma aplicação Web completa utilizando ASP.Net 2.0, Visual Studio 2005 e IIS 7.0 ( Parte 1)

Apresentação do VB.NET

Aspectos técnicos do desenvolvimento baseado em componentes

Guia do Programador Joel Saade

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Construindo portais com Plone. Módulo Workflow

JPA: Persistência padronizada em Java

Programação Orientada a Objetos

Prototype, um Design Patterns de Criação

Active Directory What s New. Windows Server Active Directory. Nuno Picado nuno.picado@rumos.pt NOVAS TECNOLOGIAS MICROSOFT

INSTALANDO E CONFIGURANDO O MY SQL

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Exemplo de Aplicaça o Facebook

Tópicos. Visão Geral Roadmap Versões Arquitetura Estruturas Básicas Web Parts Segurança

MANUAL DO UTILIZADOR DE REDE

ESET Remote Administrator ESET EndPoint Solutions ESET Remote Adminstrator Workgroup Script de Logon

Instalação e Configuração RPM Remote Print Manager para Windows 2000

ESET Secure Authentication. Autenticação ultra-segura para proteger o acesso à rede empresarial

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

19/05/2009. Módulo 1

Web Services e SOAP. Alexandre Zua CaldeiraTecnologias de Middleware 2006/ Faculdade de Ciências da Universidade de Lisboa

Conceitos de relação de confiança

J550 Segurança e Controle de erros

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 06. Prof. André Lucio

Noções de. Microsoft SQL Server. Microsoft SQL Server

MINICURSO WINDOWS SERVER 2008 UTILIZANDO O VMWARE PLAYER

ArcGIS for INSPIRE. ArcGIS. ArcGIS for INSPIRE. Discovery. Download. View

Programando em C# Orientado a Objetos. By: Maromo

Programação para Dispositivos Móveis Aula 1. Prof. William Yamamoto

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Web Services. Autor: Rômulo Rosa Furtado

Sistemas Multimédia. Arquitectura Protocolar Simples Modelo OSI TCP/IP. Francisco Maia Redes e Comunicações

MCITP: ENTERPRISE ADMINISTRATOR

Introdução ao Active Directory AD

Solutions for Information Technologies. BIS-Navegador. IBM DB2 UDB v8.x

Protótipo de ferramenta para monitoração de computadores utilizando o padrão de gerência WMI da Microsoft e a plataforma de desenvolvimento.

Desenvolvimento Web TCC Turma A-1

R/3 e SAP WAS. 8/28/2003 José Alves Marques. R/3 e SAP WAS(2)

SOA Introdução. SOA Visão Departamental das Organizações

Principais características

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Capítulo 9 Utilizando Code Access Security CAS 1

Sistemas Distribuídos

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

NetBeans. Conhecendo um pouco da IDE

DSS. Desenvolvimento Software Seguro. Weber Ress

Introdução a Java. Hélder Nunes

3 Serviços na Web (Web services)

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS

Instalando o SharePoint 2010 no Windows 7

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Migrando seu site para o Azure utilizando

(Monitor de referências) olicy nforcement oint. olicy ecision oint

Acesso a Bancos de Dados em Java (JDBC)

LEIA ISTO PRIMEIRO. IBM Tivoli Configuration Manager, Versão 4.2.1

CURSO PRÁTICO. Módulo 2 Pré-requisitos. Application Virtualization 5.0. Nível: Básico / Intermediário

ArcGIS for Server: Administração e Configuração do Site (10.2)

Solutions for Information Technologies. BIS-Navegador. Oracle

enbsp - NBioBSP NITGEN Biometric Service Provider SDK Manual do Desenvolvedor SDK version 4.xx

Sumário. Introdução. Implantação, gerenciamento e manutenção de servidores 1. Certificações da Microsoft... xiv. Agradecimentos...

Os clientes devem fornecer todos os materiais de operação necessários quando solicitados pelo engenheiro.

Transcrição:

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

Agenda A Plataforma.NET A segurança na.net Sumário Console.WriteLine( Duracao: {0}m, 40 + ( -15 + new Random(). Next(15)) )

Agenda A plataforma.net A segurança na.net Sumário

O que é o.net Ponto de vista da industria Software that connects people, information and devices

O que é o.net Ponto de vista académico UM MODELO DE COMPONENTES PARA A INTERNET Multi-linguagem, com uma abordagem fiável e segura para construir aplicações distibuídas na Internet Disponibiliza a capacidade de integrar multiplos dispositivos Ambiente de desenvolvimento multilinguagem que se mantêm fácil de usar e programar Contruído com base nos protocolos e ferramentas (XML, WSDL, SOAP, HTTP)

Por dentro do.net Framework VB C++ C# J# Python Web Services User Interface Data and XML Base Framework Common Language Runtime (CLR) Operating System Common Language Runtime Suporte Suportemúltiplas linguagens linguagens Sistema Sistemaúnico de de tipos tipos Deployment Deployment simplificado simplificado Code Code Access Access Security Security Secure, integrated class libraries Unifica Unificaos osmodelos modelosde de programação programaçãoentre entrelinguagens Permite Permitea integração integraçãoentre entre linguagens linguagens Preparado Preparadopara paraser ser extensivel extensivel Desenhado Desenhadopara paraferramentas

Common Language Runtime Desenvolvimento 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); public static void Main(String[] args ) w.writeline(usr); { String usr; FileStream f; StreamWriter w; w.close(); try { } catch (Exception usr=environment.getenvironmentvariable("username"); e){ Console.WriteLine("Exception:"+e.ToString()); 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ódigo Compilador C# J# VB Cobol Assembly CIL Metadata Resources

Common Language Runtime Desenvolvimento 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); public static void Main(String[] args ) w.writeline(usr); { String usr; FileStream f; StreamWriter w; w.close(); try { } catch (Exception usr=environment.getenvironmentvariable("username"); e){ Console.WriteLine("Exception:"+e.ToString()); f=new FileStream( C:\\test.txt",FileMode.Create); } w=new StreamWriter(f); Assembly } w.writeline(usr); w.close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Código Compilador Install Assembly C# J# VB Cobol Setup CIL Copy Metadata Browser Resources Distribuição Global Assembly Cache (GAC) Application Directory Download Cache

Common Language Runtime Distribuição Desenvolvimento Install Assembly Setup Copy Browser Execução IL to Native Compiler Native.exe + GC table Class Loader Code Manager Security Assembly Global on Target Policy Assembly Machine Cache (GAC) <?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 permissio ns and forms the root of the code group tree."> <IMembershipCondition clas s="allmembershipcondition" version="1"/> <CodeGroup class="unioncodegroup" version="1" PermissionSetName="FullTrust" Application Directory Assembly Loader Download Cache Garbage Collection Exception Manager Thread Support Debug Engine COM Interop

One Runtime For Many Languages CLR é um open standard ECMA, ISO, W3 Consortium Qualquer linguagem pode usar os serviços da CLR Qualquer linguagem pode usar classes escritas em qq outra linguagem (consumir) Qualquer linguagem pode herdar de classes escritas em qq outra linguagem (herança)

The.NET Framework Namespaces System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Design ADO SQLTypes SQL XPath XSLT Runtime InteropServices Remoting Serialization Serialization Configuration SessionState Caching Security Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.WinForms Design ComponentModel

Agenda A plataforma.net A segurança na.net Sumário

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

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

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

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

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, Write=@ C:\temp ) ]

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

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

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 Tem permissão? MYCOMPONENT (LOCALMACHINE).... Stream filestream = FileStream.Open( cod_mb.xml cod_mb.xml );.... Chama.NET FRAMEWORK public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name) fp.demand().... }

Code Access Security stack walk Tem permissão? Tem permissão? NOTMYAPP (outra app).... mycomponent.readsetting(key);... Chama Excepção MYCOMPONENT (com privilégios).... Stream filestream = FileStream.Open( cod_mb.xml cod_mb.xml );.... Chama FRAMEWORK public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name) fp.demand().... }

Code Access Security Percorrer o stack Todos os componentes no call stack têm permissões associadas As permissões são armazenadas na stack frame de cada chamada Um pedido de acesso de um recurso resulta na verificação por parte do CLR de todas as frames no stack

Code Access Security Permission Sets É um grupo ou colecção de permissões Permite manipular um grupo de permissões com uma só chamada a uma função

Evidence Based Security Desenvolvimento 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); public static void Main(String[] args ) w.writeline(usr); { String usr; FileStream f; StreamWriter w; w.close(); try { } catch (Exception usr=environment.getenvironmentvariable("username"); e){ Console.WriteLine("Exception:"+e.ToString()); 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ódigo Compilador C# J# VB Cobol Assembly CIL Metadata Resources

Evidence Based Security Desenvolvimento 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); public static void Main(String[] args ) w.writeline(usr); { String usr; FileStream f; StreamWriter w; w.close(); try { } catch (Exception usr=environment.getenvironmentvariable("username"); e){ Console.WriteLine("Exception:"+e.ToString()); f=new FileStream( C:\\test.txt",FileMode.Create); } w=new StreamWriter(f); Assembly } w.writeline(usr); w.close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Código Compilador Install Assembly C# J# VB Cobol Setup CIL Copy Metadata Browser Resources Distribuição Global Assembly Cache (GAC) Application Directory Download Cache

Evidence Based Security Distribuição Desenvolvimento Install Assembly Setup Copy Browser Execução Compilador IL para Nativo Native.exe + GC table Class Loader Code Manager Security Assembly Global na máquina Policy Assembly destino Cache (GAC) <?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 permissio ns and forms the root of the code group tree."> <IMembershipCondition clas s="allmembershipcondition" version="1"/> <CodeGroup class="unioncodegroup" version="1" PermissionSetName="FullTrust" Directoria aplicação 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 permissio ns and forms the root of the code group tree."> <IMembershipCondition clas s="allmembershipcondition" version="1"/> <CodeGroup class="unioncodegroup" version="1" PermissionSetName="FullTrust" Assembly Loader Download Cache Garbage Collection Exception Manager Thread Support Debug Engine COM Interop

Evidence Based Security Code Groups (determinam a policy) Um Code Group tem 2 atributos Condição Membership Um PermissionSet associado As provas da Assembly são comparadas com cada condíçã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

Policy Levels A tree of code groups is a policy level The permissions granted by a policy level for a given set of evidence are determined by evaluating the root code group of the tree All Code P Publisher: Microsoft P Zone: Internet P Zone: Local Intranet P Site: XYZ.COM P Name: MS.Office P Name: MS.Money P Publisher: Corp. Admin P Site: localweb P

Sample Policy Level Example: MS.Money on Local Intranet Member of four groups (highlighted) Granted permissions = P1 P2 P7 P4 All Code P1 Publisher: Microsoft P2 Zone: Internet P3 Zone: Local Intranet P4 Site: XYZ.COM P5 Name: MS.Office P6 Name: MS.Money P7 Publisher: Corp. Admin P8 Site: localweb P9

Hierarchical Policy Levels CLR supports multiple, ordered policy levels for administration Enterprise: common policy throughout an org. Machine: policy for all users of given machine User: policy specific to logged in user Enterprise policy Machine1 policy Machine2 policy User A User B User C User D Effective policy is the intersection of all levels

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 Só a intersecção é que é concedida enterprise enterprise machine machine user user appdomain appdomain

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.

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

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, NTLM, Kerberos, Microsoft Passport, Forms/Custom, Certificados Cliente

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

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

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

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

Agenda A plataforma.net Segurança na.net Sumário

.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

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!

Para mais informação Site MSDN Portugal http://www.microsoft.com/portugal/msdn Site MSDN Internacional http://msdn.microsoft.com/ http://msdn.microsoft.com/net/ Newsgroups news://msnews.microsoft.com/microsoft.public.pt. dotnet.net Security http://msdn.microsoft.com/net/security Livro.NET Framework Security, ISBN:0-672-32184-x

Almoçar!!!