Configurando o Arquivo was.policy para Segurança Java 2

Você deve atualizar o arquivo was.policy se o aplicativo tiver recursos específicos para acessar.

Antes de Iniciar

A segurança Java™ 2 utiliza diversos arquivos de políticas para determinar a permissão concedida para cada programa Java. O arquivo was.policy é um arquivo de políticas específico do aplicativo para aplicativos corporativos do WebSphere Application Server. Este arquivo está integrado ao arquivo .EAR (Enterprise Archive) META-INF/was.policy. O arquivo was.policy está localizado em:
profile_root/config/cells/cell_name/applications/
ear_file_name/deployments/application_name/META-INF/was.policy

Consulte os arquivos de política de segurança Java 2 para obter a lista de arquivos de políticas disponíveis que são suportados pelo WebSphere Application Server Versão 6.1.

A união das permissões contidas nos seguintes arquivos é aplicada no aplicativo corporativo do WebSphere Application Server:
  • Qualquer arquivo de políticas que é especificado nas propriedades policy.url.* no arquivo java.security.
  • Os arquivos app.policy, que são gerenciados pelos serviços de configuração e replicação de arquivos.
  • O arquivo server.policy.
  • O arquivo java.policy.
  • O arquivo was.policy do aplicativo.
  • A especificação de permissão do arquivo ra.xml.
  • A biblioteca compartilhada, que é o arquivo library.policy.

As mudanças feitas nesses arquivos são replicadas a outros nós na célula.

Tabela 1. Símbolos Definidos para Associar Listas de Permissões a um Tipo Específico de Recurso. Vários símbolos reservados do produto são definidos para associar as listas de permissões a um tipo de recurso específico.
Símbolo Definição
file:${application} As permissões se aplicam a todos os recursos utilizados no aplicativo.
file:${jars} As permissões aplicam-se a todos os arquivos JAR (Java archive) do utilitário no aplicativo
file:${ejbComponent} As permissões aplicam-se aos recursos do enterprise bean dentro do aplicativo
file:${webComponent} As permissões aplicam-se aos recursos da Web dentro do aplicativo
file:${connectorComponent} As permissões aplicam-se aos recursos do conector dentro do aplicativo
No WebSphere Application Server, os aplicativos que manipulam encadeamentos devem possuir as permissões de encadeamento apropriadas especificadas no arquivo was.policy ou app.policy. Sem as permissões de encadeamento especificadas, o aplicativo não poderá manipular os encadeamentos e o WebSphere Application Server criará uma exceção java.security.AccessControlException. Se você incluir as permissões no arquivo was.policy de um aplicativo específico, não precisará reiniciar o WebSphere Application Server. Um administrador deve incluir o seguinte código em um arquivo was.policy ou app.policy para que um aplicativo manipule os encadeamentos:
grant codeBase "file:${application}" {
  permission java.lang.RuntimePermission "stopThread";
  permission java.lang.RuntimePermission "modifyThread";
  permission java.lang.RuntimePermission "modifyThreadGroup";
};
Um administrador pode incluir as permissões de encadeamento no arquivo app.policy, mas a alteração de permissão exigirá reiniciar o WebSphere Application Server.
Importante: As palavras-chave Signed By e do proprietário do JAAS (Java Authentication and Authorization Service) não são suportadas no arquivo was.policy. A palavra-chave Signed By é suportada nos arquivos de política java.policy, server.policy e client.policy. A palavra-chave do proprietário do JAAS é suportada em um arquivo de políticas do JAAS quando é especificada pela propriedade de sistema java.security.auth.policy da Java Virtual Machine (JVM). É possível configurar de forma estática os arquivos de políticas de autorização no arquivo java.security.auth.policy com auth.policy.url.n=URL, em que URL é a localização da política de autorização.
Além desses blocos, é possível especificar o nome do módulo para definições granulares. Por exemplo:
grant codeBase "file:DefaultWebApplication.war" {
  permission java.security.SecurityPermission "printIdentity";
};

grant codeBase "file:IncCMP11.jar" {
  permission java.io.FilePermission 
      "${user.install.root}${/}bin${/}DefaultDB${/}-", 
      "read,write,delete";
};
Tabela 2. Símbolos Integrados para Especificar o Caminho e o Nome para a Permissão java.io.FilePermission. São fornecidos cinco símbolos incorporados para especificar o caminho e o nome para a permissão java.io.FilePermission. Esses símbolos permitem ativar as especificações das permissões flexíveis. O caminho do arquivo absoluto é fixo depois da instalação do aplicativo.
Símbolo Definição
${app.installed.path} O caminho onde o aplicativo está instalado
${was.module.path} O caminho em que o módulo está instalado
${current.cell.name} Nome da célula Current
${current.node.name} Nome do nó Current
${current.server.name} Nome do servidor Current

Sobre Esta Tarefa

