Capítulo 14. Gerenciador de Segurança do Java

Gerenciador de Segurança do Java
O Gerenciador de Segurança do Java é uma classe que gerencia o limite externo da área restrita da Máquina Virtual do Java (JVM), controlando como a execução do código com o JVM pode interagir com os recursos fora do JVM. Quando o Gerenciador de Segurança do Java é ativado, o Java API checa com o gerenciador de segurança pela aprovação antes de executar uma porção de operações potencialmente perigosas.
O Gerenciador de Segurança usa uma política de segurança para determinar se é que a ação gerada será permitida ou negada.
Política de Segurança
Um conjunto de permissões definidas para classes diferentes de código. O Gerenciador de Segurança compara ações solicitadas por aplicativos em relação à política de segurança. Caso uma ação seja permitida pela política, o Gerenciador de Segurança permitirá que a ação seja efetuada. Caso a ação não seja permitida pela política, o Gerenciador de Segurança irá negar aquela ação. A política de segurança pode definir permissões baseadas na localização do código ou na assinatura do código.
O Gerenciador de Segurança e a política de segurança são configurados usando as opções da Máquina Virtual java.security.manager e java.security.policy.

Opções relacionadas ao Gerenciador de Segurança

java.security.manager
Usa um gerenciador de segurança, opcionalmente especificando qual gerenciador de segurança a ser usado. Caso nenhum argumento seja fornecido com esta opção, o gerenciador de segurança JDK padrão, java.lang.SecurityManager, será usado. Forneça o classname inteiramente qualificado de uma subclasse do java.lang.SecurityManager com esta opção, caso deseje usar outra implementação de segurança.
java.security.policy
Especifica um arquivo de política para argumentar ou substituir a política de segurança para a MV. Esta opção possui duas formas:
java.security.policy=policyFileURL
O arquivo de política referenciado policyFileURL irá argumentar a política de segurança padrão configurada pela MV.
java.security.policy==policyFileURL
O arquivo de política referenciado pelo policyFileURL irá substiruir a política de MV.
O valor policyFileURL pode ser um URL ou um caminho de arquivo.
A Plataforma do JBoss Enterprise não ativa o Gerenciador de Segurança por padrão. Use o Gerenciador de Segurança para configurar a Plataforma, conforme descrito na Seção 14.1, “Uso do Gerenciador de Segurança” .

14.1. Uso do Gerenciador de Segurança

A Plataforma do Aplicativo JBoss Enterprise pode usar o Gerenciador de Segurança ou um gerenciador de segurança personalizado. Por favor refira-se às Opções relacionadas ao Gerenciador de Segurança para maiores informações sonre o Gerenciador de Segurança personalizado.
O arquivo da política de segurança deve ser especificado quando a Plataforma é configurada para uso de um gerenciador de segurança. O arquivo da política de segurança jboss-as/bin/server.policy.cert é adicionado como ponto inicial.
Por favor refira-se à Seção 14.3, “Gravação da Política de Segurança para a Plataforma do Aplicativo do JBoss Enterprise” para maiores informações sobre a gravação da política de segurança.
Arquivo de Configuração

O arquivo run.conf (Linux) ou run.conf.bat (Windows) é usado para configurar o Gerenciador de Segurança e a política de segurança. Este arquivo é encontrado no diretório jboss-as/bin.

Este arquivo é usado para configurar as opções à nível do sevidor e aplica-se a todos os perfis do servidor. A configuração do Gerenciador de Segurança e política de segurança envolve a configuração específica do perfil. Você pode eleger uma cópia do run.conf global ou arquivo run.conf.bat a partir do jboss-as/bin/ para o perfil do servidor (por exemplo: jboss-as/server/production/run.conf) e realizar as alterações da configuração. O arquivo de configuração no perfil do servidor possui precedência sobre o arquivo run.conf / run.conf.bat global quando o perfil do servidor é iniciado.

Procedimento 14.1. Ativação do Gerenciador de Segurança

