Tomcat servindo estáticos autenticados da rede através de links simbólicos

Tomcat-logo.svg

No projeto da MedCloud, um dos requisitos mais importantes é o de servir um volume grande de imagens médicas (se aproximando de 2 TB) de um storage na rede de forma autenticada, pois há fortes regulamentações quanto à privacidade e segurança dos exames. Na fase atual estamos usando para o storage um RAID de volumes EBS, mas já está previsto para as próximas releases a migração para o S3 com uso da API.

Como as imagens precisam ser autenticadas e autorizadas, não é possível serví-las através de um servidor web como o Apache, e também não seria possível serví-las diretamente do S3, pois não pode haver uma URL pública aberta para acesso às imagens. Para garantir a privacidade e segurança no acesso, a aplicação usa o serviço de autenticação e autorização Java, o JAAS. Através do JAAS, o diretório contendo as imagens fica protegido, exigindo credenciais válidas para o acesso a cada exame e laudo.

Nosso servidor front-end com o Tomcat é uma instância Linux, que monta o diretório de storage da rede da seguinte forma:

Neste comando especificamos que a montagem será feita em modo de leitura e escrita, fazemos a autenticação do usuário do storage (que no caso é Windows), especificamos o usuário e grupo dono do mount point e os caminhos de origem do compartilhamento e onde ele será montado. Para montar o diretório precisamos do Samba instalado.

Tendo montado o storage da rede, vamos disponibilizar as imagens dentro do Tomcat através de um link simbólico para o diretório montado: ln -s alvo_do_link nome_do_link. Porém, para que o Tomcat siga links simbólicos precisamos de uma configuração adicional, feita no arquivo $TOMCAT_HOME/conf/context.xml:

Os atributos override e allowLinking são necessários para que o Tomcat consiga seguir links simbólicos em sua estrutura de diretórios. Esta configuração NÃO FUNCIONOU em inúmeros testes que fizemos com servidores Tomcat no Windows, então recomendamos este setup apenas em ambientes com o Tomcat em Unix. Com estas configurações você conseguirá montar um storage de rede e usá-lo para leitura e escrita no Tomcat através de links simbólicos. Até a próxima! 🙂

21