Se as permissões padrão do aplicativo corporativo forem suficientes, nenhuma ação será requerida. As permissões padrão são a união das permissões que estão definidas no arquivo java.policy, server.policy e app.policy. Se um aplicativo tiver recursos específicos para acessar, atualize o arquivo was.policy. As duas primeiras etapas supõem que você esteja criando um novo arquivo de critério.
Dica: Os erros de sintaxe dos arquivos de critérios fazem com que o servidor de aplicativos falhe. Tome cuidado ao editar esses arquivos de políticas.

Procedimento

  1. Crie ou edite um novo arquivo was.policy usando PolicyTool. Para obter mais informações, consulte Usando PolicyTool para Editar Arquivos de Políticas para Segurança Java 2.
  2. Empacote o arquivo was.policy no arquivo EAR (Enterprise Archive).

    Para obter informações adicionais, consulte Incluindo o Arquivo was.policy em Aplicativos para Segurança Java 2.

    As instruções a seguir descrevem como importar um arquivo was.policy.
    1. Importe o arquivo EAR para uma ferramenta de montagem.
    2. Abra a exibição Navegador do Projeto.
    3. Expanda o arquivo EAR e clique em META-INF. É possível que você encontre um arquivo was.policy no diretório META-INF. Se desejar excluir o arquivo, clique com o botão direito no nome do arquivo e selecione Excluir.
    4. Na visualização Navegador do projeto, clique em Hierarquia J2EE.
    5. Importe o arquivo was.policy clicando com o botão direito do mouse no diretório Módulos no descritor de implementação e clicando em Importar > Importar > Sistema de arquivos.
    6. Clique em Avançar.
    7. Insira o nome do caminho ao arquivo was.policy no campo Do Diretório ou clique em Procurar para localizar o arquivo.
    8. Verifique se o diretório de caminhos listado no campo No Diretório lista o diretório META-INF correto.
    9. Clique em Finalizar.
    10. Para validar o arquivo EAR, clique com o botão direito no arquivo EAR, que contém o diretório Módulos e clique em Executar Validação.
    11. Para salvar o novo arquivo EAR, clique com o botão direito no arquivo EAR e clique em Exportar > Exportar arquivo EAR. Se o arquivo EAR revisado não for salvo, o arquivo EAR conterá o novo arquivo was.policy. No entanto, se o espaço de trabalho ficar corrompido, pode-se perder o arquivo EAR revisado.
    12. Para gerar o código de implementação, clique com o botão direito no arquivo EAR e clique em Gerar Código de Implementação.
  3. Atualize um aplicativo existente instalado, se já existir um. Modifique o arquivo was.policy com Policy Tool. Para obter mais informações, consulte Usando PolicyTool para Editar Arquivos de Políticas para Segurança Java 2. [z/OS]
    1. Extraia o arquivo de políticas. Digite o seguinte comando em um prompt de comandos:
      wsadmin> set obj [$AdminConfig extract profiles/profile_name/cells/cell_name
      /application/ear_file_name/deployments/application_name
      /META_INF/was.policy c:/temp/test/was.policy]

      Insira as três linhas anteriores como uma linha contínua. Elas são exibidas aqui apenas para ilustração.

    2. Edite o arquivo was.policy extraído com a Ferramenta de Política. Para obter mais informações, consulte Usando PolicyTool para Editar Arquivos de Políticas para Segurança Java 2.
    3. Verifique o arquivo de políticas. Insira o seguinte em um prompt de comandos:
      wsadmin> $AdminConfig checkin profiles/profile_name/cells/cell_name/application/
      ear_file_name/deployments/application_name/META_INF/was.policy 
      c:/temp/test/was.policy $obj

      Insira as três linhas anteriores como uma linha contínua. Elas são exibidas aqui apenas para ilustração.

Resultados

O arquivo was.policy é aplicado ao aplicativo depois do aplicativo ser iniciado novamente.

Exemplo

[IBM i][z/OS]
java.security.AccessControlException: acesso negado (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)
[z/OS][IBM i]Se um aplicativo precisar acessar um recurso específico que não está definido como padrão no arquivo java.policy, server.policy e app.policy, exclua o arquivo was.policy do aplicativo. O sintoma da permissão ausente é a exceção java.security.AccessControlException. A permissão ausente é listada nos dados de exceção:
Nota: Os exemplos a seguir são divididos em várias linhas apenas para ilustração. Na realidade, é possível digitar a permissão em uma linha.
[IBM i][z/OS]
java.security.AccessControlException: acesso negado (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)

Quando um programa Java receber esta exceção e a inclusão dessa permissão for justificada, inclua a seguinte permissão no arquivo was.policy:

[IBM i][z/OS]
grant codeBase "file:user_client_installed_location" { 
  permission java.io.FilePermission 
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};

Para determinar se deve incluir uma permissão, consulte a exceção de controle de acesso para a segurança Java 2.

O que Fazer Depois

Inicie novamente todos os aplicativos para que o arquivo app.policy atualizado tenha efeito.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waspolicyfile
Nome do arquivo: tsec_waspolicyfile.html