Explorar a SCA (análise de composição de software)
Duas áreas cruciais do pipeline Secure DevOps são o gerenciamento de pacotes e os componentes OSS de software de código aberto.
Gerenciamento de pacotes
Assim como as equipes usam o controle de versão como uma única fonte de verdade para o código-fonte, o Secure DevOps depende de um gerenciador de pacotes como a origem exclusiva de componentes binários.
Usando o gerenciamento de pacotes binários, uma equipe de desenvolvimento pode criar um cache local de componentes aprovados e um feed confiável para o pipeline de CI (Integração Contínua).
No Azure DevOps, o Azure Artifacts é uma parte integrante do fluxo de trabalho do componente para organizar e compartilhar o acesso aos seus pacotes. O Azure Artifacts permite que você:
- Mantenha seus artefatos organizados. Compartilhe o código com facilidade ao armazenar pacotes Apache Maven, npm e NuGet juntos. Você pode armazenar pacotes usando Universal Packages, eliminando a necessidade de manter binários no Git.
- Proteja seus pacotes. Mantenha os pacotes de origem públicos que você usa (incluindo os pacotes de npmjs e NuGet .org) em seu feed, em que somente você poderá excluí-los e eles têm o backup do SLA (Contrato de Nível de Serviço) do Azure de nível empresarial.
- Integre o tratamento contínuo de pacotes ao pipeline de CI (Integração Contínua)/CD (Desenvolvimento Contínuo). Acesse com facilidade todos os artefatos em compilações e lançamentos. O Azure Artifacts integra-se nativamente à ferramenta de CI/CD do Azure Pipelines.
Para saber mais sobre o Azure Artifacts, visite a página da Web. O que é o Azure Artifacts?
Versões e compatibilidade
A tabela a seguir lista os tipos de pacote com suporte do Azure Artifacts. A disponibilidade de cada pacote no Azure DevOps Services também é exibida.
A tabela a seguir detalha a compatibilidade de cada pacote com versões específicas do Azure DevOps Server, anteriormente conhecido como TFS (Team Foundation Server).
Recurso | Azure DevOps Services | TFS |
---|---|---|
NuGet | Sim | TFS 2017 |
npm | Sim | Primeira atualização do TFS 2017 e posterior |
Maven | Sim | Primeira atualização do TFS 2017 e posterior |
Gradle | Sim | TFS 2018 |
Universal | Sim | Não |
Python | Sim | Não |
Os pacotes Maven, npm e NuGet podem ter suporte com equipes de qualquer tamanho de fontes públicas e privadas. O Azure Artifact vem do Azure DevOps, mas a extensão também está disponível no Visual Studio Marketplace.
Observação
Depois de publicar uma versão de pacote específica em um feed, esse número de versão será reservado permanentemente.
Observação
Você não poderá carregar um pacote de revisão mais recente com esse mesmo número de versão ou excluir essa versão e carregar um novo pacote com o mesmo número de versão. A versão publicada é imutável.
A função dos componentes do OSS
O trabalho de desenvolvimento é mais produtivo devido à ampla disponibilidade de componentes reutilizáveis de OSS (software de código aberto).
Essa abordagem prática para reutilização inclui runtimes, que estão disponíveis em sistemas operacionais Windows e Linux, como Microsoft .NET Core e Node.js.
No entanto, a reutilização do componente OSS vem com o risco de que as dependências reutilizadas possam ter vulnerabilidades de segurança. Como resultado, muitos usuários encontram vulnerabilidades de segurança em seus aplicativos devido às versões do pacote do Node.js que consomem.
O OSS oferece um novo conceito chamado SCA (Análise de Composição de Software) para resolver essas questões de segurança, mostrado na imagem a seguir.
Ao consumir um componente de OSS, independentemente de você estar criando ou consumindo dependências, normalmente você desejará seguir estas etapas de alto nível:
- Comece com a versão mais recente e correta para evitar vulnerabilidades antigas ou uso indevido de licença.
- Valide se os componentes de OSS são os binários corretos para sua versão. No pipeline de lançamento, valide os binários para garantir a precisão e mantenha uma lista de materiais rastreável.
- Receba notificações de vulnerabilidades de componente imediatamente, corrija-as e reimplante o componente automaticamente para resolver vulnerabilidades de segurança ou uso indevido de licença de software reutilizável.