Upload
internet
View
115
Download
0
Tags:
Embed Size (px)
Citation preview
1
Segurança na .NETSegurança na .NETFrameworkFramework
Vitor SantosVitor Santos
.NET Group.NET Group
Microsoft CorporationMicrosoft 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)) )
3
AgendaAgenda
Web ServicesWeb Services e Smart Devicese Smart DevicesA Plataforma .NETA Plataforma .NETSegurança na .NETSegurança na .NETSumárioSumário
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
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
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
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
8
DemoDemo
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
10
DemoDemoVídeo Web ServicesVídeo Web Services
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
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, ……
13
A plataforma .NETA plataforma .NET
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.
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
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
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
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
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
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"
25
DemoDemoCommon Language RuntimeCommon Language Runtime
26
.NET Compact Framework.NET Compact Framework
.NET Framework para dispositivos .NET Framework para dispositivos embebidosembebidos
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
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
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
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
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
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
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
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
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
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"
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
38
Atribuição de PermissõesAtribuição de Permissões
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
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
41
Built-in Code Groups Built-in Code Groups
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”) ]
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
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
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
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() . . . .. . . .}}
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
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
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
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
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
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
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
54
AgendaAgenda
Web Services e Smart DevicesWeb Services e Smart DevicesA plataforma .NETA plataforma .NETSegurança na .NETSegurança na .NETSumárioSumário
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
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 !
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
58
Tomar café !!! Tomar café !!!