Considerações de segurança para plataformas de DevOps
A segurança deve ser sempre uma prioridade em plataformas de desenvolvimento baseadas na nuvem, como o Azure DevOps e o GitHub. A Microsoft atualiza e mantém a segurança da infraestrutura de nuvem subjacente, mas cabe a você revisar e configurar as práticas recomendadas de segurança para suas próprias organizações de DevOps do Azure e instâncias do GitHub.
Considere as seguintes áreas críticas de segurança se você implantar ambientes por meio da infraestrutura como código em pipelines de integração contínua e implantação contínua (CI/CD) ou implantar código em seus aplicativos hospedados no Azure.
Restringir o acesso às ferramentas de DevOps
Siga o princípio do menor privilégio usando o controle de acesso baseado em função (RBAC) por meio do Microsoft Entra ID. Dê aos usuários e serviços a quantidade mínima de acesso às suas plataformas de DevOps de que eles precisam para executar suas funções de negócios. Para obter mais informações, consulte os seguintes artigos:
- Ligar a sua organização ao Microsoft Entra ID
- Integração do Microsoft Entra Single Sign-On (SSO) com o GitHub Enterprise Cloud
- Práticas recomendadas de segurança do Azure DevOps
Depois de estabelecer a ID do Microsoft Entra como seu plano de gerenciamento de identidade, siga as práticas recomendadas para gerenciar atribuições de função do Azure DevOps com associações de grupo do Microsoft Entra. Você pode atribuir funções do Azure DevOps a grupos do Microsoft Entra e ajustar a associação do Microsoft Entra de um usuário para alterar ou remover seu acesso ao Azure DevOps.
Use o gerenciamento de direitos de ID do Microsoft Entra para criar pacotes de acesso que permitam aos usuários do Microsoft Entra acesso limitado ao tempo aos recursos necessários para concluir suas tarefas.
Você também pode usar o Microsoft Entra Privileged Identity Management para acesso just-in-time para promover indivíduos às funções de Administrador de DevOps do Azure por um período de tempo.
Gerencie a segurança no Azure DevOps usando grupos de segurança, políticas e configurações no nível de organização, projeto ou objeto do Azure DevOps. Considere desabilitar a herança de permissões no Azure DevOps, se possível.
Restringir o acesso ao repositório e à filial
Restrinja o acesso ao repositório, as permissões e a criação de ramificações para proteger seu código e ambientes contra alterações indesejadas ou maliciosas. Restrinja o acesso a repositórios usando grupos de segurança no Azure DevOps. Limite quem pode ler e atualizar o código em suas ramificações definindo permissões de filial.
Restringir o acesso e as permissões do pipeline
Código mal-intencionado pode roubar dados e segredos corporativos e corromper ambientes de produção. Implemente guardrails para evitar a implantação de código mal-intencionado no pipeline. Ao restringir o acesso e implementar guardrails, você também pode evitar a exposição lateral a outros projetos, pipelines e repositórios de quaisquer pipelines comprometidos.
Considere seguir uma abordagem incremental para proteger seus pipelines YAML. Para obter mais informações, consulte Planejar como proteger seus pipelines YAML.
Selecione o agente de DevOps com base nas necessidades de segurança
Você pode usar agentes hospedados pela Microsoft ou auto-hospedados para alimentar os pipelines do Azure DevOps e GitHub. Existem compensações para cada tipo de agente.
Com agentes hospedados pela Microsoft, você não precisa se preocupar com atualizações ou manutenção. Com agentes auto-hospedados, você tem maior flexibilidade para implementar guarda-corpos de segurança. Você controla o hardware do agente, o sistema operacional e as ferramentas instaladas.
Consulte Agentes do Azure Pipelines para analisar as diferenças entre os tipos de agentes e identificar possíveis considerações de segurança.
Usar conexões de serviço seguras e com escopo
Sempre que possível, use uma conexão de serviço para implantar a infraestrutura ou o código do aplicativo em um ambiente do Azure. A conexão de serviço deve ter acesso de implantação limitado a recursos ou grupos de recursos específicos do Azure, para reduzir possíveis superfícies de ataque. Além disso, considere a criação de conexões de serviço separadas para ambientes de desenvolvimento, teste, controle de qualidade e produção.
Use uma loja secreta
Nunca codifice segredos em código ou documentação auxiliar em seus repositórios. Os adversários verificam repositórios, procurando dados confidenciais expostos para explorar. Configure um repositório secreto, como o Azure Key Vault, e faça referência ao repositório no Azure Pipelines para recuperar chaves, segredos ou certificados com segurança. Para obter mais informações, consulte Proteger o pipeline e o fluxo de trabalho de CI/CD. Você também pode usar segredos do Cofre da Chave nos fluxos de trabalho do GitHub Actions.
Use estações de trabalho DevOps reforçadas para criar e implantar código
As equipes de plataforma e desenvolvimento geralmente têm privilégios elevados na plataforma Azure ou em outros serviços, como o Azure DevOps e o GitHub. Este acesso aumenta consideravelmente a superfície de ataque potencial. Implemente guarda-corpos para proteger quaisquer pontos de extremidade e estações de trabalho que você usa para desenvolver e implantar código.
Use estações de trabalho de administração seguras (SAWs) reforçadas para implantar quaisquer alterações em ambientes de alto risco e produção. Para obter mais informações, consulte Proteger pontos de extremidade com Zero Trust.
Faça verificações e testes de segurança
Quer você implante o código do aplicativo ou a infraestrutura como código, implemente as práticas recomendadas e os controles do DevSecOps em seus pipelines. Integre a segurança no início da sua jornada de CI/CD para evitar violações de segurança dispendiosas mais tarde. Crie uma estratégia para implementar análise de código estático, teste de unidade, varredura secreta e verificação de pacote/dependência em seus pipelines.
Ferramentas de segurança corporativas, como o Microsoft Defender for Cloud , podem ser integradas às ferramentas de DevOps. Por exemplo, o Defender for Cloud pode identificar imagens de contêiner vulneráveis em seus fluxos de trabalho de CI/CD. Para ações e repositórios do GitHub, use a Segurança Avançada do GitHub para verificação de código e segredos e revisão de dependência.
Revise periodicamente os eventos de auditoria para monitorar e reagir a padrões de uso inesperados por administradores e outros usuários. Você pode acessar, filtrar e exportar logs de auditoria para sua organização do Azure DevOps. Para armazenamento de longo prazo e consultas de log detalhadas, crie um fluxo de auditoria para um espaço de trabalho do Azure Monitor Log Analytics ou para um sistema de gerenciamento de eventos e informações de segurança (SIEM), como o Microsoft Sentinel.