Incluindo o Arquivo was.policy em Aplicativos para Segurança Java 2

Um aplicativo pode precisar de um arquivo was.policy se ele acessar recursos que requerem mais permissões do que as concedidas no arquivo app.policy padrão.

Sobre Esta Tarefa

Quando a segurança do Java™ 2 estiver ativada para um WebSphere Application Server, todos os aplicativos executados no WebSphere Application Server serão submetidos à verificação de segurança antes de acessar os recursos do sistema. Um aplicativo pode precisar de um arquivo was.policy se ele acessar recursos que requerem mais permissões do que as concedidas no arquivo app.policy padrão. Por padrão, a segurança do produto lê um arquivo app.policy localizado em cada nó e concede as permissões do arquivo app.policy a todos os aplicativos. Inclua as permissões adicionais requeridas no arquivo was.policy. O arquivo was.policy é requerido somente se um aplicativo precisar de permissões adicionais.

O arquivo de critérios padrão para todos os aplicativos é especificado no arquivo app.policy. Esse arquivo é fornecido pela segurança do produto, é comum a todos os aplicativos e não pode ser alterado. Inclua quaisquer novas permissões requeridas para um aplicativo no arquivo was.policy.

O arquivo app.policy fornecido pelo WebSphere Application Server reside em app_server_root/config/cells/profile/profile_name/config/cell_name/nodes/node_name/app.policy. O conteúdo do arquivo app.policy é apresentado no exemplo a seguir:

Atenção: Na amostra de código a seguir, as duas permissões necessárias pelo JavaMail estão divididas em duas linhas apenas para fins ilustrativos. Na realidade, você pode digitar a permissão em uma linha.
// As seguintes permissões aplicam-se a todos os componentes do aplicativo.

grant codeBase "file:${application}" {
   // As seguintes permissões são requeridas pelo JavaMail

  permission java.io.FilePermission "
        ${was.install.root}${/}lib${/}activation-impl.jar",
"read";

  permission java.io.FilePermission "
        ${was.install.root}${/}lib${/}mail-impl.jar","read";

  };
   // As permissões a seguir aplicam-se a todos os arquivos .jar de utilitários (diferentes 
   //  dos arquivos JAR de beans corporativos) no aplicativo.
grant codeBase "file:${jars}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// As seguintes permissões aplicam-se aos recursos do conector no aplicativo
grant codeBase "file:${connectorComponent}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// As permissões a seguir aplicam-se a todos os módulos da web (arquivos .war) 
// dentro do aplicativo.
grant codeBase "file:${webComponent}" {
  permission java.io.FilePermission "${was.module.path}${/}-", "read, write";  
       //  em que "was.module.path" é o caminho em que o módulo da web está 
       //  instalado. Consulte Conceitos do Política Dinâmica para obter outros símbolos.
  permission java.lang.RuntimePermission "loadLibrary.*";
  permission java.lang.RuntimePermission "queuePrintJob";
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// As seguintes permissões aplicam-se a todos os módulos EJB no aplicativo.
grant codeBase "file:${ejbComponent}" {
 permission java.lang.RuntimePermission "queuePrintJob";
 permission java.net.SocketPermission "*", "connect";
 permission java.util.PropertyPermission "*", "read";
};

Se permissões adicionais forem requeridas para um aplicativo ou para um ou mais módulos de um aplicativo, utilize o arquivo was.policy para o aplicativo. Por exemplo, utilize codeBase de ${application} e adicione as permissões requeridas para conceder permissões adicionais a todo o aplicativo. Da mesma forma, use codeBase do ${webComponent} e do ${ejbComponent} para conceder permissões adicionais para todos os módulo da Web e para todos os módulos do enterprise bean no aplicativo. Você pode atribuir permissões adicionais a cada módulo (arquivo .war ou arquivo .jar), conforme mostrado no exemplo a seguir.

Este exemplo ilustra a inclusão de permissões extra para um aplicativo no arquivo was.policy:

Atenção: Na amostra de código a seguir, a permissão do módulo EJB foi dividida em duas linhas apenas para fins ilustrativos. Na realidade, você pode digitar a permissão em uma linha.
// grant additional permissions to a web module
grant codeBase " file:aWebModule.war" {
 permission java.security.SecurityPermission "printIdentity";
};

// conceder permissão adicional a um módulo EJB
grant codeBase "file:aEJBModule.jar"  {
    permission java.io.FilePermission "
       ${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete";   
    // em que, ${user.install.root} é a propriedade do sistema cujo valor está 
    // localizado no diretório app_server_root.
 };

Para utilizar um arquivo was.policy para seu aplicativo, execute as seguintes etapas:

Procedimento

  1. Crie um arquivo was.policy utilizando a ferramenta de política. Para obter informações adicionais sobre a utilização da ferramenta de política, consulte Usando PolicyTool para Editar Arquivos de Políticas para Segurança Java 2.
  2. Adicione as permissões requeridas ao arquivo was.policy, utilizando a ferramenta de critérios.
  3. Coloque o arquivo was.policy no arquivo EAR (enterprise archive) do aplicativo sob o diretório META-INF. Atualize o arquivo EAR do aplicativo com o novo arquivo was.policy criado, utilizando o comando jar.
  4. Verifique se o arquivo was.policy foi inserido e inicie uma ferramenta de montagem.
    [IBM i][z/OS]Nota: Uma ferramenta de montagem não está disponível. Utilize a ferramenta de montagem em outra plataforma, como Linux Intel ou Windows.
  5. Verifique se o arquivo was.policy no arquivo está sintaticamente correto. Em uma ferramenta de montagem, clique com o botão direito do mouse no módulo do aplicativo corporativo e clique em Executar Validação.

Resultados

Um arquivo EAR do aplicativo estará agora pronto para ser executado quando a segurança do Java 2 estiver ativada.

Exemplo

Essa etapa é necessária para que os aplicativos executem corretamente quando a segurança do Java 2 estiver ativada. Se o arquivo was.policy não for criado e não contiver as permissões requeridas, o aplicativo poderá não acessar os recursos do sistema.

O sintoma das permissões ausentes é a exceção java.security.AccessControlException. A permissão que está faltando é listada nos dados da exceção, por exemplo,

[IBM i][z/OS]
java.security.AccessControlException: acesso negado (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)
Quando um programa aplicativo recebe essa exceção e a adição dessa permissão é justificada, inclua a permissão no arquivo was.policy, por exemplo. [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";
};

As linhas de informações de permissão anteriores são divididas para a ilustração. Digite a permissão em uma linha.

O que Fazer Depois

Instalar o aplicativo.

Í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_waspolicy
Nome do arquivo: tsec_waspolicy.html