Este procedimento configura a Plataforma do Aplicativo JBoss Enterprise para inicializar o Gerenciador de Segurança do Java ativado.
As ações de edição do arquivo neste procedimento refere-se ao arquivo run.conf (Linux) ou run.conf.bat (Windows) no diretório do perfil do servidor, caso existir algum, ou no jboss-as/bin. Refira-se ao Arquivo de Configuração para maiores detalhes sobre a localização deste arquivo.
  1. Especificação do diretório da página principal do JBoss.

    Edite o arquivo run.conf (Linux) ou run.conf.bat (Windows). Adicione a opção jboss.home.dir, especificando o caminho ao diretório jboss-as de sua instalação.
    Linux

    JAVA_OPTS="$JAVA_OPTS -Djboss.home.dir=/path/to/jboss-eap-5.1/jboss-as"

    Windows

    JAVA_OPTS="%JAVA_OPTS% -Djboss.home.dir=c:\path\jboss-eap-5.1\jboss-as"

  2. Especificação do diretório de página principal

    Adicione a opção jboss.server.home.dir, especificando o caminho para seu perfil de servidor.
    Linux

    JAVA_OPTS="$JAVA_OPTS -Djboss.server.home.dir=path/to/jboss-eap-5.1/jboss-as/server/production"

    Windows

    JAVA_OPTS="%JAVA_OPTS% -Djboss.server.home.dir=c:\path\to\jboss-eap-5.1\jboss-as\server\production"

  3. Especificação do Manuseador do Protocolo

    Adicione a opção java.protocol.handler.pkgs, especificando o manuseador stub do JBoss.
    Linux

    JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"

    Windows

    JAVA_OPTS="%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"

  4. Especificando a política de segurança para uso

    Adicione a variável $POLICY, especificando a política de segurança em uso. Adicione a definição da variável antes da linha que ativa o Gerenciador de Segurança.

    Exemplo 14.1. Use a política de segurança incluída na Plataforma

    POLICY="server.policy.cert"
  5. Ativação do Gerenciador de Segurança

    Descomente a linha seguinte pela remoção do # inicial:
    Linux

    #JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY"

    Windows

    #JAVA_OPTS="%JAVA_OPTS% -Djava.security.manager -Djava.security.policy=%POLICY%"

    Resultado:

    A Plataforma do Aplicativo do JBoss Enterprise está configurada para iniciar com o Gerenciador de Segurança ativado.

  6. Opcional: Importação da chave de assinatura do JBoss da Red Hat

    A política de segurança incluída concede permissões ao código assinado do JBoss. Você deverá importar a chave de assinatura do JBoss para o armazenamento da chave cacerts, caso você use a política incluída.
    O seguinte comando assume que o JAVA_HOME da variável do ambiente seja configurado à localização do JDK suportada pela Plataforma do Aplicativo JBoss Enterprise 5. Você deve configurar o JAVA_HOME quando instalar a Plataforma do Aplicativo Enterprise 5 pela primeira vez. Refira-se ao Installation Guide para maiores informações.

    Nota

    Você pode usar o comando alternatives para selecionar a partir dos JDKs instalados em seu sistema Linux, com o objetivo de garantir de que o JVM correto está instalado. Refira-se ao Apêndice A, Configuração do JDK padrão com a Utilidade /usr/sbin/alternatives para maiores informações.
    Execute o seguinte comando num terminal:
    Linux

    [~]$ sudo $JBOSS_HOME/bin/keytool -import -alias jboss -file JBossPublicKey.RSA \
    -keystore $JAVA_HOME/lib/security/cacerts

    Windows

    C:> $JBOSS_HOME\bin\keytool -import -alias jboss -file JBossPublicKey.RSA -keystore $JAVA_HOME\lib\security\cacerts

    Os comandos acima devem ser inseridos em uma única linha num terminal, embora separados em linhas diferentes neste terminal.

    Nota

    A senha padrão para o armazenamento da chave cacerts é changeit.
    Resultado:

    A chave usada para a assinatura do código da Plataforma do Aplicativo JBoss Enterprise está instalada.