É possível proteger chamadas de beans gerenciados (MBean) em um ambiente distribuído.
Para obter informações adicionais sobre os MBeans que estão disponíveis, consulte Administrando com Beans Gerenciados (MBeans).
O JMX fornece métodos para os servidores conectores para autenticar os clientes remotos. Para o conector RMI, a autenticação é concluída ao fornecer um objeto que implementa a interface JMXAuthenticator quando o servidor conector é criado. Assim, o eXtreme Scale implementa essa interface JMXAuthenticator para usar o plug-in do Autenticador do ObjectGrid para autenticar os clientes remotos. Consulte Tutorial de Segurança do Java SE - Etapa 2 para obter detalhes sobre como o eXtreme Scale autentica um cliente.
O cliente JMX segue as APIs do JMX para fornecer credenciais para conectar-se com o servidor conector. . A estrutura JMX passa a credencial para o servidor do conector e, em seguida, chama a implementação do JMXAuthenticator para autenticação. Conforme descrito anteriormente, a implementação do JMXAuthenticator então delega a autenticação para a implementação do Autenticador do ObjectGrid.
Revise o exemplo a seguir que descreve como conectar-se a um servidor conector com uma credencial:
javax.management.remote.JMXServiceURL jmxUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/objectgrid/MBeanServer");
environment.put(JMXConnector.CREDENTIALS, new UserPasswordCredential("admin", "xxxxxx"));
// Create the JMXCconnectorServer
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(jmxUrl, null);
// Connect and invoke an operation on the remote MBeanServer
cntor.connect(environment);
No exemplo anterior, um objeto UserPasswordCredential é fornecido com o ID do usuário configurado para admin e a senha configurada para xxxxx. Este objeto UserPasswordCredential é configurado no mapa do ambiente, que é usado no método JMXConnector.connect(Map). Este objeto UserPasswordCredential é então passado para o servidor pela estrutura JMX e finalmente passado para a estrutura de autenticação do ObjectGrid para a autenticação.
O modelo de programação do cliente segue estritamente a especificação JMX.
Um servidor MBean JMX pode ter acesso a informações sensitivas e pode executar operações sensitivas. O JMX fornece o controle de acesso necessário que identifica quais clientes podem acessar tais informações e quem pode executar tais operações. o controle de acesso é integrado no modelo de segurança Java padrão por meio da definição de permissões que controlam o acesso ao servidor MBean e às suas operações.
Para controle de acesso de operação ou autorização do JMX, oeXtreme Scale conta com o suporte de JAAS fornecido pela implementação JMX. Em qualquer ponto na execução de um programa, há um conjunto atual de permissões que um encadeamento de execuções retém. Quando um destes encadeamentos chama uma operação de especificação JMX, estas permissões são conhecidas como permissões retidas. Quando uma operação JMX é executada, uma verificação de segurança é feita para verificar se a permissão necessária é incluída pela permissão contida.
A definição de política do MBean segue o formato da política Java. Por exemplo, a política a seguir concede a todos os assinantes e a todas as bases de código o direito de recuperar o endereço JMX do servidor para o PlacementServiceMBean. Entretanto, os assinantes e as bases de código ficam restritos ao domínio com.ibm.websphere.objectgrid.
grant {
permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.
PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
O exemplo de política a seguir pode ser utilizado para concluir a autorização baseada na identidade do cliente remoto. A política concede a mesma permissão MBean, conforme mostrado no exemplo anterior, exceto apenas para usuários com o nome X500Principal como: CN=Administrator,OU=software,O=IBM,L=Rochester,ST=MN,C=US.
grant principal javax.security.auth.x500.X500Principal "CN=Administrator,OU=software,O=IBM,
L=Rochester,ST=MN,C=US" {permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
As políticas do Java são verificadas somente se o gerenciador de segurança estiver ativado. Inicie os servidores de catálogos e servidores de contêineres com o argumento JVM -Djava.security.manager para forçar o controle de acesso da operação MBean.
O transporte entre o cliente e o servidor JMX pode ser assegurado com o TLS/SSL. Se o transportType do servidor de catálogos ou servidor de contêiner for configurado como SSL_Required ou SSL_Supported, você deverá usar o SSL para conectar-se ao servidor JMX.
A configuração da porta de serviço JMX é requerida quando você deseja exibir informações do servidor de contêiner a partir do servidor de catálogos. Por exemplo, a porta é necessária quando estiver usando o comando xscmd -c showMapSizes.