Os clientes do GitLab descobriram que usar o GitLab como sua plataforma para DevSecOps simplificou o processo de avaliação do SOC 2. Este artigo analisa a estrutura SOC 2 e os recursos do GitLab que ajudam os clientes a se preparar para a certificação.
Introdução ao SOC 2
Os Controles de Sistema e Organização 2, ou SOC 2, são um padrão de conformidade voluntário que define como as empresas devem gerenciar os dados dos clientes. O relatório de avaliação SOC 2 permite que as empresas atestem a confiabilidade do software que oferecem aos clientes corporativos.
Desenvolvido pela Associação Internacional de Contadores Profissionais Certificados (AICPA), o SOC 2 se concentra em cinco critérios de serviços de confiança (Trust Services Criteria, TSC):
- Segurança: proteger os dados dos clientes contra vulnerabilidades e acessos não autorizados.
- Disponibilidade: garantindo que os sistemas sejam tolerantes a falhas e desempenhem de forma eficiente sob alta demanda para atender aos acordos de nível de serviço de disponibilidade.
- Integridade do processamento: assegurar que os sistemas funcionem conforme projetado, sem vulnerabilidades, erros ou bugs.
- Confidencialidade: proteger informações confidenciais, como código-fonte da aplicação, nomes de usuário, senhas e dados de cartão de crédito, entre outras, garantindo que o acesso seja restrito apenas às pessoas que necessitam desses dados para realizar seu trabalho.
- Privacidade: proteger informações de identificação pessoal (PII) contra acessos não autorizados.
A segurança é o único critério exigido em todas as avaliações do SOC 2. Os demais critérios podem ser incluídos na avaliação quando forem considerados essenciais para os serviços prestados.
Critério de segurança
O critério de segurança diz respeito não apenas à segurança de servidores e sistemas físicos, mas também das aplicações. As vulnerabilidades do software podem expor uma aplicação a invasores, colocando os dados dos clientes em risco, mas o GitLab pode ajudar com isso.
O GitLab oferece análises de segurança para identificar possíveis vulnerabilidades nas aplicações criadas pela empresa, incluindo os seguintes recursos:
- Testes Estáticos de Segurança de Aplicações (SAST), que analisa o código-fonte em busca de possíveis bugs e vulnerabilidades, como códigos inseguros que podem levar à execução não intencional de códigos.
- Dependency Scanning, que identifica vulnerabilidades de segurança nas dependências de software de uma aplicação.
- Análise de Contêiner, que identifica vulnerabilidades de segurança nas dependências do sistema operacional de uma aplicação em contêiner.
- Testes Dinâmicos de Segurança de Aplicações (DAST), que identifica vulnerabilidades de segurança em uma aplicação web em execução que possam torná-la suscetível a um ataque.
- Análise de Infraestrutura como Código (IaC), que analisa arquivos de configuração de Infraestrutura como Código, incluindo Terraform, Ansible, AWS CloudFormation e Kubernetes, para identificar vulnerabilidades de segurança.
Além disso, o GitLab oferece um relatório de vulnerabilidades, que lista todas as vulnerabilidades conhecidas, identificadas pelas análises acima, na aplicação atual. O GitLab também disponibiliza uma lista de materiais de software (SBOM) no formato JSON CycloneDX padrão, que mostra todas as dependências em nível de software e de sistema operacional e suas vulnerabilidades conhecidas.
A realização de análises periódicas de vulnerabilidades e a geração de relatórios detalhados de vulnerabilidades contribuem para o cumprimento de três critérios de segurança:
- CC7.1 — Para alcançar seus objetivos, a entidade usa procedimentos de detecção e monitoramento para identificar (1) alterações nas configurações que possam introduzir novas vulnerabilidades e (2) suscetibilidades a vulnerabilidades recém-descobertas.
- CC4.1 — Princípio 16 do COSO: a entidade seleciona, desenvolve e realiza avaliações contínuas e/ou independentes para verificar se os componentes do controle interno estão implementados e funcionando.
- CC4.2 — Princípio 17 do COSO: a entidade avalia e comunica as deficiências nos controles internos em tempo hábil às partes responsáveis por realizar ações corretivas, incluindo a alta gerência e o conselho de administração, conforme necessário.
Uma parte crucial das análises de segurança é a governança e a garantia de aplicação. O GitLab oferece recursos para assegurar a execução periódica das análises, impedindo que as equipes de desenvolvimento de software possam contorná-las. Esses recursos incluem:
- Controles de acesso baseados em função para restringir quem pode fazer alterações nas configurações do projeto.
- Políticas de execução de análise para garantir que as análises sejam executadas em cada repositório de código.
- Políticas de resultados de análise para assegurar que os resultados das análises sejam revisados e aprovados pelas partes interessadas de segurança apropriadas, evitando a introdução de vulnerabilidades recém-descobertas no software implantado.
- Relatórios de conformidade, que destacam quaisquer alterações nas configurações do GitLab que possam comprometer os processos de segurança implementados.
Com essas configurações, as empresas podem provar que a segurança do software é a principal prioridade em suas aplicações e que práticas de segurança estão sendo rigorosamente aplicadas.
Critérios de disponibilidade e integridade do processamento
O GitLab também pode ajudar com os TSCs de disponibilidade e integridade do processamento. Esses critérios se concentram na qualidade e no desempenho da aplicação. Para atender a esses critérios, o GitLab oferece:
- Resultados de testes unitários e alterações na cobertura de código por meio de relatórios de cobertura de código, que garantem que o código-fonte esteja sendo validado por um conjunto de testes.
- Qualidade do código, que analisa a qualidade e a complexidade do código-fonte para facilitar a legibilidade e a manutenção.
Embora as práticas mencionadas sejam adotadas no início do ciclo de vida do desenvolvimento de software para garantir um código testado e de alta qualidade, o GitLab também disponibiliza modelos para diversos tipos de testes automatizados em aplicações em execução para assegurar que elas funcionem como esperado. Esses testes incluem:
- Teste de desempenho do navegador, que mede o tempo de carregamento dos sites durante o ciclo de vida do desenvolvimento, avaliando o impacto de alterações no código sobre o desempenho do navegador.
- Teste de desempenho de carga, que avalia o desempenho do sistema no back-end de uma aplicação durante o ciclo de vida do desenvolvimento, testando o impacto de alterações no código sobre o desempenho.
- Teste de fuzzing guiado por cobertura, que envia dados inesperados, malformados ou aleatórios para uma aplicação e a monitora quanto a comportamentos instáveis e falhas.
- Teste de fuzzing da API da web, que envia dados inesperados, malformados ou aleatórios para os endpoints da API, com o objetivo de identificar bugs e problemas de segurança.
Ao adotar práticas eficazes de DevSecOps com o GitLab para criar aplicações seguras e de alta qualidade, as empresas terão mais facilidade em ser aprovadas na avaliação SOC 2 e atestar a segurança dos dados dos clientes.
Saiba mais: Fortaleça a sua postura de cibersegurança com os princípios de Seguro por Design.