[{"data":1,"prerenderedAt":1993},["ShallowReactive",2],{"/pt-br/blog/complete-guide-to-gitlab-container-scanning":3,"navigation-pt-br":1251,"banner-pt-br":1686,"footer-pt-br":1694,"blog-post-authors-pt-br-Fernando Diaz":1933,"blog-related-posts-pt-br-complete-guide-to-gitlab-container-scanning":1948,"next-steps-pt-br":1973,"blog-share-wrapper-pt-br":1983},{"id":4,"title":5,"authors":6,"body":8,"category":1232,"date":1233,"description":1234,"extension":1235,"externalUrl":1236,"faq":1236,"featured":212,"heroImage":1237,"hidePromo":1238,"meta":1239,"navigation":212,"path":1240,"seo":1241,"slug":1245,"stem":1246,"tags":1247,"template":1249,"updatedDate":1236,"__hash__":1250},"blogPosts/pt-br/blog/complete-guide-to-gitlab-container-scanning.md","Guia completo de Container Scanning do GitLab",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1216},"minimark",[11,15,18,23,26,29,33,36,41,78,81,86,92,114,119,129,167,171,176,186,240,245,258,305,309,318,325,337,343,349,352,356,365,371,386,392,398,405,414,417,421,429,440,447,450,454,475,481,485,501,508,512,526,533,537,554,557,561,570,645,652,674,678,683,753,758,804,808,824,827,831,845,849,863,867,883,886,890,899,960,969,976,980,1010,1014,1020,1024,1033,1036,1043,1051,1054,1061,1065,1073,1076,1082,1086,1167,1170,1174,1177,1195,1198,1201,1212],[12,13,14],"p",{},"As vulnerabilidades em contêineres não esperam o próximo deploy. Elas podem surgir a qualquer momento: na criação de uma imagem ou com os contêineres já em execução em produção. Para lidar com essa realidade, o GitLab oferece diferentes abordagens de varredura de contêineres, cada uma pensada para uma etapa do ciclo de vida do contêiner.",[12,16,17],{},"Neste guia, você vai conhecer os tipos de varredura de contêineres disponíveis no GitLab, como ativar cada um e as configurações mais comuns para começar.",[19,20,22],"h2",{"id":21},"por-que-a-varredura-de-contêineres-é-importante","Por que a varredura de contêineres é importante",[12,24,25],{},"Vulnerabilidades em imagens de contêiner geram riscos ao longo de todo o ciclo de vida da aplicação. Imagens base, pacotes do sistema operacional e dependências da aplicação podem conter vulnerabilidades que atacantes exploram ativamente. A varredura de contêineres detecta esses riscos cedo, antes que cheguem à produção, e indica caminhos de correção quando eles existem.",[12,27,28],{},"Explicando melhor: a varredura de contêineres é um componente essencial da Análise de Composição de Software (SCA, na sigla em inglês) e ajuda a entender e proteger as dependências externas que sustentam as aplicações em contêineres.",[19,30,32],{"id":31},"os-cinco-tipos-de-gitlab-container-scanning","Os cinco tipos de GitLab Container Scanning",[12,34,35],{},"O GitLab oferece cinco abordagens distintas de varredura de contêineres, cada uma com um papel específico na estratégia de segurança.",[37,38,40],"h3",{"id":39},"_1-pipeline-based-container-scanning","1. Pipeline-based Container Scanning",[42,43,44,55,68,71],"ul",{},[45,46,47,48,54],"li",{},"O que faz: faz a varredura de imagens de contêiner durante a execução da ",[49,50,53],"a",{"href":51,"rel":52},"https://about.gitlab.com/pt-br/blog/getting-started-with-gitlab-understanding-ci-cd/",[],"pipeline de CI/CD"," e detecta vulnerabilidades antes do deploy",[45,56,57,58,67],{},"Indicado para: ",[49,59,62,63],{"href":60,"rel":61},"https://about.gitlab.com/pt-br/topics/ci-cd/shift-left-devops/",[],"segurança ",[64,65,66],"em",{},"shift-left"," (levar a segurança para as etapas iniciais do desenvolvimento) e bloqueio de imagens vulneráveis antes que cheguem à produção",[45,69,70],{},"Disponibilidade por plano: Free, Premium e Ultimate (com recursos adicionais no Ultimate)",[45,72,73],{},[49,74,77],{"href":75,"rel":76},"https://docs.gitlab.com/user/application_security/container_scanning/",[],"Documentação",[12,79,80],{},"O GitLab usa o scanner de segurança Trivy para analisar imagens de contêiner em busca de vulnerabilidades conhecidas. A cada execução da pipeline, o scanner examina as imagens e gera um relatório detalhado.",[82,83,85],"h4",{"id":84},"como-ativar-o-pipeline-based-container-scanning","Como ativar o Pipeline-based Container Scanning",[12,87,88],{},[89,90,91],"strong",{},"Opção A: merge request pré-configurada",[42,93,94,101,104,111],{},[45,95,96,97,100],{},"Acesse ",[89,98,99],{},"Secure > Security configuration"," no projeto.",[45,102,103],{},"Localize a linha \"Container Scanning\".",[45,105,106,107,110],{},"Selecione ",[89,108,109],{},"Configure with a merge request",".",[45,112,113],{},"Isso cria automaticamente uma merge request com a configuração necessária.",[12,115,116],{},[89,117,118],{},"Opção B: configuração manual",[42,120,121],{},[45,122,123,124,128],{},"Adicione o seguinte ao arquivo ",[125,126,127],"code",{},".gitlab-ci.yml",":",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-yaml shiki shiki-themes github-light","include:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n","yaml","",[125,137,138,151],{"__ignoreMap":135},[139,140,143,147],"span",{"class":141,"line":142},"line",1,[139,144,146],{"class":145},"shJU0","include",[139,148,150],{"class":149},"sgsFI",":\n",[139,152,154,157,160,163],{"class":141,"line":153},2,[139,155,156],{"class":149},"  - ",[139,158,159],{"class":145},"template",[139,161,162],{"class":149},": ",[139,164,166],{"class":165},"sYBdl","Jobs/Container-Scanning.gitlab-ci.yml\n",[82,168,170],{"id":169},"configurações-comuns","Configurações comuns",[12,172,173],{},[89,174,175],{},"Varredura de uma imagem específica:",[12,177,178,179,182,183,110],{},"Para fazer a varredura de uma imagem específica, sobrescreva a variável ",[125,180,181],{},"CS_IMAGE"," no job ",[125,184,185],{},"container_scanning",[130,187,189],{"className":132,"code":188,"language":134,"meta":135,"style":135},"include:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_IMAGE: myregistry.com/myapp:latest\n",[125,190,191,197,207,214,221,229],{"__ignoreMap":135},[139,192,193,195],{"class":141,"line":142},[139,194,146],{"class":145},[139,196,150],{"class":149},[139,198,199,201,203,205],{"class":141,"line":153},[139,200,156],{"class":149},[139,202,159],{"class":145},[139,204,162],{"class":149},[139,206,166],{"class":165},[139,208,210],{"class":141,"line":209},3,[139,211,213],{"emptyLinePlaceholder":212},true,"\n",[139,215,217,219],{"class":141,"line":216},4,[139,218,185],{"class":145},[139,220,150],{"class":149},[139,222,224,227],{"class":141,"line":223},5,[139,225,226],{"class":145},"  variables",[139,228,150],{"class":149},[139,230,232,235,237],{"class":141,"line":231},6,[139,233,234],{"class":145},"    CS_IMAGE",[139,236,162],{"class":149},[139,238,239],{"class":165},"myregistry.com/myapp:latest\n",[12,241,242],{},[89,243,244],{},"Filtrar por nível de severidade:",[12,246,247,248,182,251,253,254,257],{},"Para encontrar apenas vulnerabilidades a partir de um determinado nível de severidade, sobrescreva a variável ",[125,249,250],{},"CS_SEVERITY_THRESHOLD",[125,252,185],{},". No exemplo abaixo, só aparecem vulnerabilidades de severidade ",[89,255,256],{},"High"," ou superior.",[130,259,261],{"className":132,"code":260,"language":134,"meta":135,"style":135},"include:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_SEVERITY_THRESHOLD: \"HIGH\"\n",[125,262,263,269,279,283,289,295],{"__ignoreMap":135},[139,264,265,267],{"class":141,"line":142},[139,266,146],{"class":145},[139,268,150],{"class":149},[139,270,271,273,275,277],{"class":141,"line":153},[139,272,156],{"class":149},[139,274,159],{"class":145},[139,276,162],{"class":149},[139,278,166],{"class":165},[139,280,281],{"class":141,"line":209},[139,282,213],{"emptyLinePlaceholder":212},[139,284,285,287],{"class":141,"line":216},[139,286,185],{"class":145},[139,288,150],{"class":149},[139,290,291,293],{"class":141,"line":223},[139,292,226],{"class":145},[139,294,150],{"class":149},[139,296,297,300,302],{"class":141,"line":231},[139,298,299],{"class":145},"    CS_SEVERITY_THRESHOLD",[139,301,162],{"class":149},[139,303,304],{"class":165},"\"HIGH\"\n",[82,306,308],{"id":307},"vulnerabilidades-na-merge-request","Vulnerabilidades na merge request",[12,310,311,312,317],{},"Ver as vulnerabilidades do Container Scanning diretamente nas merge requests torna a revisão de segurança fluida e eficiente. Depois que o Container Scanning é configurado na pipeline de CI/CD, o GitLab exibe automaticamente as vulnerabilidades detectadas no ",[49,313,316],{"href":314,"rel":315},"https://docs.gitlab.com/user/project/merge_requests/widgets/#application-security-scanning",[],"Security widget"," da merge request.",[12,319,320],{},[321,322],"img",{"alt":323,"src":324,"title":323},"Vulnerabilidades do Container Scanning exibidas na MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/lt6elcq6jexdhqatdy8l.png",[42,326,327,330],{},[45,328,329],{},"Abra qualquer merge request e role até a seção \"Security Scanning\" para ver um resumo das vulnerabilidades novas e já existentes encontradas nas imagens de contêiner.",[45,331,332,333,336],{},"Clique em uma ",[89,334,335],{},"vulnerabilidade"," para ver os detalhes do achado, incluindo o nível de severidade, os pacotes afetados e as orientações de correção disponíveis.",[12,338,339],{},[321,340],{"alt":341,"src":342},"Visão de segurança do GitLab na MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/hplihdlekc11uvpfih1p.png",[12,344,345],{},[321,346],{"alt":347,"src":348,"title":347},"Detalhes de uma vulnerabilidade do Container Scanning na MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/jnxbe7uld8wfeezboifs.png",[12,350,351],{},"Com essa visibilidade, desenvolvedores e equipes de segurança conseguem detectar e corrigir vulnerabilidades em contêineres antes que elas cheguem à produção. A segurança passa a fazer parte da revisão de código, em vez de funcionar como uma etapa separada.",[82,353,355],{"id":354},"vulnerabilidades-no-vulnerability-report","Vulnerabilidades no Vulnerability Report",[12,357,358,359,364],{},"Além da revisão nas merge requests, o GitLab oferece um ",[49,360,363],{"href":361,"rel":362},"https://docs.gitlab.com/user/application_security/vulnerability_report/",[],"Vulnerability Report"," centralizado, que dá às equipes de segurança uma visão abrangente de todos os achados do Container Scanning no projeto.",[12,366,367],{},[321,368],{"alt":369,"src":370,"title":369},"Vulnerability Report filtrado por Container Scanning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547524/gagau279fzfgjpnvipm5.png",[42,372,373,380,383],{},[45,374,375,376,379],{},"Para acessar o relatório, selecione ",[89,377,378],{},"Secure > Vulnerability report"," na barra lateral do projeto.",[45,381,382],{},"Ali fica reunida uma visão consolidada de todas as vulnerabilidades de contêiner detectadas nas branches, com opções avançadas de filtro por severidade, status, tipo de scanner ou imagem de contêiner específica.",[45,384,385],{},"Clique em uma vulnerabilidade para abrir a página dela.",[12,387,388],{},[321,389],{"alt":390,"src":391},"Página da vulnerabilidade – parte 1","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547520/e1woxupyoajhrpzrlylj.png",[12,393,394],{},[321,395],{"alt":396,"src":397},"Página da vulnerabilidade – parte 2","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547521/idzcftcgjc8eryixnbjn.png",[12,399,400],{},[321,401],{"alt":402,"src":403,"title":404},"Página da vulnerabilidade – parte 3","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547522/mbbwbbprtf9anqqola10.png","Detalhes de uma vulnerabilidade do Container Scanning",[12,406,407,408,413],{},"A página ",[49,409,412],{"href":410,"rel":411},"https://docs.gitlab.com/user/application_security/vulnerabilities/",[],"Vulnerability Details"," mostra exatamente quais imagens e camadas de contêiner foram afetadas, o que facilita rastrear a vulnerabilidade até a origem. Nela, é possível atribuir vulnerabilidades a pessoas da equipe, alterar o status (detected, confirmed, resolved, dismissed), adicionar comentários para colaborar e vincular issues relacionadas para acompanhar o trabalho de correção.",[12,415,416],{},"Com esse fluxo de trabalho, a gestão de vulnerabilidades deixa de depender de planilhas e passa a fazer parte do processo de desenvolvimento: os achados de segurança em contêineres são acompanhados, priorizados e resolvidos de forma sistemática.",[82,418,420],{"id":419},"dependency-list","Dependency List",[12,422,423,424,428],{},"A ",[49,425,420],{"href":426,"rel":427},"https://docs.gitlab.com/user/application_security/dependency_list/",[]," do GitLab oferece uma lista completa de materiais de software (SBOM), que cataloga cada componente das imagens de contêiner e dá total transparência sobre a cadeia de suprimentos de software.",[42,430,431,437],{},[45,432,96,433,436],{},[89,434,435],{},"Secure > Dependency list"," para ver o inventário de todos os pacotes, bibliotecas e dependências que o Container Scanning detectou no projeto.",[45,438,439],{},"Essa visão é fundamental para entender o que de fato está em execução dentro dos contêineres, dos pacotes do sistema operacional base às dependências da aplicação.",[12,441,442],{},[321,443],{"alt":444,"src":445,"title":446},"Dependency List do GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/vjg6dk3nhajqamplroji.png","Dependency List do GitLab (SBOM)",[12,448,449],{},"Você pode filtrar a lista por gerenciador de pacotes, tipo de licença ou status de vulnerabilidade para identificar rapidamente quais componentes representam riscos de segurança ou problemas de conformidade. Cada dependência mostra as vulnerabilidades associadas, o que permite entender os problemas de segurança no contexto dos componentes reais do software, em vez de tratá-los como achados isolados.",[37,451,453],{"id":452},"_2-container-scanning-for-registry","2. Container Scanning for Registry",[42,455,456,463,466,469],{},[45,457,458,459,462],{},"O que faz: faz automaticamente a varredura das imagens com a tag ",[125,460,461],{},"latest"," enviadas por push ao GitLab Container Registry",[45,464,465],{},"Indicado para: monitoramento contínuo das imagens do registry, sem precisar disparar pipelines manualmente",[45,467,468],{},"Disponibilidade por plano: somente Ultimate",[45,470,471],{},[49,472,77],{"href":473,"rel":474},"https://docs.gitlab.com/user/application_security/container_scanning/#container-scanning-for-registry",[],[12,476,477,478,480],{},"Quando você faz push de uma imagem de contêiner com a tag ",[125,479,461],{},", o bot de políticas de segurança do GitLab dispara automaticamente uma varredura na branch padrão. Diferentemente da varredura baseada em pipeline, essa abordagem trabalha em conjunto com o Continuous Vulnerability Scanning para monitorar novos boletins de segurança publicados.",[82,482,484],{"id":483},"como-ativar-o-container-scanning-for-registry","Como ativar o Container Scanning for Registry",[486,487,488,492,498],"ol",{},[45,489,96,490,110],{},[89,491,99],{},[45,493,494,495,110],{},"Role até a seção ",[89,496,497],{},"Container Scanning For Registry",[45,499,500],{},"Ative o recurso.",[12,502,503],{},[321,504],{"alt":505,"src":506,"title":507},"Container Scanning for Registry","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547512/vntrlhtmsh1ecnwni5ji.png","Opção para ativar o Container Scanning for Registry",[82,509,511],{"id":510},"pré-requisitos","Pré-requisitos",[42,513,514,517,520,523],{},[45,515,516],{},"Papel de Maintainer ou superior no projeto",[45,518,519],{},"O projeto não pode estar vazio (é preciso ao menos um commit na branch padrão)",[45,521,522],{},"As notificações do Container Registry precisam estar configuradas",[45,524,525],{},"O Package Metadata Database precisa estar configurado (ativado por padrão no GitLab.com)",[12,527,528,529,532],{},"As vulnerabilidades aparecem na aba ",[89,530,531],{},"Container Registry vulnerabilities"," do Vulnerability Report.",[37,534,536],{"id":535},"_3-multi-container-scanning","3. Multi-Container Scanning",[42,538,539,542,545,548],{},[45,540,541],{},"O que faz: faz a varredura de várias imagens de contêiner em paralelo, em uma única pipeline",[45,543,544],{},"Indicado para: arquiteturas de microsserviços e projetos com várias imagens de contêiner",[45,546,547],{},"Disponibilidade por plano: Free, Premium e Ultimate (atualmente em Beta)",[45,549,550],{},[49,551,77],{"href":552,"rel":553},"https://docs.gitlab.com/user/application_security/container_scanning/multi_container_scanning/",[],[12,555,556],{},"O Multi-Container Scanning usa pipelines filhas dinâmicas para executar as varreduras simultaneamente, o que reduz de forma significativa o tempo total de execução da pipeline quando é preciso fazer a varredura de várias imagens.",[82,558,560],{"id":559},"como-ativar-o-multi-container-scanning","Como ativar o Multi-Container Scanning",[486,562,563],{},[45,564,565,566,569],{},"Crie um arquivo ",[125,567,568],{},".gitlab-multi-image.yml"," na raiz do repositório:",[130,571,573],{"className":132,"code":572,"language":134,"meta":135,"style":135},"scanTargets:\n  - name: alpine\n    tag: \"3.19\"\n  - name: python\n    tag: \"3.9-slim\"\n  - name: nginx\n    tag: \"1.25\"\n",[125,574,575,582,594,604,615,624,635],{"__ignoreMap":135},[139,576,577,580],{"class":141,"line":142},[139,578,579],{"class":145},"scanTargets",[139,581,150],{"class":149},[139,583,584,586,589,591],{"class":141,"line":153},[139,585,156],{"class":149},[139,587,588],{"class":145},"name",[139,590,162],{"class":149},[139,592,593],{"class":165},"alpine\n",[139,595,596,599,601],{"class":141,"line":209},[139,597,598],{"class":145},"    tag",[139,600,162],{"class":149},[139,602,603],{"class":165},"\"3.19\"\n",[139,605,606,608,610,612],{"class":141,"line":216},[139,607,156],{"class":149},[139,609,588],{"class":145},[139,611,162],{"class":149},[139,613,614],{"class":165},"python\n",[139,616,617,619,621],{"class":141,"line":223},[139,618,598],{"class":145},[139,620,162],{"class":149},[139,622,623],{"class":165},"\"3.9-slim\"\n",[139,625,626,628,630,632],{"class":141,"line":231},[139,627,156],{"class":149},[139,629,588],{"class":145},[139,631,162],{"class":149},[139,633,634],{"class":165},"nginx\n",[139,636,638,640,642],{"class":141,"line":637},7,[139,639,598],{"class":145},[139,641,162],{"class":149},[139,643,644],{"class":165},"\"1.25\"\n",[486,646,647],{"start":153},[45,648,649,650,128],{},"Inclua o template no ",[125,651,127],{},[130,653,655],{"className":132,"code":654,"language":134,"meta":135,"style":135},"include:\n  - template: Jobs/Multi-Container-Scanning.latest.gitlab-ci.yml\n",[125,656,657,663],{"__ignoreMap":135},[139,658,659,661],{"class":141,"line":142},[139,660,146],{"class":145},[139,662,150],{"class":149},[139,664,665,667,669,671],{"class":141,"line":153},[139,666,156],{"class":149},[139,668,159],{"class":145},[139,670,162],{"class":149},[139,672,673],{"class":165},"Jobs/Multi-Container-Scanning.latest.gitlab-ci.yml\n",[82,675,677],{"id":676},"configuração-avançada","Configuração avançada",[12,679,680],{},[89,681,682],{},"Varredura de imagens de registries privados:",[130,684,686],{"className":132,"code":685,"language":134,"meta":135,"style":135},"auths:\n  registry.gitlab.com:\n    username: ${CI_REGISTRY_USER}\n    password: ${CI_REGISTRY_PASSWORD}\n\nscanTargets:\n  - name: registry.gitlab.com/private/image\n    tag: latest\n",[125,687,688,695,702,712,722,726,732,743],{"__ignoreMap":135},[139,689,690,693],{"class":141,"line":142},[139,691,692],{"class":145},"auths",[139,694,150],{"class":149},[139,696,697,700],{"class":141,"line":153},[139,698,699],{"class":145},"  registry.gitlab.com",[139,701,150],{"class":149},[139,703,704,707,709],{"class":141,"line":209},[139,705,706],{"class":145},"    username",[139,708,162],{"class":149},[139,710,711],{"class":165},"${CI_REGISTRY_USER}\n",[139,713,714,717,719],{"class":141,"line":216},[139,715,716],{"class":145},"    password",[139,718,162],{"class":149},[139,720,721],{"class":165},"${CI_REGISTRY_PASSWORD}\n",[139,723,724],{"class":141,"line":223},[139,725,213],{"emptyLinePlaceholder":212},[139,727,728,730],{"class":141,"line":231},[139,729,579],{"class":145},[139,731,150],{"class":149},[139,733,734,736,738,740],{"class":141,"line":637},[139,735,156],{"class":149},[139,737,588],{"class":145},[139,739,162],{"class":149},[139,741,742],{"class":165},"registry.gitlab.com/private/image\n",[139,744,746,748,750],{"class":141,"line":745},8,[139,747,598],{"class":145},[139,749,162],{"class":149},[139,751,752],{"class":165},"latest\n",[12,754,755],{},[89,756,757],{},"Incluir informações de licença:",[130,759,761],{"className":132,"code":760,"language":134,"meta":135,"style":135},"includeLicenses: true\n\nscanTargets:\n  - name: postgres\n    tag: \"15-alpine\"\n",[125,762,763,774,778,784,795],{"__ignoreMap":135},[139,764,765,768,770],{"class":141,"line":142},[139,766,767],{"class":145},"includeLicenses",[139,769,162],{"class":149},[139,771,773],{"class":772},"sYu0t","true\n",[139,775,776],{"class":141,"line":153},[139,777,213],{"emptyLinePlaceholder":212},[139,779,780,782],{"class":141,"line":209},[139,781,579],{"class":145},[139,783,150],{"class":149},[139,785,786,788,790,792],{"class":141,"line":216},[139,787,156],{"class":149},[139,789,588],{"class":145},[139,791,162],{"class":149},[139,793,794],{"class":165},"postgres\n",[139,796,797,799,801],{"class":141,"line":223},[139,798,598],{"class":145},[139,800,162],{"class":149},[139,802,803],{"class":165},"\"15-alpine\"\n",[37,805,807],{"id":806},"_4-continuous-vulnerability-scanning","4. Continuous Vulnerability Scanning",[42,809,810,813,816,818],{},[45,811,812],{},"O que faz: cria vulnerabilidades automaticamente quando novos boletins de segurança são publicados, sem precisar de pipeline",[45,814,815],{},"Indicado para: monitoramento proativo de segurança entre um deploy e outro",[45,817,468],{},[45,819,820],{},[49,821,77],{"href":822,"rel":823},"https://docs.gitlab.com/user/application_security/continuous_vulnerability_scanning/",[],[12,825,826],{},"A varredura tradicional só detecta vulnerabilidades no momento em que é executada. E é justamente aí que surge a dúvida: o que acontece quando um novo CVE é publicado amanhã para um pacote que passou pela varredura ontem? O Continuous Vulnerability Scanning resolve essa questão monitorando o GitLab Advisory Database e criando automaticamente registros de vulnerabilidade quando novos boletins afetam os componentes do projeto.",[82,828,830],{"id":829},"como-funciona","Como funciona",[486,832,833,836,839,842],{},[45,834,835],{},"O job de Container Scanning ou de Dependency Scanning gera um SBOM no formato CycloneDX.",[45,837,838],{},"O GitLab registra os componentes do projeto a partir desse SBOM.",[45,840,841],{},"Quando novos boletins de segurança são publicados, o GitLab confere se algum desses componentes foi afetado.",[45,843,844],{},"As vulnerabilidades são criadas automaticamente no relatório de vulnerabilidades.",[82,846,848],{"id":847},"considerações-importantes","Considerações importantes",[42,850,851,854,857,860],{},[45,852,853],{},"As varreduras rodam em jobs em segundo plano (Sidekiq), não em pipelines de CI.",[45,855,856],{},"Somente boletins publicados nos últimos 14 dias são considerados na detecção de novos componentes.",[45,858,859],{},"O nome de scanner exibido nessas vulnerabilidades é \"GitLab SBoM Vulnerability Scanner\".",[45,861,862],{},"Para marcar vulnerabilidades como resolvidas, ainda é preciso executar uma varredura baseada em pipeline.",[37,864,866],{"id":865},"_5-operational-container-scanning","5. Operational Container Scanning",[42,868,869,872,875,877],{},[45,870,871],{},"O que faz: faz, em uma cadência programada, a varredura dos contêineres em execução no cluster Kubernetes",[45,873,874],{},"Indicado para: monitoramento de segurança após o deploy e detecção de vulnerabilidades em tempo de execução",[45,876,468],{},[45,878,879],{},[49,880,77],{"href":881,"rel":882},"https://docs.gitlab.com/user/clusters/agent/vulnerabilities/",[],[12,884,885],{},"O Operational Container Scanning preenche a lacuna entre a segurança no momento do build e a segurança em tempo de execução. Com o GitLab agent for Kubernetes, ele faz a varredura dos contêineres que de fato estão em execução nos clusters e detecta vulnerabilidades que surgem depois do deploy.",[82,887,889],{"id":888},"como-ativar-o-operational-container-scanning","Como ativar o Operational Container Scanning",[12,891,892,893,898],{},"Se você usa o ",[49,894,897],{"href":895,"rel":896},"https://docs.gitlab.com/user/clusters/agent/install/",[],"agente do GitLab para Kubernetes",", basta adicionar o seguinte ao arquivo de configuração do agente:",[130,900,902],{"className":132,"code":901,"language":134,"meta":135,"style":135},"container_scanning:\n  cadence: '0 0 * * *'  # Daily at midnight\n  vulnerability_report:\n    namespaces:\n      include:\n        - production\n        - staging\n",[125,903,904,910,924,931,938,945,953],{"__ignoreMap":135},[139,905,906,908],{"class":141,"line":142},[139,907,185],{"class":145},[139,909,150],{"class":149},[139,911,912,915,917,920],{"class":141,"line":153},[139,913,914],{"class":145},"  cadence",[139,916,162],{"class":149},[139,918,919],{"class":165},"'0 0 * * *'",[139,921,923],{"class":922},"sAwPA","  # Daily at midnight\n",[139,925,926,929],{"class":141,"line":209},[139,927,928],{"class":145},"  vulnerability_report",[139,930,150],{"class":149},[139,932,933,936],{"class":141,"line":216},[139,934,935],{"class":145},"    namespaces",[139,937,150],{"class":149},[139,939,940,943],{"class":141,"line":223},[139,941,942],{"class":145},"      include",[139,944,150],{"class":149},[139,946,947,950],{"class":141,"line":231},[139,948,949],{"class":149},"        - ",[139,951,952],{"class":165},"production\n",[139,954,955,957],{"class":141,"line":637},[139,956,949],{"class":149},[139,958,959],{"class":165},"staging\n",[12,961,962,963,968],{},"Também é possível criar uma ",[49,964,967],{"href":965,"rel":966},"https://docs.gitlab.com/user/clusters/agent/vulnerabilities/#enable-via-scan-execution-policies",[],"política de execução de varredura"," que faz o agente do GitLab para Kubernetes executar a varredura em uma programação definida.",[12,970,971],{},[321,972],{"alt":973,"src":974,"title":975},"Política de execução de varredura – Operational Container Scanning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547515/gsgvjcq4sas4dfc8ciqk.png","Condições da política de execução de varredura para o Operational Container Scanning",[82,977,979],{"id":978},"resultados","Resultados",[42,981,982,987,994,1001],{},[45,983,96,984,110],{},[89,985,986],{},"Operate > Kubernetes clusters",[45,988,989,990,993],{},"Selecione a aba ",[89,991,992],{},"Agent"," e escolha o agente.",[45,995,996,997,1000],{},"Em seguida, selecione a aba ",[89,998,999],{},"Security"," para ver as vulnerabilidades do cluster.",[45,1002,1003,1004,1007,1008,110],{},"Os resultados também aparecem na aba ",[89,1005,1006],{},"Operational Vulnerabilities"," do ",[89,1009,363],{},[19,1011,1013],{"id":1012},"como-reforçar-a-postura-de-segurança-com-as-gitlab-security-policies","Como reforçar a postura de segurança com as GitLab Security Policies",[12,1015,1016,1017,1019],{},"As GitLab Security Policies permitem aplicar padrões de segurança consistentes em todos os fluxos de trabalho com contêineres, por meio de controles automatizados baseados em políticas. Essas políticas levam a segurança para as etapas iniciais (",[64,1018,66],{},") ao incorporar requisitos diretamente na pipeline de desenvolvimento, para que as vulnerabilidades sejam detectadas e corrigidas antes que o código chegue à produção.",[37,1021,1023],{"id":1022},"políticas-de-execução-de-varredura-e-políticas-de-execução-de-pipelines","Políticas de execução de varredura e políticas de execução de pipelines",[12,1025,1026,1027,1032],{},"As ",[49,1028,1031],{"href":1029,"rel":1030},"https://docs.gitlab.com/user/application_security/policies/scan_execution_policies/",[],"políticas de execução de varredura"," automatizam quando e como o Container Scanning é executado nos projetos. É possível definir políticas que disparam a varredura de contêineres em cada merge request, programar varreduras recorrentes da branch principal e muito mais. Assim, a cobertura fica ampla sem depender de cada desenvolvedor configurar a varredura manualmente na pipeline de CI/CD de cada projeto.",[12,1034,1035],{},"Também dá para especificar as versões do scanner e configurar os parâmetros de varredura de forma centralizada, mantendo a consistência em toda a organização e acompanhando as novas ameaças à segurança de contêineres.",[12,1037,1038],{},[321,1039],{"alt":1040,"src":1041,"title":1042},"Configuração de políticas de execução de varredura","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/z36dntxslqem9udrynvx.png","Configuração de scan execution policy",[12,1044,1026,1045,1050],{},[49,1046,1049],{"href":1047,"rel":1048},"https://docs.gitlab.com/user/application_security/policies/pipeline_execution_policies/",[],"políticas de execução de pipelines"," oferecem controles flexíveis para inserir (ou sobrescrever) jobs personalizados em uma pipeline, de acordo com as necessidades de compliance.",[12,1052,1053],{},"Com elas, você pode inserir automaticamente jobs de varredura de contêineres na pipeline, fazer o build falhar quando as vulnerabilidades de contêiner ultrapassam o nível de risco aceitável, disparar validações de segurança adicionais em branches ou tags específicas e aplicar requisitos de compliance às imagens de contêiner destinadas a ambientes de produção. As políticas de execução de pipelines funcionam como proteções automáticas: garantem que os padrões de segurança sejam aplicados de forma consistente em todos os deploys de contêineres, sem intervenção manual.",[12,1055,1056],{},[321,1057],{"alt":1058,"src":1059,"title":1060},"Políticas de execução de pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/ddhhugzcr2swptgodof2.png","Ações da política de execução de pipelines",[37,1062,1064],{"id":1063},"políticas-para-aprovação-de-merge-requests","Políticas para aprovação de Merge Requests",[12,1066,1026,1067,1072],{},[49,1068,1071],{"href":1069,"rel":1070},"https://docs.gitlab.com/user/application_security/policies/merge_request_approval_policies/",[],"políticas para aprovação de Merge Requests"," funcionam como barreiras de segurança: exigem que aprovadores designados revisem e aprovem as merge requests que contenham vulnerabilidades em contêineres.",[12,1074,1075],{},"É possível configurar políticas que bloqueiam o merge quando vulnerabilidades de severidade crítica ou alta são detectadas, ou que exigem a aprovação da equipe de segurança para qualquer merge request que introduza novos achados em contêineres. Dessa forma, imagens de contêiner vulneráveis não avançam na pipeline, e o desenvolvimento segue no mesmo ritmo nas mudanças de baixo risco.",[12,1077,1078],{},[321,1079],{"alt":1080,"src":1081,"title":1080},"Política para aprovação de Merge Requests bloqueando a MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/hgnbc1vl4ssqafqcyuzg.png",[19,1083,1085],{"id":1084},"como-escolher-a-abordagem-certa","Como escolher a abordagem certa",[1087,1088,1089,1105],"table",{},[1090,1091,1092],"thead",{},[1093,1094,1095,1099,1102],"tr",{},[1096,1097,1098],"th",{},"Tipo de varredura",[1096,1100,1101],{},"Quando usar",[1096,1103,1104],{},"Principal benefício",[1106,1107,1108,1123,1134,1145,1156],"tbody",{},[1093,1109,1110,1114,1117],{},[1111,1112,1113],"td",{},"Pipeline-based",[1111,1115,1116],{},"A cada build",[1111,1118,1119,1120,1122],{},"Segurança ",[64,1121,66],{},"; bloqueia builds vulneráveis",[1093,1124,1125,1128,1131],{},[1111,1126,1127],{},"Registry scanning",[1111,1129,1130],{},"Monitoramento contínuo",[1111,1132,1133],{},"Detecta novos CVEs em imagens armazenadas",[1093,1135,1136,1139,1142],{},[1111,1137,1138],{},"Multi-container",[1111,1140,1141],{},"Microsserviços",[1111,1143,1144],{},"Varredura em paralelo, pipelines mais rápidas",[1093,1146,1147,1150,1153],{},[1111,1148,1149],{},"Continuous vulnerability",[1111,1151,1152],{},"Entre deploys",[1111,1154,1155],{},"Monitoramento proativo de boletins de segurança",[1093,1157,1158,1161,1164],{},[1111,1159,1160],{},"Operational",[1111,1162,1163],{},"Monitoramento em produção",[1111,1165,1166],{},"Detecção de vulnerabilidades em tempo de execução",[12,1168,1169],{},"Para uma segurança abrangente, vale combinar várias abordagens: a varredura de contêineres baseada em pipelines para detectar problemas durante o desenvolvimento, o Container Scanning for Registry para o monitoramento contínuo e o Operational Container Scanning para ter visibilidade em produção.",[19,1171,1173],{"id":1172},"por-onde-começar","Por onde começar",[12,1175,1176],{},"O caminho mais rápido para a segurança de contêineres é ativar a varredura baseada em pipeline:",[486,1178,1179,1183,1189,1192],{},[45,1180,96,1181,100],{},[89,1182,99],{},[45,1184,1185,1186,1188],{},"Clique em ",[89,1187,109],{}," na linha do Container Scanning.",[45,1190,1191],{},"Faça o merge da MR gerada.",[45,1193,1194],{},"A próxima pipeline já vai incluir a varredura de vulnerabilidades.",[12,1196,1197],{},"A partir daí, você pode adicionar outros tipos de varredura conforme os requisitos de segurança e o plano do GitLab.",[12,1199,1200],{},"Segurança de contêineres não é uma tarefa pontual, e sim um processo contínuo. Com o conjunto completo de recursos de varredura de contêineres do GitLab, é possível detectar vulnerabilidades em todas as etapas do ciclo de vida do contêiner, do build à execução.",[1202,1203,1204],"blockquote",{},[12,1205,1206,1207,110],{},"Para saber mais sobre como o GitLab pode ajudar a fortalecer a postura de segurança da sua empresa, acesse a ",[49,1208,1211],{"href":1209,"rel":1210},"https://about.gitlab.com/pt-br/solutions/application-security-testing/",[],"página de soluções de segurança e governança do GitLab",[1213,1214,1215],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":135,"searchDepth":153,"depth":153,"links":1217},[1218,1219,1226,1230,1231],{"id":21,"depth":153,"text":22},{"id":31,"depth":153,"text":32,"children":1220},[1221,1222,1223,1224,1225],{"id":39,"depth":209,"text":40},{"id":452,"depth":209,"text":453},{"id":535,"depth":209,"text":536},{"id":806,"depth":209,"text":807},{"id":865,"depth":209,"text":866},{"id":1012,"depth":153,"text":1013,"children":1227},[1228,1229],{"id":1022,"depth":209,"text":1023},{"id":1063,"depth":209,"text":1064},{"id":1084,"depth":153,"text":1085},{"id":1172,"depth":153,"text":1173},"security","2026-10-19","Do build à produção: os tipos de varredura de contêineres do GitLab, como ativar cada um e as configurações para começar.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png",false,{},"/pt-br/blog/complete-guide-to-gitlab-container-scanning",{"config":1242,"title":1243,"description":1244},{"noIndex":1238},"Container Scanning do GitLab: guia completo","Conheça os métodos de varredura de contêineres do GitLab e aprenda a proteger contêineres em cada etapa do ciclo de vida.","complete-guide-to-gitlab-container-scanning","pt-br/blog/complete-guide-to-gitlab-container-scanning",[1232,1248],"tutorial","BlogPost","ky-sz4ynLTirxnTD3kiyIn3tVN3G_-aEuet4q_DLmYA",{"logo":1252,"freeTrial":1257,"sales":1262,"login":1267,"items":1272,"search":1601,"minimal":1637,"duo":1656,"switchNav":1665,"pricingDeployment":1676},{"config":1253},{"href":1254,"dataGaName":1255,"dataGaLocation":1256},"/pt-br/","gitlab logo","header",{"text":1258,"config":1259},"Obtenha uma avaliação gratuita",{"href":1260,"dataGaName":1261,"dataGaLocation":1256},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":1263,"config":1264},"Solicite uma demonstração",{"href":1265,"dataGaName":1266,"dataGaLocation":1256},"/pt-br/request-a-demo/","sales",{"text":1268,"config":1269},"Fazer login",{"href":1270,"dataGaName":1271,"dataGaLocation":1256},"https://gitlab.com/users/sign_in/","sign in",[1273,1359,1446,1451,1525,1579],{"text":1274,"left":212,"config":1275,"menu":1277},"Plataforma",{"dataNavLevelOne":1276},"platform",{"type":1278,"link":1279,"columns":1283,"feature":1348},"lists",{"text":1280,"config":1281},"Conheça a plataforma",{"href":1282,"dataGaName":1276,"dataGaLocation":1256},"/pt-br/platform/",[1284,1307,1330],{"title":1285,"items":1286},"DevOps",[1287,1292,1297,1302],{"text":1288,"config":1289},"CI/CD",{"href":1290,"dataGaLocation":1256,"dataGaName":1291},"/pt-br/solutions/continuous-integration/","ci/cd",{"text":1293,"config":1294},"Gerenciamento de código-fonte",{"href":1295,"dataGaLocation":1256,"dataGaName":1296},"/pt-br/solutions/source-code-management/","source code management",{"text":1298,"config":1299},"Entrega ágil",{"href":1300,"dataGaLocation":1256,"dataGaName":1301},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":1303,"config":1304},"Gerenciamento de artefatos",{"href":1305,"dataGaLocation":1256,"dataGaName":1306},"/pt-br/artifact-central/","artifact management",{"title":1308,"items":1309},"Segurança e governança",[1310,1315,1320,1325],{"text":1311,"config":1312},"Testes de segurança de aplicações",{"href":1313,"dataGaLocation":1256,"dataGaName":1314},"/pt-br/solutions/application-security-testing/","application security testing",{"text":1316,"config":1317},"Governança e conformidade",{"href":1318,"dataGaLocation":1256,"dataGaName":1319},"/pt-br/solutions/software-compliance/","governance and compliance",{"text":1321,"config":1322},"Gerenciamento de segredos",{"href":1323,"dataGaLocation":1256,"dataGaName":1324},"/pt-br/gitlab-secrets-manager/","secrets management",{"text":1326,"config":1327},"Segurança da cadeia de suprimentos",{"href":1328,"dataGaLocation":1256,"dataGaName":1329},"/pt-br/solutions/supply-chain/","supply chain security",{"title":1331,"items":1332},"IA agêntica e contexto",[1333,1338,1343],{"text":1334,"config":1335},"Duo Agent Platform",{"href":1336,"dataGaLocation":1256,"dataGaName":1337},"/pt-br/gitlab-duo-agent-platform/","duo agent platform",{"text":1339,"config":1340},"Grafo de contexto Orbit",{"href":1341,"dataGaLocation":1256,"dataGaName":1342},"/pt-br/gitlab-orbit/","orbit",{"text":1344,"config":1345},"Visibilidade e métricas",{"href":1346,"dataGaLocation":1256,"dataGaName":1347},"/pt-br/solutions/visibility-measurement/","visibility and measurement",{"config":1349,"title":1352,"text":1353,"link":1354},{"background":1350,"textColor":1351},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","O GitLab Orbit já está em disponibilidade geral","Mais precisão para os agentes, menor custo com tokens",{"text":1355,"config":1356},"Leia o anúncio",{"href":1357,"dataGaName":1358,"dataGaLocation":1256},"/pt-br/blog/gitlab-orbit-ga/","orbit ga announcement",{"text":1360,"left":212,"config":1361,"menu":1363},"Soluções",{"dataNavLevelOne":1362},"solutions",{"type":1278,"link":1364,"columns":1368,"feature":1437},{"text":1365,"config":1366},"Confira todas as soluções",{"href":1367,"dataGaName":1362,"dataGaLocation":1256},"/pt-br/solutions/",[1369,1386,1404],{"title":979,"items":1370},[1371,1376,1381],{"text":1372,"config":1373},"Modernização de DevOps",{"href":1374,"dataGaLocation":1256,"dataGaName":1375},"/pt-br/assessments/devops-modernization-assessment/","devops modernization",{"text":1377,"config":1378},"Modernização da segurança",{"href":1379,"dataGaLocation":1256,"dataGaName":1380},"/pt-br/assessments/security-modernization-assessment/","security modernization",{"text":1382,"config":1383},"Modernização da IA",{"href":1384,"dataGaLocation":1256,"dataGaName":1385},"/pt-br/assessments/ai-modernization-assessment/","ai modernization",{"title":1387,"items":1388},"Por tamanho",[1389,1394,1399],{"text":1390,"config":1391},"Empresas de grande porte",{"href":1392,"dataGaLocation":1256,"dataGaName":1393},"/pt-br/enterprise/","enterprise",{"text":1395,"config":1396},"Pequenas empresas",{"href":1397,"dataGaLocation":1256,"dataGaName":1398},"/pt-br/small-business/","small business",{"text":1400,"config":1401},"Start-ups",{"href":1402,"dataGaLocation":1256,"dataGaName":1403},"/pt-br/solutions/startups/","startups",{"title":1405,"items":1406},"Setores",[1407,1412,1417,1422,1427,1432],{"text":1408,"config":1409},"Serviços financeiros",{"href":1410,"dataGaLocation":1256,"dataGaName":1411},"/pt-br/solutions/finance/","financial services",{"text":1413,"config":1414},"Setor público",{"href":1415,"dataGaLocation":1256,"dataGaName":1416},"/pt-br/solutions/public-sector/","public sector",{"text":1418,"config":1419},"Telecomunicações",{"href":1420,"dataGaLocation":1256,"dataGaName":1421},"/pt-br/solutions/telecommunications/","telecommunications",{"text":1423,"config":1424},"Serviços automotivos",{"href":1425,"dataGaLocation":1256,"dataGaName":1426},"/pt-br/solutions/automotive/","automotive",{"text":1428,"config":1429},"Educação",{"href":1430,"dataGaLocation":1256,"dataGaName":1431},"/pt-br/solutions/education/","education",{"text":1433,"config":1434},"Aeroespacial",{"href":1435,"dataGaLocation":1256,"dataGaName":1436},"/pt-br/solutions/aerospace/","aerospace",{"config":1438,"title":1439,"text":1440,"link":1441},{"background":1350,"textColor":1351},"Padrão de Segurança do GitLab","Saiba como fortalecer sua fábrica de software e permitir que os agentes de IA ganhem autonomia sem comprometer a segurança.",{"text":1442,"config":1443},"Conheça o padrão",{"href":1444,"dataGaName":1445,"dataGaLocation":1256},"/pt-br/gitlab-security-standard/","gitlab security standard",{"text":1447,"config":1448},"Preços",{"href":1449,"dataGaName":1450,"dataGaLocation":1256,"dataNavLevelOne":1450},"/pt-br/pricing/","pricing",{"text":1452,"config":1453,"menu":1455},"Recursos",{"dataNavLevelOne":1454},"resources",{"type":1278,"link":1456,"columns":1460,"feature":1516},{"text":1457,"config":1458},"Confira todos os recursos",{"href":1459,"dataGaName":1454,"dataGaLocation":1256},"/pt-br/resources/",[1461,1488],{"title":1462,"items":1463},"Descubra",[1464,1468,1473,1478,1483],{"text":77,"config":1465},{"href":1466,"dataGaName":1467,"dataGaLocation":1256},"https://docs.gitlab.com/","docs",{"text":1469,"config":1470},"University",{"href":1471,"dataGaName":1472,"dataGaLocation":1256},"https://university.gitlab.com/","university",{"text":1474,"config":1475},"Demo Series",{"href":1476,"dataGaName":1477,"dataGaLocation":1256},"/pt-br/gitlab-technical-demo-series/","demo series",{"text":1479,"config":1480},"Demo Hub",{"href":1481,"dataGaName":1482,"dataGaLocation":1256},"/pt-br/demo-hub/","demo hub",{"text":1484,"config":1485},"Serviços",{"href":1486,"dataGaName":1487,"dataGaLocation":1256},"/pt-br/services/","services",{"title":1489,"items":1490},"Conecte-se",[1491,1496,1501,1506,1511],{"text":1492,"config":1493},"Blog",{"href":1494,"dataGaName":1495,"dataGaLocation":1256},"/pt-br/blog/","blog",{"text":1497,"config":1498},"Comunidade",{"href":1499,"dataGaName":1500,"dataGaLocation":1256},"/community/","community",{"text":1502,"config":1503},"Clientes",{"href":1504,"dataGaName":1505,"dataGaLocation":1256},"/pt-br/customers/","customers",{"text":1507,"config":1508},"Parceiros",{"href":1509,"dataGaName":1510,"dataGaLocation":1256},"/pt-br/partners/","partners",{"text":1512,"config":1513},"Eventos",{"href":1514,"dataGaName":1515,"dataGaLocation":1256},"/events/","events",{"config":1517,"title":1518,"text":1519,"link":1520},{"background":1350,"textColor":1351},"Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":1521,"config":1522},"Confira as novidades",{"href":1523,"dataGaName":1524,"dataGaLocation":1256},"/pt-br/whats-new/","whats new",{"text":1526,"config":1527,"menu":1529},"Empresa",{"dataNavLevelOne":1528},"company",{"type":1278,"columns":1530},[1531],{"items":1532},[1533,1538,1544,1549,1554,1559,1564,1569,1574],{"text":1534,"config":1535},"Sobre",{"href":1536,"dataGaName":1537,"dataGaLocation":1256},"/pt-br/company/","about",{"text":1539,"config":1540,"footerGa":1543},"Vagas",{"href":1541,"dataGaName":1542,"dataGaLocation":1256},"/jobs/","jobs",{"dataGaName":1542},{"text":1545,"config":1546},"Imprensa",{"href":1547,"dataGaName":1548,"dataGaLocation":1256},"/press/","press",{"text":1550,"config":1551},"Manual",{"href":1552,"dataGaName":1553,"dataGaLocation":1256},"https://handbook.gitlab.com/","handbook",{"text":1555,"config":1556},"Liderança",{"href":1557,"dataGaName":1558,"dataGaLocation":1256},"/company/team/e-group/","leadership",{"text":1560,"config":1561},"Relações com investidores",{"href":1562,"dataGaName":1563,"dataGaLocation":1256},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1565,"config":1566},"Trust Center",{"href":1567,"dataGaName":1568,"dataGaLocation":1256},"/pt-br/security/","trust center",{"text":1570,"config":1571},"AI Transparency Center",{"href":1572,"dataGaName":1573,"dataGaLocation":1256},"/pt-br/ai-transparency-center/","ai transparency center",{"text":1575,"config":1576},"Newsletter",{"href":1577,"dataGaName":1578,"dataGaLocation":1256},"/company/contact/#contact-forms","newsletter",{"text":1580,"config":1581,"menu":1582},"Fale com a gente",{"dataNavLevelOne":1528},{"type":1278,"columns":1583},[1584],{"items":1585},[1586,1591,1596],{"text":1587,"config":1588},"Fale com a equipe de vendas",{"href":1589,"dataGaName":1590,"dataGaLocation":1256},"/pt-br/sales/","talk to sales",{"text":1592,"config":1593},"Portal de ajuda",{"href":1594,"dataGaName":1595,"dataGaLocation":1256},"https://support.gitlab.com/hc/en-us","support portal",{"text":1597,"config":1598},"Portal de clientes",{"href":1599,"dataGaName":1600,"dataGaLocation":1256},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1602,"login":1603,"suggestions":1610},"Fechar",{"text":1604,"link":1605},"Para pesquisar repositórios e projetos, faça login em",{"text":1606,"config":1607},"gitlab.com",{"href":1270,"dataGaName":1608,"dataGaLocation":1609},"search login","search",{"text":1611,"default":1612},"Sugestões",[1613,1616,1620,1622,1627,1632],{"text":1614,"config":1615},"GitLab Duo Agent Platform",{"href":1336,"dataGaName":1614,"dataGaLocation":1609},{"text":1617,"config":1618},"Sugestões de código (IA)",{"href":1336,"dataGaName":1619,"dataGaLocation":1609},"Code Suggestions (AI)",{"text":1288,"config":1621},{"href":1290,"dataGaName":1288,"dataGaLocation":1609},{"text":1623,"config":1624},"GitLab na AWS",{"href":1625,"dataGaName":1626,"dataGaLocation":1609},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":1628,"config":1629},"GitLab no Google Cloud",{"href":1630,"dataGaName":1631,"dataGaLocation":1609},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1633,"config":1634},"Por que escolher o GitLab?",{"href":1635,"dataGaName":1636,"dataGaLocation":1609},"/pt-br/why-gitlab/","Why GitLab?",{"freeTrial":1638,"mobileIcon":1643,"desktopIcon":1648,"secondaryButton":1651},{"text":1639,"config":1640},"Iniciar avaliação gratuita",{"href":1641,"dataGaName":1261,"dataGaLocation":1642},"https://gitlab.com/-/trials/new/","nav",{"altText":1644,"config":1645},"Ícone do GitLab",{"src":1646,"dataGaName":1647,"dataGaLocation":1642},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1644,"config":1649},{"src":1650,"dataGaName":1647,"dataGaLocation":1642},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1652,"config":1653},"Primeiros passos",{"href":1654,"dataGaName":1655,"dataGaLocation":1642},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":1657,"mobileIcon":1661,"desktopIcon":1663},{"text":1658,"config":1659},"Saiba mais sobre o GitLab Duo",{"href":1336,"dataGaName":1660,"dataGaLocation":1642},"gitlab duo",{"altText":1644,"config":1662},{"src":1646,"dataGaName":1647,"dataGaLocation":1642},{"altText":1644,"config":1664},{"src":1650,"dataGaName":1647,"dataGaLocation":1642},{"button":1666,"mobileIcon":1671,"desktopIcon":1673},{"text":1667,"config":1668},"/switch",{"href":1669,"dataGaName":1670,"dataGaLocation":1642},"#contact","switch",{"altText":1644,"config":1672},{"src":1646,"dataGaName":1647,"dataGaLocation":1642},{"altText":1644,"config":1674},{"src":1675,"dataGaName":1647,"dataGaLocation":1642},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1677,"mobileIcon":1682,"desktopIcon":1684},{"text":1678,"config":1679},"Voltar para preços",{"href":1449,"dataGaName":1680,"dataGaLocation":1642,"icon":1681},"back to pricing","GoBack",{"altText":1644,"config":1683},{"src":1646,"dataGaName":1647,"dataGaLocation":1642},{"altText":1644,"config":1685},{"src":1650,"dataGaName":1647,"dataGaLocation":1642},{"title":1687,"button":1688,"config":1692},"O GitLab Orbit já está em disponibilidade geral. Aumente a precisão dos agentes e reduza o custo com tokens",{"text":1355,"config":1689},{"href":1357,"dataGaName":1690,"dataGaLocation":1691},"orbit-ga-banner","global-banner",{"layout":1693,"disabled":1238},"release",{"data":1695},{"text":1696,"config":1697,"items":1702,"minimal":1922},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"twitter":1698,"facebook":1699,"youtube":1700,"linkedin":1701},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1703,1749,1806,1848,1889],{"title":1447,"links":1704,"subMenu":1720},[1705,1710,1715],{"text":1706,"config":1707},"Confira os planos",{"href":1449,"dataGaName":1708,"dataGaLocation":1709},"view plans","footer",{"text":1711,"config":1712},"Por que escolher o GitLab Premium?",{"href":1713,"dataGaName":1714,"dataGaLocation":1709},"/pt-br/pricing/premium/","why premium",{"text":1716,"config":1717},"Por que escolher o GitLab Ultimate?",{"href":1718,"dataGaName":1719,"dataGaLocation":1709},"/pt-br/pricing/ultimate/","why ultimate",[1721],{"title":1580,"links":1722},[1723,1725,1727,1729,1734,1739,1744],{"text":1587,"config":1724},{"href":1589,"dataGaName":1266,"dataGaLocation":1709},{"text":1592,"config":1726},{"href":1594,"dataGaName":1595,"dataGaLocation":1709},{"text":1597,"config":1728},{"href":1599,"dataGaName":1600,"dataGaLocation":1709},{"text":1730,"config":1731},"Status",{"href":1732,"dataGaName":1733,"dataGaLocation":1709},"https://status.gitlab.com/","status",{"text":1735,"config":1736},"Termos de uso",{"href":1737,"dataGaName":1738,"dataGaLocation":1709},"/terms/","terms of use",{"text":1740,"config":1741},"Aviso de privacidade",{"href":1742,"dataGaName":1743,"dataGaLocation":1709},"/pt-br/privacy/","privacy statement",{"text":1745,"config":1746},"Preferências de cookies",{"dataGaName":1747,"dataGaLocation":1709,"id":1748,"isOneTrustButton":212},"cookie preferences","ot-sdk-btn",{"title":1274,"links":1750,"subMenu":1764},[1751,1753,1755,1757,1759,1761],{"text":1280,"config":1752},{"href":1282,"dataGaName":1276,"dataGaLocation":1709},{"text":1334,"config":1754},{"href":1336,"dataGaName":1337,"dataGaLocation":1709},{"text":1288,"config":1756},{"href":1290,"dataGaName":1291,"dataGaLocation":1709},{"text":1339,"config":1758},{"href":1341,"dataGaName":1342,"dataGaLocation":1709},{"text":1321,"config":1760},{"href":1323,"dataGaName":1324,"dataGaLocation":1709},{"text":1633,"config":1762},{"href":1635,"dataGaName":1763,"dataGaLocation":1709},"why gitlab",[1765],{"title":1766,"links":1767},"Tópicos",[1768,1772,1777,1781,1786,1791,1796,1801],{"text":1288,"config":1769},{"href":1770,"dataGaName":1771,"dataGaLocation":1709},"/pt-br/topics/ci-cd/","cicd",{"text":1773,"config":1774},"GitOps",{"href":1775,"dataGaName":1776,"dataGaLocation":1709},"/pt-br/topics/gitops/","gitops",{"text":1285,"config":1778},{"href":1779,"dataGaName":1780,"dataGaLocation":1709},"/pt-br/topics/devops/","devops",{"text":1782,"config":1783},"Controle de versão",{"href":1784,"dataGaName":1785,"dataGaLocation":1709},"/pt-br/topics/version-control/","version control",{"text":1787,"config":1788},"DevSecOps",{"href":1789,"dataGaName":1790,"dataGaLocation":1709},"/pt-br/topics/devsecops/","devsecops",{"text":1792,"config":1793},"De nuvem nativa",{"href":1794,"dataGaName":1795,"dataGaLocation":1709},"/pt-br/topics/cloud-native/","cloud native",{"text":1797,"config":1798},"IA para programação",{"href":1799,"dataGaName":1800,"dataGaLocation":1709},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":1802,"config":1803},"IA agêntica",{"href":1804,"dataGaName":1805,"dataGaLocation":1709},"/pt-br/topics/agentic-ai/","agentic ai",{"title":1360,"links":1807},[1808,1810,1812,1814,1816,1818,1820,1822,1824,1827,1829,1831,1833,1836,1840,1844],{"text":1372,"config":1809},{"href":1374,"dataGaName":1375,"dataGaLocation":1709},{"text":1377,"config":1811},{"href":1379,"dataGaName":1380,"dataGaLocation":1709},{"text":1382,"config":1813},{"href":1384,"dataGaName":1385,"dataGaLocation":1709},{"text":1408,"config":1815},{"href":1410,"dataGaName":1411,"dataGaLocation":1709},{"text":1413,"config":1817},{"href":1415,"dataGaName":1416,"dataGaLocation":1709},{"text":1418,"config":1819},{"href":1420,"dataGaName":1421,"dataGaLocation":1709},{"text":1423,"config":1821},{"href":1425,"dataGaName":1426,"dataGaLocation":1709},{"text":1428,"config":1823},{"href":1430,"dataGaName":1431,"dataGaLocation":1709},{"text":1825,"config":1826},"Setor aeroespacial",{"href":1435,"dataGaName":1436,"dataGaLocation":1709},{"text":1390,"config":1828},{"href":1392,"dataGaName":1393,"dataGaLocation":1709},{"text":1395,"config":1830},{"href":1397,"dataGaName":1398,"dataGaLocation":1709},{"text":1400,"config":1832},{"href":1402,"dataGaName":1403,"dataGaLocation":1709},{"text":1773,"config":1834},{"href":1835,"dataGaName":1776,"dataGaLocation":1709},"/pt-br/solutions/gitops/",{"text":1837,"config":1838},"Análise de composição de software",{"href":1328,"dataGaName":1839,"dataGaLocation":1709},"software composition analysis",{"text":1841,"config":1842},"Gestão de fluxo de valor do GitLab",{"href":1346,"dataGaName":1843,"dataGaLocation":1709},"value stream management",{"text":1845,"config":1846},"Todas as soluções",{"href":1367,"dataGaName":1847,"dataGaLocation":1709},"all solutions",{"title":1452,"links":1849},[1850,1855,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1885],{"text":1851,"config":1852},"Instalação",{"href":1853,"dataGaName":1854,"dataGaLocation":1709},"/pt-br/install/","install",{"text":1856,"config":1857},"Guias de início rápido",{"href":1858,"dataGaName":1859,"dataGaLocation":1709},"/pt-br/get-started/","quick setup checklists",{"text":77,"config":1861},{"href":1466,"dataGaName":1467,"dataGaLocation":1709},{"text":1469,"config":1863},{"href":1471,"dataGaName":1472,"dataGaLocation":1709},{"text":1474,"config":1865},{"href":1476,"dataGaName":1477,"dataGaLocation":1709},{"text":1479,"config":1867},{"href":1481,"dataGaName":1482,"dataGaLocation":1709},{"text":1484,"config":1869},{"href":1486,"dataGaName":1487,"dataGaLocation":1709},{"text":1492,"config":1871},{"href":1494,"dataGaName":1495,"dataGaLocation":1709},{"text":1497,"config":1873},{"href":1499,"dataGaName":1500,"dataGaLocation":1709},{"text":1502,"config":1875},{"href":1504,"dataGaName":1505,"dataGaLocation":1709},{"text":1507,"config":1877},{"href":1509,"dataGaName":1510,"dataGaLocation":1709},{"text":1512,"config":1879},{"href":1514,"dataGaName":1515,"dataGaLocation":1709},{"text":1575,"config":1881},{"href":1577,"dataGaName":1578,"dataGaLocation":1709},{"text":1883,"config":1884},"Novidades",{"href":1523,"dataGaName":1524,"dataGaLocation":1709},{"text":1886,"config":1887},"Todos os recursos",{"href":1459,"dataGaName":1888,"dataGaLocation":1709},"all resources",{"title":1526,"links":1890},[1891,1893,1895,1897,1899,1901,1903,1905,1907,1912,1917],{"text":1534,"config":1892},{"href":1536,"dataGaName":1528,"dataGaLocation":1709},{"text":1539,"config":1894},{"href":1541,"dataGaName":1542,"dataGaLocation":1709},{"text":1545,"config":1896},{"href":1547,"dataGaName":1548,"dataGaLocation":1709},{"text":1550,"config":1898},{"href":1552,"dataGaName":1553,"dataGaLocation":1709},{"text":1555,"config":1900},{"href":1557,"dataGaName":1558,"dataGaLocation":1709},{"text":1560,"config":1902},{"href":1562,"dataGaName":1563,"dataGaLocation":1709},{"text":1565,"config":1904},{"href":1567,"dataGaName":1568,"dataGaLocation":1709},{"text":1570,"config":1906},{"href":1572,"dataGaName":1573,"dataGaLocation":1709},{"text":1908,"config":1909},"Sustentabilidade",{"href":1910,"dataGaName":1911,"dataGaLocation":1709},"/sustainability/","Sustainability",{"text":1913,"config":1914},"Diversidade, inclusão e pertencimento (DIB)",{"href":1915,"dataGaName":1916,"dataGaLocation":1709},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1918,"config":1919},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":1920,"dataGaName":1921,"dataGaLocation":1709},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1923},[1924,1927,1930],{"text":1925,"config":1926},"Termos",{"href":1737,"dataGaName":1738,"dataGaLocation":1709},{"text":1928,"config":1929},"Cookies",{"dataGaName":1747,"dataGaLocation":1709,"id":1748,"isOneTrustButton":212},{"text":1931,"config":1932},"Privacidade",{"href":1742,"dataGaName":1743,"dataGaLocation":1709},[1934],{"id":1935,"title":7,"body":1236,"config":1936,"content":1938,"description":1236,"extension":1942,"meta":1943,"navigation":212,"path":1944,"seo":1945,"stem":1946,"__hash__":1947},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":1937},"BlogAuthor",{"name":7,"config":1939},{"headshot":1940,"ctfId":1941},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[1949,1958,1965],{"title":1950,"description":1951,"heroImage":1952,"category":1232,"date":1953,"authors":1954,"slug":1957,"externalUrl":1236},"Dependency Firewall: bloqueie pacotes arriscados antes do build","O GitLab Dependency Firewall barra pacotes maliciosos e vulneráveis do build automaticamente, para times e agentes entregarem com dependências confiáveis.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1791198675/kmajkudog4fj3xc6qfyb.png","2026-10-06",[1955,1956],"Alisa Ho","Amit Shalem","transcend-dependency-firewall",{"title":1959,"description":1960,"heroImage":1961,"category":1232,"date":1962,"authors":1963,"slug":1964,"externalUrl":1236},"Um guia completo sobre o GitLab DAST","Times de DevSecOps aprendem a implementar o DAST, configurar verificações passivas e ativas e definir políticas de segurança para testar aplicações em execução.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","2025-09-17",[7],"comprehensive-guide-to-gitlab-dast",{"title":1966,"description":1967,"heroImage":1968,"category":1232,"date":1969,"authors":1970,"slug":1972,"externalUrl":1236},"A importância da conformidade no DevOps","Um entendimento básico do que significa conformidade e como ela impacta o DevOps.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670037/Blog/Hero%20Images/auto-deploy-google-cloud.jpg","2022-08-15",[1971],"Lauren Minning","the-importance-of-compliance-in-devops",{"header":1974,"blurb":1975,"button":1976,"secondaryButton":1981},"Comece a desenvolver mais rápido hoje","Veja o que sua equipe pode fazer com a plataforma de orquestração inteligente para DevSecOps.\n",{"text":1977,"config":1978},"Obtenha sua avaliação gratuita",{"href":1979,"dataGaName":1261,"dataGaLocation":1980},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/","feature",{"text":1587,"config":1982},{"href":1589,"dataGaName":1266,"dataGaLocation":1980},{"header":1984,"text":1985,"button":1989,"disclaimer":1992},"Comece sua avaliação gratuita de\n\n30 dias do GitLab\n",[1986,1987,1988],"Acesso à GitLab Duo Agent Platform","Experimente nossos recursos mais avançados","Automatize tarefas complexas com IA",{"text":1258,"config":1990},{"href":1991,"dataGaName":1261,"dataGaLocation":1495},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/blog/","Não é necessário cartão de crédito.",1794072410478]