Validações

Como parte do processo de exportação de extensões customizadas as seguintes validações são executadas pela ferramenta export em suas customizações para assegurar que estejam em conformidade com os padrões de implementação na nuvem.

Observação: Ao executar a ferramenta de exportação no devtoolkit_extensions.xml arquivo, as seguintes validações são realizadas. Em breve, se alguma dessas validações falhar, o alvo de validação falhará e a ferramenta exibirá uma mensagem de exceção detalhando o erro e onde a validação falhou pela primeira vez. A ferramenta criará o pacote de customização somente se todos os erros de validação forem corrigidos. Essas validações são aplicadas ao carregar personalizações no seu ambiente SaaS.
  • Validando propriedades customizadas
  • Conflitos de nomes de classes
  • Conflitos de nome de arquivo
  • Log4j 1.x uso (descontinuado)
Para testar se todas as personalizações são válidas durante a exportação, use o -Dfail sinalizador:
./sci_ant.sh -f ../devtoolkit/devtoolkit_extensions.xml export -Dfail=class,file,log4j

Verificações de validação

Um JAR de personalização pode conter problemas que podem levar a falhas ou complicações no ambiente de produção. Sem regras de validação, esses problemas podem resultar em falhas de tempo de execução e vulnerabilidades de segurança. Para resolver esses problemas, as seguintes verificações de validação foram desenvolvidas para verificar estaticamente o pacote de personalização, detectar problemas antecipadamente e aplicar práticas de personalização seguras.
Conflitos de nomes de classes
Valida se não há arquivos de classe duplicados entre o JAR de personalização e as classes existentes do site out-of-the-box (OOB) .
Conflitos de nome de arquivo
Valida se todos os arquivos localizados no diretório /files/ dentro do JAR estão em conformidade com uma lista branca predefinida de caminhos de arquivos permitidos. Qualquer arquivo que não corresponda à lista de permissões é sinalizado como um conflito.
Somente os seguintes padrões de arquivo são permitidos.
extensions/**/*
properties/customer_overrides.properties
properties/action.properties
properties/*ValueMaps.xml
repository/eardata/**/extn/**/*
O seguinte padrão de arquivo está na lista negra.
repository/eardata/**/extn/**/*.sample
Importações de classe ausentes
Valida se todas as classes importadas que são usadas no código de personalização estão presentes no tempo de execução do DTK ou fazem parte das bibliotecas de terceiros aprovadas. Essa validação evita falhas no tempo de execução devido à falta de dependências.
Validações de extensões de banco de dados
  • Colunas LOB
    Verifica as colunas para garantir que nenhuma nova coluna LOB personalizada seja introduzida nos xmls da entidade.
  • Tipos de dados grandes
    Verifica as colunas para garantir que nenhuma nova coluna com tamanho superior a 500 seja introduzida nos XMLs da entidade.
  • Excesso de índices personalizados
    Verifica se o número de índices personalizados excede cinco em uma tabela personalizada ou pronta para uso (OOB), o que pode afetar o desempenho de inserção ou atualização.
Conexões diretas com o banco de dados e operações SQL
As validações a seguir identificam padrões arriscados de acesso ao banco de dados.
  • Conexões JDBC
    Verifica o uso de getConnection() ou métodos semelhantes para acessar o banco de dados.
  • Execução de SQL bruto
    Verifica o uso das operações SQL DELETE, DROP, ALTER , que podem causar efeitos colaterais não intencionais.
  • JDBC ResultSet iteração
    Verifica o uso de qualquer interação de baixo nível com o banco de dados.
  • Consultas SQL diretas em colunas LOB personalizadas
    Verifica se um código personalizado contém alguma consulta SQL direta em relação às colunas LOB personalizadas detectadas em Database extensions validations - LOB columns (Validações de extensões de banco de dados - colunas LOB ).
  • Consultas LIKE
    Verifica o uso do operador SQL LIKE em consultas que podem causar problemas de desempenho, especialmente quando utilizado com colunas LOB.
Verificações para estruturas de registro não aprovadas e Sys.Out
  • Sinaliza o uso das seguintes estruturas de registro em console no código personalizado.
    • System.out.print*
    • System.err.print*
  • Sinaliza o uso das seguintes importações de registro não aprovadas.
    • Apache Commons Registro: org.apache.commons.logging.
    • SLF4J (Fachada de registro simples para Java): org.slf4j.
    • Registro de utilidades Java: java.util.logging.
    • Logback: ch.qos.logback.
Verificações para personalizações web.xml em relação ao OOB web.xml
Essa validação garante que o arquivo personalizado mantenha todas as configurações necessárias do OOB ( web.xml ) fornecido com o DTK, permitindo entradas adicionais. Quaisquer elementos em falta são comunicados durante a validação.
Observação: Todas as violações são fornecidas em um relatório que pode ser acessado nos seguintes locais.
<runtime_sandbox>/tmp/report/*_details.csv
<runtime_sandbox>/tmp/report/*_summary.csv

Validando propriedades customizadas

A ferramenta executa uma série de validações nas propriedades customizadas incluídas no arquivo customer_override.properties para assegurar que estejam em conformidade com os padrões de implementação na nuvem. As seguintes validações são executadas nas propriedades customizadas:

A ferramenta valida se as propriedades customizadas definidas no arquivo customer_override.properties pertencem somente aos seguintes serviços:
  • yfs
  • xapirest
  • elasticsearch
  • logfilter
  • dbclassCache
  • jdbcService (of the pattern jdbcService.*.prop_* )
Nota: Para os serviços listados acima, a ferramenta falha na validação de propriedades customizadas definidas para as propriedades com DATABASE_SUPPORT=Y. A ferramenta também ignora as propriedades customizadas definidas para propriedades que estão no formato yfs.yfs.logall*.

Validação do uso de Log4j 1.x

A validação Log4j 1.x verifica se o JAR de personalização não inclui ou faz referência a bibliotecas Log4j 1.x (log4j-1.x.jar) ou APIs (org.apache.log4j.*). O Log4j 1.x chegou ao fim da vida útil e contém vulnerabilidades de segurança conhecidas. O uso dessa estrutura de registro não é permitido para evitar riscos de segurança e garantir a conformidade com os padrões de registro suportados.