[{"data":1,"prerenderedAt":1026},["ShallowReactive",2],{"/pt-br/blog/categories/security-labs":3,"navigation-pt-br":23,"banner-pt-br":458,"footer-pt-br":465,"security-labs-category-page-total-items-pt-br":720,"security-labs-category-page-featured-pt-br":721,"security-labs-category-page-1-pt-br":1016},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":12,"description":6,"extension":15,"meta":16,"navigation":9,"path":17,"seo":18,"slug":6,"stem":21,"testContent":6,"type":6,"__hash__":22},"blogCategories/pt-br/blog/categories/security-labs.yml","Security Labs",null,{"template":8,"isCustomCategory":9,"slug":10,"hide":11},"BlogCategory",true,"security-labs",false,{"name":13,"description":14},"Laboratório de Segurança","Saiba mais sobre tendências de cibersegurança, melhores práticas e ameaças de terceiros para proteger seu código e sua infraestrutura digital.","yml",{},"/pt-br/blog/categories/security-labs",{"title":19,"description":20},"Laboratório de Segurança | Blog do GitLab","Leia mais artigos referentes a cibersegurança e pesquisas de segurança no Blog do Gitlab. Veja nossas últimas matérias.","pt-br/blog/categories/security-labs","bvMZOV6EOuUx8Vu2OvrEiFtEspBYSUU2xKdcpS1MhZM",{"logo":24,"freeTrial":29,"sales":34,"login":39,"items":44,"search":375,"minimal":409,"duo":428,"switchNav":437,"pricingDeployment":448},{"config":25},{"href":26,"dataGaName":27,"dataGaLocation":28},"/pt-br/","gitlab logo","header",{"text":30,"config":31},"Obtenha uma avaliação gratuita",{"href":32,"dataGaName":33,"dataGaLocation":28},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":35,"config":36},"Solicite uma demonstração",{"href":37,"dataGaName":38,"dataGaLocation":28},"/pt-br/sales/?contact-topic=request-demo","sales",{"text":40,"config":41},"Fazer login",{"href":42,"dataGaName":43,"dataGaLocation":28},"https://gitlab.com/users/sign_in/","sign in",[45,131,219,224,299,353],{"text":46,"left":9,"config":47,"menu":49},"Plataforma",{"dataNavLevelOne":48},"platform",{"type":50,"link":51,"columns":55,"feature":120},"lists",{"text":52,"config":53},"Conheça a plataforma",{"href":54,"dataGaName":48,"dataGaLocation":28},"/pt-br/platform/",[56,79,102],{"title":57,"items":58},"Execução e fluxos de trabalho",[59,64,69,74],{"text":60,"config":61},"CI/CD",{"href":62,"dataGaLocation":28,"dataGaName":63},"/pt-br/solutions/continuous-integration/","ci/cd",{"text":65,"config":66},"Gerenciamento de código-fonte",{"href":67,"dataGaLocation":28,"dataGaName":68},"/pt-br/solutions/source-code-management/","source code management",{"text":70,"config":71},"Entrega ágil",{"href":72,"dataGaLocation":28,"dataGaName":73},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":75,"config":76},"Gerenciamento de artefatos",{"href":77,"dataGaLocation":28,"dataGaName":78},"/pt-br/artifact-central/","artifact management",{"title":80,"items":81},"Segurança e governança",[82,87,92,97],{"text":83,"config":84},"Testes de segurança de aplicações",{"href":85,"dataGaLocation":28,"dataGaName":86},"/pt-br/solutions/application-security-testing/","application security testing",{"text":88,"config":89},"Governança e conformidade",{"href":90,"dataGaLocation":28,"dataGaName":91},"/pt-br/solutions/software-compliance/","governance and compliance",{"text":93,"config":94},"Gerenciamento de segredos",{"href":95,"dataGaLocation":28,"dataGaName":96},"/pt-br/gitlab-secrets-manager/","secrets management",{"text":98,"config":99},"Segurança da cadeia de suprimentos",{"href":100,"dataGaLocation":28,"dataGaName":101},"/pt-br/solutions/supply-chain/","supply chain security",{"title":103,"items":104},"Contexto e IA",[105,110,115],{"text":106,"config":107},"Orquestração agêntica",{"href":108,"dataGaLocation":28,"dataGaName":109},"/pt-br/gitlab-duo-agent-platform/","agentic orchestration",{"text":111,"config":112},"Grafo de contexto",{"href":113,"dataGaLocation":28,"dataGaName":114},"/pt-br/gitlab-orbit/","context graph",{"text":116,"config":117},"Visibilidade e métricas",{"href":118,"dataGaLocation":28,"dataGaName":119},"/pt-br/solutions/visibility-measurement/","visibility and measurement",{"config":121,"title":124,"text":125,"link":126},{"background":122,"textColor":123},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Por que escolher o GitLab?","Uma plataforma única que oferece velocidade e controle em todo o ciclo de vida do seu software.",{"text":127,"config":128},"Saiba mais",{"href":129,"dataGaName":130,"dataGaLocation":28},"/pt-br/why-gitlab/","why gitlab",{"text":132,"left":9,"config":133,"menu":135},"Soluções",{"dataNavLevelOne":134},"solutions",{"type":50,"link":136,"columns":140,"feature":210},{"text":137,"config":138},"Confira todas as soluções",{"href":139,"dataGaName":134,"dataGaLocation":28},"/pt-br/solutions/",[141,159,177],{"title":142,"items":143},"Resultados",[144,149,154],{"text":145,"config":146},"Modernização de DevOps",{"href":147,"dataGaLocation":28,"dataGaName":148},"/pt-br/assessments/devops-modernization-assessment/","devops modernization",{"text":150,"config":151},"Modernização da segurança",{"href":152,"dataGaLocation":28,"dataGaName":153},"/pt-br/assessments/security-modernization-assessment/","security modernization",{"text":155,"config":156},"Modernização da IA",{"href":157,"dataGaLocation":28,"dataGaName":158},"/pt-br/assessments/ai-modernization-assessment/","ai modernization",{"title":160,"items":161},"Por tamanho",[162,167,172],{"text":163,"config":164},"Enterprise",{"href":165,"dataGaLocation":28,"dataGaName":166},"/pt-br/enterprise/","enterprise",{"text":168,"config":169},"Pequenas empresas",{"href":170,"dataGaLocation":28,"dataGaName":171},"/pt-br/small-business/","small business",{"text":173,"config":174},"Start-ups",{"href":175,"dataGaLocation":28,"dataGaName":176},"/pt-br/solutions/startups/","startups",{"title":178,"items":179},"Indústrias",[180,185,190,195,200,205],{"text":181,"config":182},"Serviços financeiros",{"href":183,"dataGaLocation":28,"dataGaName":184},"/pt-br/solutions/finance/","financial services",{"text":186,"config":187},"Setor público",{"href":188,"dataGaLocation":28,"dataGaName":189},"/pt-br/solutions/public-sector/","public sector",{"text":191,"config":192},"Telecomunicações",{"href":193,"dataGaLocation":28,"dataGaName":194},"/pt-br/solutions/telecommunications/","telecommunications",{"text":196,"config":197},"Serviços automotivos",{"href":198,"dataGaLocation":28,"dataGaName":199},"/pt-br/solutions/automotive/","automotive",{"text":201,"config":202},"Educação",{"href":203,"dataGaLocation":28,"dataGaName":204},"/pt-br/solutions/education/","education",{"text":206,"config":207},"Aeroespacial",{"href":208,"dataGaLocation":28,"dataGaName":209},"/pt-br/solutions/aerospace/","aerospace",{"config":211,"title":212,"text":213,"link":214},{"background":122,"textColor":123},"GitLab Security Standard","Saiba como fortalecer sua fábrica de software e permitir que agentes de IA conquistem autonomia, sem abrir mão da segurança.",{"text":215,"config":216},"Explore o padrão",{"href":217,"dataGaName":218,"dataGaLocation":28},"/pt-br/gitlab-security-standard/","gitlab security standard",{"text":220,"config":221},"Preços",{"href":222,"dataGaName":223,"dataGaLocation":28,"dataNavLevelOne":223},"/pt-br/pricing/","pricing",{"text":225,"config":226,"menu":228},"Recursos",{"dataNavLevelOne":227},"resources",{"type":50,"link":229,"columns":233,"feature":290},{"text":230,"config":231},"Confira todos os recursos",{"href":232,"dataGaName":227,"dataGaLocation":28},"/pt-br/resources/",[234,262],{"title":235,"items":236},"Descubra",[237,242,247,252,257],{"text":238,"config":239},"Documentação",{"href":240,"dataGaName":241,"dataGaLocation":28},"https://docs.gitlab.com/","docs",{"text":243,"config":244},"University",{"href":245,"dataGaName":246,"dataGaLocation":28},"https://university.gitlab.com/","university",{"text":248,"config":249},"Demo Series",{"href":250,"dataGaName":251,"dataGaLocation":28},"/pt-br/gitlab-technical-demo-series/","demo series",{"text":253,"config":254},"Demo Hub",{"href":255,"dataGaName":256,"dataGaLocation":28},"/pt-br/demo-hub/","demo hub",{"text":258,"config":259},"Serviços",{"href":260,"dataGaName":261,"dataGaLocation":28},"/pt-br/services/","services",{"title":263,"items":264},"Conecte-se",[265,270,275,280,285],{"text":266,"config":267},"Blog",{"href":268,"dataGaName":269,"dataGaLocation":28},"/pt-br/blog/","blog",{"text":271,"config":272},"Comunidade",{"href":273,"dataGaName":274,"dataGaLocation":28},"/community/","community",{"text":276,"config":277},"Clientes",{"href":278,"dataGaName":279,"dataGaLocation":28},"/pt-br/customers/","customers",{"text":281,"config":282},"Parceiros",{"href":283,"dataGaName":284,"dataGaLocation":28},"/pt-br/partners/","partners",{"text":286,"config":287},"Eventos",{"href":288,"dataGaName":289,"dataGaLocation":28},"/events/","events",{"config":291,"title":292,"text":293,"link":294},{"background":122,"textColor":123},"Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":295,"config":296},"Confira as novidades",{"href":297,"dataGaName":298,"dataGaLocation":28},"/pt-br/whats-new/","whats new",{"text":300,"config":301,"menu":303},"Empresa",{"dataNavLevelOne":302},"company",{"type":50,"columns":304},[305],{"items":306},[307,312,318,323,328,333,338,343,348],{"text":308,"config":309},"Sobre",{"href":310,"dataGaName":311,"dataGaLocation":28},"/pt-br/company/","about",{"text":313,"config":314,"footerGa":317},"Vagas",{"href":315,"dataGaName":316,"dataGaLocation":28},"/jobs/","jobs",{"dataGaName":316},{"text":319,"config":320},"Imprensa",{"href":321,"dataGaName":322,"dataGaLocation":28},"/press/","press",{"text":324,"config":325},"Manual",{"href":326,"dataGaName":327,"dataGaLocation":28},"https://handbook.gitlab.com/","handbook",{"text":329,"config":330},"Liderança",{"href":331,"dataGaName":332,"dataGaLocation":28},"/company/team/e-group/","leadership",{"text":334,"config":335},"Relações com investidores",{"href":336,"dataGaName":337,"dataGaLocation":28},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":339,"config":340},"Trust Center",{"href":341,"dataGaName":342,"dataGaLocation":28},"/pt-br/security/","trust center",{"text":344,"config":345},"AI Transparency Center",{"href":346,"dataGaName":347,"dataGaLocation":28},"/pt-br/ai-transparency-center/","ai transparency center",{"text":349,"config":350},"Boletim informativo",{"href":351,"dataGaName":352,"dataGaLocation":28},"/company/contact/#contact-forms","newsletter",{"text":354,"config":355,"menu":356},"Entre em contato",{"dataNavLevelOne":302},{"type":50,"columns":357},[358],{"items":359},[360,365,370],{"text":361,"config":362},"Fale com a equipe de vendas",{"href":363,"dataGaName":364,"dataGaLocation":28},"/pt-br/sales/","talk to sales",{"text":366,"config":367},"Portal de ajuda",{"href":368,"dataGaName":369,"dataGaLocation":28},"https://support.gitlab.com/hc/en-us","support portal",{"text":371,"config":372},"Portal de clientes",{"href":373,"dataGaName":374,"dataGaLocation":28},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":376,"login":377,"suggestions":384},"Fechar",{"text":378,"link":379},"Para pesquisar repositórios e projetos, faça login em",{"text":380,"config":381},"gitlab.com",{"href":42,"dataGaName":382,"dataGaLocation":383},"search login","search",{"text":385,"default":386},"Sugestões",[387,390,394,396,401,406],{"text":388,"config":389},"GitLab Duo Agent Platform",{"href":108,"dataGaName":388,"dataGaLocation":383},{"text":391,"config":392},"Sugestões de código (AI)",{"href":108,"dataGaName":393,"dataGaLocation":383},"Code Suggestions (AI)",{"text":60,"config":395},{"href":62,"dataGaName":60,"dataGaLocation":383},{"text":397,"config":398},"GitLab na AWS",{"href":399,"dataGaName":400,"dataGaLocation":383},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":402,"config":403},"GitLab no Google Cloud",{"href":404,"dataGaName":405,"dataGaLocation":383},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":124,"config":407},{"href":129,"dataGaName":408,"dataGaLocation":383},"Why GitLab?",{"freeTrial":410,"mobileIcon":415,"desktopIcon":420,"secondaryButton":423},{"text":411,"config":412},"Iniciar avaliação gratuita",{"href":413,"dataGaName":33,"dataGaLocation":414},"https://gitlab.com/-/trials/new/","nav",{"altText":416,"config":417},"Ícone do GitLab",{"src":418,"dataGaName":419,"dataGaLocation":414},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":416,"config":421},{"src":422,"dataGaName":419,"dataGaLocation":414},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":424,"config":425},"Primeiros passos",{"href":426,"dataGaName":427,"dataGaLocation":414},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":429,"mobileIcon":433,"desktopIcon":435},{"text":430,"config":431},"Saiba mais sobre o GitLab Duo",{"href":108,"dataGaName":432,"dataGaLocation":414},"gitlab duo",{"altText":416,"config":434},{"src":418,"dataGaName":419,"dataGaLocation":414},{"altText":416,"config":436},{"src":422,"dataGaName":419,"dataGaLocation":414},{"button":438,"mobileIcon":443,"desktopIcon":445},{"text":439,"config":440},"/switch",{"href":441,"dataGaName":442,"dataGaLocation":414},"#contact","switch",{"altText":416,"config":444},{"src":418,"dataGaName":419,"dataGaLocation":414},{"altText":416,"config":446},{"src":447,"dataGaName":419,"dataGaLocation":414},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":449,"mobileIcon":454,"desktopIcon":456},{"text":450,"config":451},"Voltar para preços",{"href":222,"dataGaName":452,"dataGaLocation":414,"icon":453},"back to pricing","GoBack",{"altText":416,"config":455},{"src":418,"dataGaName":419,"dataGaLocation":414},{"altText":416,"config":457},{"src":422,"dataGaName":419,"dataGaLocation":414},{"title":459,"button":460,"config":463},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":127,"config":461},{"href":113,"dataGaName":462,"dataGaLocation":28},"orbit",{"layout":464,"disabled":11},"release",{"data":466},{"text":467,"source":468,"edit":474,"contribute":479,"config":484,"items":489,"minimal":709},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":469,"config":470},"Ver a origem da página",{"href":471,"dataGaName":472,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":475,"config":476},"Editar esta página",{"href":477,"dataGaName":478,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":480,"config":481},"Contribua",{"href":482,"dataGaName":483,"dataGaLocation":473},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":485,"facebook":486,"youtube":487,"linkedin":488},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[490,536,593,635,676],{"title":220,"links":491,"subMenu":506},[492,496,501],{"text":493,"config":494},"Confira os planos",{"href":222,"dataGaName":495,"dataGaLocation":473},"view plans",{"text":497,"config":498},"Por que escolher o GitLab Premium?",{"href":499,"dataGaName":500,"dataGaLocation":473},"/pt-br/pricing/premium/","why premium",{"text":502,"config":503},"Por que escolher o GitLab Ultimate?",{"href":504,"dataGaName":505,"dataGaLocation":473},"/pt-br/pricing/ultimate/","why ultimate",[507],{"title":508,"links":509},"Entre em contato conosco",[510,512,514,516,521,526,531],{"text":361,"config":511},{"href":363,"dataGaName":38,"dataGaLocation":473},{"text":366,"config":513},{"href":368,"dataGaName":369,"dataGaLocation":473},{"text":371,"config":515},{"href":373,"dataGaName":374,"dataGaLocation":473},{"text":517,"config":518},"Status",{"href":519,"dataGaName":520,"dataGaLocation":473},"https://status.gitlab.com/","status",{"text":522,"config":523},"Termos de uso",{"href":524,"dataGaName":525,"dataGaLocation":473},"/terms/","terms of use",{"text":527,"config":528},"Aviso de privacidade",{"href":529,"dataGaName":530,"dataGaLocation":473},"/pt-br/privacy/","privacy statement",{"text":532,"config":533},"Preferências de cookies",{"dataGaName":534,"dataGaLocation":473,"id":535,"isOneTrustButton":9},"cookie preferences","ot-sdk-btn",{"title":46,"links":537,"subMenu":550},[538,540,542,544,546,548],{"text":52,"config":539},{"href":54,"dataGaName":48,"dataGaLocation":473},{"text":106,"config":541},{"href":108,"dataGaName":109,"dataGaLocation":473},{"text":60,"config":543},{"href":62,"dataGaName":63,"dataGaLocation":473},{"text":111,"config":545},{"href":113,"dataGaName":114,"dataGaLocation":473},{"text":93,"config":547},{"href":95,"dataGaName":96,"dataGaLocation":473},{"text":124,"config":549},{"href":129,"dataGaName":130,"dataGaLocation":473},[551],{"title":552,"links":553},"Tópicos",[554,558,563,568,573,578,583,588],{"text":60,"config":555},{"href":556,"dataGaName":557,"dataGaLocation":473},"/pt-br/topics/ci-cd/","cicd",{"text":559,"config":560},"GitOps",{"href":561,"dataGaName":562,"dataGaLocation":473},"/pt-br/topics/gitops/","gitops",{"text":564,"config":565},"DevOps",{"href":566,"dataGaName":567,"dataGaLocation":473},"/pt-br/topics/devops/","devops",{"text":569,"config":570},"Controle de versão",{"href":571,"dataGaName":572,"dataGaLocation":473},"/pt-br/topics/version-control/","version control",{"text":574,"config":575},"DevSecOps",{"href":576,"dataGaName":577,"dataGaLocation":473},"/pt-br/topics/devsecops/","devsecops",{"text":579,"config":580},"De nuvem nativa",{"href":581,"dataGaName":582,"dataGaLocation":473},"/pt-br/topics/cloud-native/","cloud native",{"text":584,"config":585},"IA para programação",{"href":586,"dataGaName":587,"dataGaLocation":473},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":589,"config":590},"IA agêntica",{"href":591,"dataGaName":592,"dataGaLocation":473},"/pt-br/topics/agentic-ai/","agentic ai",{"title":132,"links":594},[595,597,599,601,603,605,607,609,611,614,616,618,620,623,627,631],{"text":145,"config":596},{"href":147,"dataGaName":148,"dataGaLocation":473},{"text":150,"config":598},{"href":152,"dataGaName":153,"dataGaLocation":473},{"text":155,"config":600},{"href":157,"dataGaName":158,"dataGaLocation":473},{"text":181,"config":602},{"href":183,"dataGaName":184,"dataGaLocation":473},{"text":186,"config":604},{"href":188,"dataGaName":189,"dataGaLocation":473},{"text":191,"config":606},{"href":193,"dataGaName":194,"dataGaLocation":473},{"text":196,"config":608},{"href":198,"dataGaName":199,"dataGaLocation":473},{"text":201,"config":610},{"href":203,"dataGaName":204,"dataGaLocation":473},{"text":612,"config":613},"Setor aeroespacial",{"href":208,"dataGaName":209,"dataGaLocation":473},{"text":163,"config":615},{"href":165,"dataGaName":166,"dataGaLocation":473},{"text":168,"config":617},{"href":170,"dataGaName":171,"dataGaLocation":473},{"text":173,"config":619},{"href":175,"dataGaName":176,"dataGaLocation":473},{"text":559,"config":621},{"href":622,"dataGaName":562,"dataGaLocation":473},"/pt-br/solutions/gitops/",{"text":624,"config":625},"Análise de composição de software",{"href":100,"dataGaName":626,"dataGaLocation":473},"software composition analysis",{"text":628,"config":629},"Gestão de fluxo de valor do GitLab",{"href":118,"dataGaName":630,"dataGaLocation":473},"value stream management",{"text":632,"config":633},"Todas as soluções",{"href":139,"dataGaName":634,"dataGaLocation":473},"all solutions",{"title":225,"links":636},[637,642,647,649,651,653,655,657,659,661,663,665,667,669,672],{"text":638,"config":639},"Instalação",{"href":640,"dataGaName":641,"dataGaLocation":473},"/pt-br/install/","install",{"text":643,"config":644},"Guias de início rápido",{"href":645,"dataGaName":646,"dataGaLocation":473},"/pt-br/get-started/","quick setup checklists",{"text":238,"config":648},{"href":240,"dataGaName":241,"dataGaLocation":473},{"text":243,"config":650},{"href":245,"dataGaName":246,"dataGaLocation":473},{"text":248,"config":652},{"href":250,"dataGaName":251,"dataGaLocation":473},{"text":253,"config":654},{"href":255,"dataGaName":256,"dataGaLocation":473},{"text":258,"config":656},{"href":260,"dataGaName":261,"dataGaLocation":473},{"text":266,"config":658},{"href":268,"dataGaName":269,"dataGaLocation":473},{"text":271,"config":660},{"href":273,"dataGaName":274,"dataGaLocation":473},{"text":276,"config":662},{"href":278,"dataGaName":279,"dataGaLocation":473},{"text":281,"config":664},{"href":283,"dataGaName":284,"dataGaLocation":473},{"text":286,"config":666},{"href":288,"dataGaName":289,"dataGaLocation":473},{"text":349,"config":668},{"href":351,"dataGaName":352,"dataGaLocation":473},{"text":670,"config":671},"Novidades",{"href":297,"dataGaName":298,"dataGaLocation":473},{"text":673,"config":674},"Todos os recursos",{"href":232,"dataGaName":675,"dataGaLocation":473},"all resources",{"title":300,"links":677},[678,680,682,684,686,688,690,692,694,699,704],{"text":308,"config":679},{"href":310,"dataGaName":302,"dataGaLocation":473},{"text":313,"config":681},{"href":315,"dataGaName":316,"dataGaLocation":473},{"text":319,"config":683},{"href":321,"dataGaName":322,"dataGaLocation":473},{"text":324,"config":685},{"href":326,"dataGaName":327,"dataGaLocation":473},{"text":329,"config":687},{"href":331,"dataGaName":332,"dataGaLocation":473},{"text":334,"config":689},{"href":336,"dataGaName":337,"dataGaLocation":473},{"text":339,"config":691},{"href":341,"dataGaName":342,"dataGaLocation":473},{"text":344,"config":693},{"href":346,"dataGaName":347,"dataGaLocation":473},{"text":695,"config":696},"Sustentabilidade",{"href":697,"dataGaName":698,"dataGaLocation":473},"/sustainability/","Sustainability",{"text":700,"config":701},"Diversidade, inclusão e pertencimento (DIB)",{"href":702,"dataGaName":703,"dataGaLocation":473},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":705,"config":706},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":707,"dataGaName":708,"dataGaLocation":473},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":710},[711,714,717],{"text":712,"config":713},"Termos",{"href":524,"dataGaName":525,"dataGaLocation":473},{"text":715,"config":716},"Cookies",{"dataGaName":534,"dataGaLocation":473,"id":535,"isOneTrustButton":9},{"text":718,"config":719},"Privacidade",{"href":529,"dataGaName":530,"dataGaLocation":473},2,{"id":722,"title":723,"authors":724,"body":726,"category":10,"date":998,"description":999,"extension":1000,"externalUrl":6,"faq":6,"featured":11,"heroImage":1001,"meta":1002,"navigation":9,"path":1003,"seo":1004,"slug":1008,"stem":1009,"tags":1010,"template":1014,"updatedDate":6,"__hash__":1015},"blogPosts/pt-br/blog/automating-cybersecurity-threat-detections-with-gitlab-ci-cd.md","Saiba como automatizar a detecção de ameaças cibernéticas com o GitLab CI/CD",[725],"Mitra Jozenazemian",{"type":727,"value":728,"toc":990},"minimark",[729,743,746,751,760,764,772,777,783,786,791,794,799,802,818,823,832,837,846,854,866,874,884,887,950,954,957,974,978,986],[730,731,732],"p",{},[733,734,735,736,742],"em",{},"Este post é o segundo de uma série sobre o ",[737,738,741],"a",{"href":739,"rel":740},"https://about.gitlab.com/pt-br/blog/unveiling-the-guard-framework-to-automate-security-detections-at-gitlab/",[],"GitLab Universal Automated Response and Detection (GUARD)",".",[730,744,745],{},"Escrever e implantar detecções de ameaças de segurança na plataforma de gestão de eventos e informações de segurança (SIEM) de uma organização é um passo essencial de todo programa de cibersegurança bem-sucedido. Isto é, sair de uma engenharia de detecção manual e migrar para um processo totalmente automatizado, implementando Detecções como Código (DaC), garante consistência, qualidade, governança e a realização de testes automatizados nas detecções. No GitLab, incorporamos capacidades de DaC ao GUARD, o nosso framework totalmente automatizado de detecção e resposta.",[747,748,750],"h2",{"id":749},"o-problema-controle-de-versão-e-testes-automatizados","O problema: controle de versão e testes automatizados",[730,752,753,754,759],{},"Os times de Signals Engineering e ",[737,755,758],{"href":756,"rel":757},"https://handbook.gitlab.com/handbook/security/security-operations/sirt/",[],"SIRT"," do GitLab dividem a responsabilidade de criar, atualizar e desativar detecções de ameaças no nosso SIEM. Manter uma única fonte confiável para as detecções é fundamental para garantir consistência e atender aos padrões de qualidade. Por isso, nossos times optaram de forma consciente por abstrair o processo de criação de detecções do nosso SIEM, o que melhorou o rastreamento de issues, a consistência, o processo de rollback e as métricas. Além disso, realizar testes de detecção pré-commit fora do SIEM garantiu que as novas detecções não introduzissem alertas com excesso de falsos positivos, que exigiriam ajustes ou desativação enquanto o alerta fosse corrigido.",[747,761,763],{"id":762},"a-solução-usar-o-gitlab-cicd-para-testar-e-validar-detecções","A solução: usar o GitLab CI/CD para testar e validar detecções",[730,765,766,767,771],{},"Para enfrentar esses desafios, desenvolvemos um fluxo de trabalho eficiente usando o ",[737,768,60],{"href":769,"rel":770},"https://about.gitlab.com/pt-br/topics/ci-cd/",[]," do GitLab, resultando em um processo de implantação de detecções no SIEM mais simples e seguro.",[773,774,776],"h3",{"id":775},"principais-componentes-do-pipeline-de-dac-do-guard","Principais componentes do pipeline de DaC do GUARD",[730,778,779],{},[780,781,782],"strong",{},"1. Detecções armazenadas em formato JSON em um projeto GitLab",[730,784,785],{},"O GitLab usa o formato JSON para as nossas detecções de ameaças. O template inclui informações essenciais, como a lógica de consulta ao SIEM, o título e a descrição da detecção, além do link para a página do runbook, a tática e a técnica MITRE relacionadas à detecção e outros detalhes necessários.",[730,787,788],{},[780,789,790],{},"2. Iniciando merge requests",[730,792,793],{},"Quando um membro do time do GitLab pretende criar uma nova detecção de ameaça, atualizar uma detecção já existente ou excluir uma detecção atual, o processo começa com o envio de uma merge request - MR no projeto de DaC, contendo o template JSON da detecção. A criação da MR dispara automaticamente um pipeline de CI/CD.",[730,795,796],{},[780,797,798],{},"3. Validação automatizada com jobs de CI/CD",[730,800,801],{},"Cada MR passa por uma série de verificações automatizadas por meio do GitLab CI/CD:",[803,804,805,809,812,815],"ul",{},[806,807,808],"li",{},"A validação do formato da consulta faz uma chamada à API do SIEM para garantir que a consulta de detecção seja válida.",[806,810,811],{},"A validação dos campos JSON da detecção confirma que todos os campos obrigatórios estão presentes e no formato correto.",[806,813,814],{},"Novas detecções e modificações em detecções disparam uma série de chamadas à API do SIEM para garantir que a detecção não tenha erros e que nenhum problema seja introduzido nas nossas regras de detecção em produção.",[806,816,817],{},"MRs de exclusão de detecção disparam o pipeline para fazer uma consulta à API do SIEM, garantindo que a detecção a ser excluída ainda esteja ativa e possa realmente ser removida.",[730,819,820],{},[780,821,822],{},"4. Revisão por pares e aprovação",[730,824,825,826,831],{},"Quando o job de uma MR de detecção é concluído com sucesso, uma revisão por pares é exigida para confirmar que a MR atende aos padrões de qualidade e conteúdo exigidos antes que ela possa ser mesclada. As ",[737,827,830],{"href":828,"rel":829},"https://docs.gitlab.com/user/project/merge_requests/approvals/rules/",[],"regras de aprovação de merge request"," são usadas para disparar o processo de revisão por pares.",[730,833,834],{},[780,835,836],{},"5. Merge e implantação final",[730,838,839,840,845],{},"Depois que a MR é aprovada, ela é mesclada na branch principal. Como parte do ",[737,841,844],{"href":842,"rel":843},"https://about.gitlab.com/pt-br/blog/getting-started-with-gitlab-understanding-ci-cd/",[],"pipeline de CI/CD",", um job automatizado executa um comando na API do SIEM para realizar duas tarefas:",[803,847,848,851],{},[806,849,850],{},"Criar a nova detecção ou atualizar/excluir a detecção existente, conforme necessário.",[806,852,853],{},"Extrair as informações de tática e técnica do MITRE ATT&CK relacionadas ao alerta a partir dos arquivos JSON e enviá-las para uma tabela de referência dentro do SIEM. Essa tabela de referência tem um papel importante ao mapear nossos alertas às táticas e técnicas do MITRE, ajudando a melhorar a nossa análise de ameaças e a identificar lacunas nas nossas capacidades de detecção, em alinhamento com o framework MITRE.",[730,855,856,859,860,865],{},[780,857,858],{},"Observação:"," as credenciais necessárias para essas ações ficam armazenadas com segurança em ",[737,861,864],{"href":862,"rel":863},"https://docs.gitlab.com/ci/variables/",[],"variáveis de CI/CD",", o que garante que o processo permaneça confidencial e seguro.",[730,867,868,869,873],{},"Veja abaixo um arquivo de configuração ",[870,871,872],"code",{},"gitlab-ci.yml"," de exemplo para um pipeline de DaC no GitLab CI/CD:",[875,876,882],"pre",{"className":877,"code":879,"language":880,"meta":881},[878],"language-text","\n\n#\n---------------------------------------------------------------------------\n#\n\n# GitLab CI/CD Pipeline for SIEM Detection Management\n\n#\n---------------------------------------------------------------------------\n#\n\n\nimage: python:3.12\n\n\n#\n---------------------------------------------------------------------------\n#\n\n# Global Configuration\n\n#\n---------------------------------------------------------------------------\n#\n\n\nbefore_script:\n  - apt-get update && apt-get install -y jq\n  - pip install --upgrade pip\n  - pip install -r requirements.txt\n\n#\n---------------------------------------------------------------------------\n#\n\n\nstages:\n  - fetch\n  - test\n  - process\n  - upload\n\n#\n---------------------------------------------------------------------------\n#\n\n# Fetch Stage\n\n#\n---------------------------------------------------------------------------\n#\n\n\nfetch_changed_files:\n  stage: fetch\n  Script:\n    - echo \"Fetching changed files...\"\n    - git branch\n    - git fetch origin $CI_DEFAULT_BRANCH:$CI_DEFAULT_BRANCH --depth 2000\n    - |\n      if [[ \"$CI_COMMIT_BRANCH\" == \"$CI_DEFAULT_BRANCH\" ]]; then\n        git diff --name-status HEAD^1...HEAD > changed-files-temp.txt\n      else\n        git fetch origin $CI_COMMIT_BRANCH:$CI_COMMIT_BRANCH --depth 2000\n        git diff --name-status ${CI_DEFAULT_BRANCH}...${CI_COMMIT_SHA} > changed-files-temp.txt\n      fi\n    - grep -E '\\.json$' changed-files-temp.txt > changed-files.txt || true\n    - flake8 .\n    - pytest\n  artifacts:\n    paths:\n      - changed-files.txt\n    expose_as: 'changed_files'\n\n#\n---------------------------------------------------------------------------\n#\n\n# Test Stage\n\n#\n---------------------------------------------------------------------------\n#\n\n\nflake8:\n  stage: test\n  script:\n    - echo \"Running Flake8 for linting...\"\n    - flake8 .\n\npytest:\n  stage: test\n  script:\n    - echo \"Running Pytest for unit tests...\"\n    - pytest\n  artifacts:\n    when: always\n    reports:\n      junit: report.xml\n\n#\n---------------------------------------------------------------------------\n#\n\n# Process Stage\n\n#\n---------------------------------------------------------------------------\n#\n\n\nprocess_files:\n  stage: process\n  script:\n    - echo \"Processing changed files...\"\n    - git clone --depth 2000 --branch $CI_DEFAULT_BRANCH $CI_REPOSITORY_URL\n    - mkdir -p modified_rules delete_file new_file\n    - python3 move-files.py -x changed-files.txt\n    - python3 check-alerts-format.py\n  artifacts:\n    paths:\n      - modified_rules\n      - delete_file\n      - new_file\n#\n---------------------------------------------------------------------------\n#\n\n# Upload Stage\n\n#\n---------------------------------------------------------------------------\n#\n\n\nupdate_rules:\n  stage: upload\n  script:\n    - echo \"Uploading updated rules and lookup tables...\"\n    - git fetch origin $CI_DEFAULT_BRANCH:$CI_DEFAULT_BRANCH --depth 2000\n    - git clone --depth 2000 --branch $CI_DEFAULT_BRANCH $CI_REPOSITORY_URL \n    - python3 update-rules.py\n    - python3 update-exceptions.py\n    - python3 create_ttps_layers.py\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_PIPELINE_SOURCE != \"schedule\"\n      changes:\n        - detections/**/*\n        - exceptions/**/*\n","text","",[870,883,879],{"__ignoreMap":881},[730,885,886],{},"O diagrama abaixo ilustra o fluxo de trabalho do processo de CI/CD que foi descrito acima.",[875,888,892],{"className":889,"code":890,"language":891,"meta":881,"style":881},"language-mermaid shiki shiki-themes github-light","\ngraph TD;\n    fetch[Etapa de busca: identificar arquivos alterados] --> test[Etapa de teste: executar linting e testes];\n    test --> process[Etapa de processamento: categorizar arquivos];\n    process --> upload[Etapa de upload: atualizar regras e tabelas de referência];\n    fetch --> fetch_details[Detalhes: filtrar arquivos JSON, gerar o arquivo 'changed-files.txt'];\n    test --> test_details[Detalhes: executar Flake8 para linting, Pytest para testes];\n    process --> process_details[Detalhes: categorizar em 'modified', 'new', 'deleted', preparar para upload];\n    upload --> upload_details[Detalhes: atualizar o repositório, atualizar detecções no SIEM e na tabela de referência do SIEM];\n","mermaid",[870,893,894,902,908,914,920,926,932,938,944],{"__ignoreMap":881},[895,896,899],"span",{"class":897,"line":898},"line",1,[895,900,901],{"emptyLinePlaceholder":9},"\n",[895,903,904],{"class":897,"line":720},[895,905,907],{"class":906},"sgsFI","graph TD;\n",[895,909,911],{"class":897,"line":910},3,[895,912,913],{"class":906},"    fetch[Etapa de busca: identificar arquivos alterados] --> test[Etapa de teste: executar linting e testes];\n",[895,915,917],{"class":897,"line":916},4,[895,918,919],{"class":906},"    test --> process[Etapa de processamento: categorizar arquivos];\n",[895,921,923],{"class":897,"line":922},5,[895,924,925],{"class":906},"    process --> upload[Etapa de upload: atualizar regras e tabelas de referência];\n",[895,927,929],{"class":897,"line":928},6,[895,930,931],{"class":906},"    fetch --> fetch_details[Detalhes: filtrar arquivos JSON, gerar o arquivo 'changed-files.txt'];\n",[895,933,935],{"class":897,"line":934},7,[895,936,937],{"class":906},"    test --> test_details[Detalhes: executar Flake8 para linting, Pytest para testes];\n",[895,939,941],{"class":897,"line":940},8,[895,942,943],{"class":906},"    process --> process_details[Detalhes: categorizar em 'modified', 'new', 'deleted', preparar para upload];\n",[895,945,947],{"class":897,"line":946},9,[895,948,949],{"class":906},"    upload --> upload_details[Detalhes: atualizar o repositório, atualizar detecções no SIEM e na tabela de referência do SIEM];\n",[747,951,953],{"id":952},"benefícios-e-resultados","Benefícios e resultados",[730,955,956],{},"A automatização do ciclo de vida de detecções de ameaças, por meio de um fluxo de trabalho de DaC baseado em CI/CD, traz uma série de benefícios ao nosso processo de implantação:",[803,958,959,962,965,968,971],{},[806,960,961],{},"Automação: automatizar a criação e a validação das detecções no SIEM reduz a ocorrência de erros manuais e economiza tempo.",[806,963,964],{},"Segurança reforçada: o fluxo de trabalho orientado por CI aplica uma política de \"privilégio mínimo\", garantindo consistência, revisões por pares e padrões de qualidade na criação, atualização ou exclusão de detecções de ameaças.",[806,966,967],{},"Eficiência: o formato JSON padronizado para detecções e a criação automatizada agilizam o processo de implantação.",[806,969,970],{},"Colaboração: o processo de MR e revisão fomenta a colaboração e o compartilhamento de conhecimento entre os membros do time do GitLab.",[806,972,973],{},"Controle de versão: tratar a detecção de ameaças como código abstrai as detecções da plataforma SIEM em que estão armazenadas. Essa abstração fornece um histórico de alterações, facilita a colaboração e permite fazer rollback para configurações anteriores caso surjam problemas.",[747,975,977],{"id":976},"comece-a-usar-o-dac","Comece a usar o DaC",[730,979,980,981,742],{},"Usar o GitLab CI/CD ao mesmo tempo em que existe uma política de \"privilégio mínimo\" tornou o gerenciamento de detecções e alertas do nosso SIEM mais simples e seguro. A automação melhorou a eficiência e reduziu riscos, servindo como um exemplo útil para quem também quer aprimorar sua segurança e conformidade. Faça este tutorial usando um ",[737,982,985],{"href":983,"rel":984},"https://about.gitlab.com/pt-br/free-trial/",[],"teste gratuito do GitLab Ultimate",[987,988,989],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}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);}",{"title":881,"searchDepth":720,"depth":720,"links":991},[992,993,996,997],{"id":749,"depth":720,"text":750},{"id":762,"depth":720,"text":763,"children":994},[995],{"id":775,"depth":910,"text":776},{"id":952,"depth":720,"text":953},{"id":976,"depth":720,"text":977},"2025-01-29","Descubra como o GUARD automatiza a detecção de ameaças cibernéticas usando\no GitLab CI/CD e como isso garante mais segurança.","md","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663239/Blog/Hero%20Images/AdobeStock_1023776629.jpg",{},"/pt-br/blog/automating-cybersecurity-threat-detections-with-gitlab-ci-cd",{"ogTitle":723,"ogImage":1001,"ogDescription":999,"ogSiteName":1005,"noIndex":11,"ogType":1006,"ogUrl":1007,"title":723,"canonicalUrls":1007,"description":999},"https://about.gitlab.com","article","https://about.gitlab.com/pt-br/blog/automating-cybersecurity-threat-detections-with-gitlab-ci-cd","automating-cybersecurity-threat-detections-with-gitlab-ci-cd","pt-br/blog/automating-cybersecurity-threat-detections-with-gitlab-ci-cd",[1011,1012,574,1013,60],"security","tutorial","DevSecOps platform","BlogPost","EpS14vDIoho9pQx8eS0PtJhQXlRvAS0sSDPgVMs-y9Q",[1017],{"title":1018,"heroImage":1019,"category":10,"description":1020,"authors":1021,"slug":1025,"externalUrl":6},"Apresentando o framework GUARD para automatizar detecções de segurança no GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659684/Blog/Hero%20Images/AdobeStock_479904468__1_.jpg","O framework GitLab Universal Automated Response and Detection (GUARD) abrange criação, manutenção, roteamento e tratamento de alertas, coleta avançada de métricas e muito mais.",[1022,1023,1024],"Harjeet Sharma","Valentine Mairet","Matt Coons","unveiling-the-guard-framework-to-automate-security-detections-at-gitlab",1791944949133]