Práticas de Desenvolvimento de Software Seguro do Adoptium®

O projeto Adoptium produz runtimes Java de alta qualidade para uso em ambientes de missão crítica. É importante para o projeto e para nossos usuários que o software que entregamos seja seguro e confiável. O Adoptium segue um conjunto de práticas de desenvolvimento de software fundamentais, sólidas e seguras, baseadas em práticas estabelecidas de desenvolvimento seguro de software que podem ser verificadas para estabelecer a integridade de nossos produtos.

Práticas de Desenvolvimento Seguro

Nossos objetivos de desenvolvimento seguro são:

  • Garantir que nossa comunidade, processos e tecnologia sejam projetados para o desenvolvimento seguro de software.

  • Proteger todos os componentes do processo e do software contra adulteração e acesso não autorizado.

  • Produzir software bem protegido com mínimas vulnerabilidades de segurança.

  • Responder adequadamente a vulnerabilidades e prevenir que vulnerabilidades semelhantes ocorram no futuro.

O Adoptium atende a esses objetivos de engenharia segura aderindo às seguintes práticas:

Proveniência e Fontes Confiáveis

O Adoptium constrói código-fonte a partir de repositórios de origem confiáveis e obtém dependências e ferramentas de locais confiáveis. O projeto de build Temurin contém os programas de código aberto ou "receitas" para construir nossos lançamentos. Esses scripts de build são executados em máquinas virtuais e sistemas operacionais provenientes do projeto de fornecedores confiáveis, e usam ferramentas como compiladores e instaladores de locais confiáveis. O runtime em si é construído a partir de código-fonte mantido pelo OpenJDK e outros projetos de terceiros notáveis com um forte histórico de governança e supervisão para garantir que o binário resultante contenha apenas o código e o comportamento esperados.

O Adoptium coleta, protege, mantém e compartilha dados de proveniência de todos os componentes de cada lançamento de software em um bill of materials de software. Verificamos regularmente a integridade e verificamos a proveniência de cada dependência para identificar possíveis problemas.

Controle de Versão e Tagging

Todo o código mantido pelos projetos Adoptium está em repositórios controlados por versão no GitHub sob a organização Adoptium e administrados pela Eclipse Foundation. Nosso código é de código aberto e disponível para escrutínio pela comunidade, mas o acesso para alterar o código é limitado a committers eleitos e fortemente autenticados. Usamos os recursos de controle de versão do repositório para rastrear todas as alterações feitas no código com responsabilidade para a conta do committer individual, e exigimos revisões secundárias, verificações automatizadas adicionais e supervisão da comunidade para garantir que as alterações sejam seguras e confiáveis.

Os lançamentos do Eclipse Temurin são construídos a partir de fontes com controle de versão que são marcadas como de qualidade de lançamento no OpenJDK, e os binários resultantes são publicados como lançamentos marcados em nosso repositório no GitHub. Esses artefatos de lançamento são disponibilizados diretamente a usuários finais e redistribuidores por meio da API, site e repositório do Adoptium.

Infraestrutura como Código

Para garantir que nossa infraestrutura seja gerenciada de forma segura, definimos e provisionamos máquinas usando os princípios de Infraestrutura como Código (IaC). A maioria da infraestrutura de build e teste do Adoptium é executada em máquinas virtuais operadas por grandes provedores de serviços em nuvem. O Adoptium define os requisitos e a configuração dessas máquinas usando definições IaC mantidas sob controle de versão no projeto de infraestrutura do Adoptium. Isso permite que a comunidade verifique os detalhes da infraestrutura usada para produzir os artefatos do Adoptium e reutilize essas mesmas definições para configurar máquinas em que confiam para executar o mesmo software de build e teste do projeto.

