Ativando um Gerenciador de Segurança Java

Por padrão, aplicativos Java™ não possuem restrições de segurança em atividades solicitadas de uma API Java. Para usar a segurança Java para evitar que um aplicativo Java execute ações potencialmente não-seguras, você pode ativar um gerenciador de segurança para a JVM no qual o aplicativo é executado.

Sobre Esta Tarefa

O gerenciador de segurança impinge uma política de segurança, que é um conjunto de permissões (privilégios de acesso ao sistema) que são designadas a origens de código. Um arquivo de política padrão é fornecido com a plataforma Java. No entanto, para permitir que os aplicativos Java sejam executados com sucesso no CICS quando a segurança Java estiver ativada, será necessário especificar um arquivo de política adicional que fornece ao CICS as permissões necessárias para executar o aplicativo.

É preciso especificar esse arquivo de políticas adicional para cada tipo de JVM que tenha um gerenciador de segurança ativado. O CICS fornece alguns exemplos que podem ser usados para criar suas próprias políticas.

Notas: A ativação do gerenciador de segurança Java não é suportada em um servidor JVM Liberty.
  • O exemplo de agente de segurança OSGi cria um pacote configurável de middleware OSGi chamado com.ibm.cics.server.examples.security no seu projeto que contém um perfil de segurança. Esse perfil se aplica a todos os pacotes configuráveis na estrutura na qual ele é instalado.
  • O arquivo example.permissions contém permissões que são específicas para executar aplicativos em um servidor JVM, incluindo uma verificação para garantir que os aplicativos não usem o método System.exit().
  • O CICS deve ter acesso de leitura e execução ao diretório no zFS onde o pacote configurável OSGi é implementado.

Para aplicativos que são executados na estrutura OSGi de um servidor JVM:

Procedimento

  1. Crie um projeto de plug-in no CICS Explorer SDK e selecione o exemplo de agente de segurança OSGi fornecido.
  2. No projeto, selecione o arquivo example.permissions para editar as permissões para sua política de segurança.
    1. Confirme que os diretórios de instalação CICS zFS e DB2 tenham sido especificados corretamente.
    2. Inclua outras permissões, conforme necessário.
  3. Implemente o pacote configurável OSGi em um diretório adequado no zFS como /u/bundles.
  4. Edite o perfil de JVM para o servidor JVM para incluir o pacote configurável OSGi na opção OSGI_BUNDLES antes de qualquer outro pacote configurável:
    • OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
  5. Inclua a seguinte propriedade Java no perfil JVM para ativar a segurança.
    • -Djava.security.policy=all.policy
  6. Inclua a seguinte variável de ambiente Java no perfil da JVM para habilitar a segurança na estrutura OSGi:
    • org.osgi.framework.security=osgi
  7. Para permitir que a estrutura OSGi seja iniciada com a segurança Java 2, inclua a seguinte política:
    • grant { permission java.security.AllPermission; };
  8. Salve as alterações e ative o recurso JVMSERVER para instalar o pacote configurável de middleware no servidor JVM.
  9. Opcional: Ative a segurança Java 2.
    1. Para ativar um mecanismo de política de segurança Java 2, inclua-o no perfil JVM apropriado. Também será necessário editar sua política de segurança Java 2 para conceder as permissões adequadas.
    2. Para usar JDBC ou SQLJ a partir de um aplicativo Java com um mecanismo de política de segurança Java 2 ativo, use o IBM® Data Server Driver para JDBC e SQLJ.
    3. Para ativar um mecanismo de política de segurança Java 2, edite o perfil da JVM. descreve como configurar uma política de segurança Java 2.
    4. Edite a política de segurança Java 2 para conceder permissões ao driver JDBC, incluindo as linhas mostradas no Exemplo 1. No lugar de db2xxx, especifique um diretório abaixo onde todas as suas bibliotecas do DB2 estão localizadas. As permissões são aplicadas a todos os diretórios e arquivos abaixo deste nível. Isto permite que você use JDBC e SQLJ.
    5. Edite a política de segurança Java 2 para conceder permissões de leitura, incluindo as linhas mostradas no Exemplo 2. caso não inclua a permissão de leitura, a execução de um programa Java produzirá a exceção AccessControlExceptions e outros resultados imprevisíveis. É possível usar JDBC e SQLJ com uma política de segurança Java 2.
    Exemplo 1:
    grant codeBase "file:/usr/lpp/db2xxx/-" {
      permission java.security.AllPermission;
    };   
    Exemplo 2:
    grant {
    
    // permite que qualquer pessoa leia as propriedades
    permission java.util.PropertyPermission "*", "read";
    
    };

Resultados

Quando o aplicativo Java é chamado, a JVM determina o código fonte da classe e consulta a política de segurança antes de conceder as permissões apropriadas à classe.