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