Programação Distribuída em Java - IME-USP

Propaganda
Programação Distribuída em
Java
Aula 06
Na aula passada vimos:
• O protocolo UDP
– Características principais
– Velocidade x confiabilidade
• A classe DatagramPacket
– Função e construtores
– Conversão de dados para array de bytes
2
Na aula passada vimos:
• A classe DatagramSocket
– Particularidades, diferenças e semelhanças com Sockets
– Conceito de “conexão” em UDP
• MultiCastSocket
– Comparação com boradcast e unicast
– Conceito de multicast group e endereço classe D
3
O que você deve ter fixado:
• Diferenças básicas entre TCP e UDP
• Semelhanças entre soquetes de
datagrama para clientes e servidores
• Conversão da informação para bytes
• Funcionalidades dos MulticastSockets
4
Na aula de hoje veremos:
• Aspectos gerais de segurança em Java
• policytool
• Instalação de políticas de segurança
• A classe SecurityManager
5
Segurança em Java
• Sandbox model Java 1.0
– Código local tem acesso total
– Applets não acessam o sistema local
• Sandbox model Java 1.1
– Applet assinado é tratado como código local
• Sandbox model Java 1.2
– Todo código pode ser sujeito a uma política de segurança
6
Segurança em Java
• Política de segurança
– Conjunto de permissões disponíveis para um ou mais recursos
• Por padrão o gerenciador de segurança
não se aplica ao código local
• Ferramentas:
– keytool
– jarsigner
– policytool
7
O policytool
• Usado para criar arquivos de política de
segurança
• Chamado pela linha de comando
• Interface amigável
rodar policytool
8
• policytool passo a passo:
– Diga na linha de comando algo como:
c:\j2sdk1.4.2_03\bin\policytool
– Clique em “Add Policy Entry”
– No campo Code Base coloque o url de onde ficará o código
fonte; a permissão é concedida para o código desse lugar
– Clique em “Add Permisson”
– Escolha o tipo de permissão, o recurso que receberá essa
permissão e as ações permitidas e clique “Ok”
– Caso queira inserir outra permissão clique “Add Permission”,
senão de “Ok”e salve o arquivo como “algo.policy” na pasta de
sua preferência
9
Política de segurança
• É apenas um arquivo de texto com
codificação ASCII
• Poderia ser editado com qualquer editor
de texto
USP.java e java.policy
10
Política de segurança
• Uma política poderia ser implementada
utilizando-se uma forma constante
• Altração do arquivo de propriedades de
segurança
Microsoft.java e java.properties
11
SecurityManager
• Implementa e impõem uma política de
segurança para uma aplicação
• Determina se operações potencialmente
perigosas podem ser executadas
• Cada aplicação Java pode ter seu próprio
gerenciador de segurança
TinyHttpd.java
12
SecurityManager
• Não está implementado por default exceto
em browsers e no appletviewer
• Pode proteger com senha a leitura e/ou a
escrita ao sistema de arquivos
13
Escrevendo um SecurityManager
• Deve-se subclassificar SecurityManager e
sobrescrever seus métodos de verificação
– Alguns ou todos se for necessário
• Toda verificação, se falhar, lançará uma
SecurityException
PasswordSecurityManager.java
14
Verificações possíveis
Operação sobre:
Aprovação por:
checkAccept(String host, int port)
checkConnect(String host, int port)
socket
checkConnect(String host, int port, Object executionContext)
checkListen(int port)
threads
checkAccess(Thread thread)
checkAccess(ThreadGroup threadgroup)
class loader
checkCreateClassLoader()
checkDelete(String filename)
checkLink(String library)
checkRead(FileDescriptor filedescriptor)
file system
checkRead(String filename)
checkRead(String filename, Object executionContext)
checkWrite(FileDescriptor filedescriptor)
checkWrite(String filename)
15
Verificações possíveis
system commands
interpreter
checkExec(String command)
checkExit(int status)
checkPackageAccess(String packageName)
package
checkPackageDefinition(String packageName)
checkPropertiesAccess()
properties
checkPropertyAccess(String key)
checkPropertyAccess(String key, String def)
networking
windows
checkSetFactory()
checkTopLevelWindow(Object window)
16
Instalando um SecurityManager
• System.setSecurityManager(arg)
Determina que arg seja o SecurityManager atual
arg será o gerenciador de segurança durante a execução da
aplicação atual
• O gerenciador de segurança só pode ser
determinado uma vez
Chamar esse método novamente resultará em uma
SecurityException
SecurityManagerTest.java
17
O que você precisa saber:
• O que são políticas de segurança
• Editar os arq java.policy e java.security
• Usar o policytool
• Subclassificar a classe SecurityManager
18
Na próxima aula veremos:
• Introdução às Java Server Pages
19
Download