A IaC fornece resiliência para configurar e implementar medidas para proteger os ambientes de infraestrutura de hospedagem seguindo uma arquitetura de zero trust, definindo as mudanças no provisionamento de hardware e disponibilidade para executar nossa infraestrutura em diferentes fornecedores, garantindo assim que tenhamos a capacidade de verificar os resultados diariamente.

Builds Reproduzíveis

Uma parte importante da prática de engenharia segura do Adoptium é que os membros da comunidade possam verificar os builds que produzimos. Isso é possível por meio de builds reproduzíveis verificados binariamente, o que significa que com as mesmas fontes, ferramentas e configuração de máquina, qualquer pessoa pode produzir um resultado byte a byte idêntico. Garantimos que nosso código-fonte, scripts de build e infraestrutura sejam bem definidos e com controle de versão. Publicamos informações sobre como reproduzir os binários do Adoptium e incentivamos outros a verificar esses builds verificando se os resultados do build deles correspondem, dados os mesmos insumos e processos.

O Adoptium fornece atestações de Software Bill of Material (SBOM) para a proveniência dos builds do Eclipse Temurin. O SBOM está disponível junto com cada um de nossos artefatos de lançamento Temurin.

Testes e Assinatura de Código

O Adoptium valida e verifica os lançamentos do Eclipse Temurin usando uma extensa suíte de testes de software. Esses testes são mantidos pelo projeto AQAvit do Adoptium. Esses testes são projetados para garantir que os binários estejam prontos para uso em produção de missão crítica. Os testes AQAvit verificam a correção funcional, posição de segurança, características de desempenho e durabilidade de cada binário antes de ser lançado.

Os testes AQAvit incluem tanto os desenvolvidos internamente no projeto quanto suítes de testes e aplicações de terceiros para garantir que o binário se comporte conforme o esperado. A garantia de qualidade é escalonada ao longo do processo de lançamento, com testes noturnos do trabalho de desenvolvimento para garantir que anomalias sejam rapidamente identificadas e tratadas, além de testes rigorosos de lançamento.

Os testes de conformidade com a especificação Java e os testes de garantia de qualidade AQAvit devem ser aprovados antes que um binário do Eclipse Temurin esteja pronto para lançamento. Somente quando todos os testes de lançamento estiverem concluídos o binário é publicado, juntamente com os metadados de suporte e o bill of materials de software. O Adoptium fornece uma assinatura de código criptograficamente segura que garante que o binário de lançamento seja exclusivamente identificável como o lançamento oficial do Adoptium.

Auditorias e Verificação

Todos os aspectos de um lançamento do Adoptium são conduzidos de forma aberta, além dos testes de compatibilidade Java usando o Oracle Technology Compatibility Kit (TCK). O TCK não é código aberto e nossa licença com a Oracle não permite que os testes de compatibilidade sejam conduzidos publicamente. No entanto, os testes AQAvit são todos código aberto e os resultados são disponibilizados para escrutínio público. O código-fonte é mantido em repositórios de código aberto, e as ferramentas usadas são descritas em nossos arquivos de infraestrutura. Recebemos bem auditorias e verificações das atividades de build, teste e publicação do projeto.

Os binários de lançamento do Temurin têm todos um hash criptográfico correspondente disponível para usuários finais por meio da API, site e repositório de lançamentos no Github. Os binários são assinados com o certificado de assinatura de código da Eclipse, emitido por uma autoridade certificadora estabelecida, para que os sistemas operacionais dos usuários ou outras ferramentas e serviços possam confirmar a validade das assinaturas antes do uso.

O Adoptium leva todas as vulnerabilidades de segurança a sério e adere à Política de Relatório de Vulnerabilidades da Eclipse Foundation. A notificação de vulnerabilidades potenciais ou reais nos produtos ou práticas de desenvolvimento seguro de software deve seguir essa política de relatório.

edit icon

Ajude-nos a melhorar esta documentação!

Toda a documentação do Adoptium é open source. Viu algo errado ou confuso?

Autores da Documentação
tellisongdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack