[{"data":1,"prerenderedAt":1015},["ShallowReactive",2],{"/pt-br/blog/categories/security-labs":3,"navigation-pt-br":23,"banner-pt-br":449,"footer-pt-br":456,"security-labs-category-page-total-items-pt-br":709,"security-labs-category-page-featured-pt-br":710,"security-labs-category-page-1-pt-br":1005},{"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":365,"minimal":400,"duo":419,"switchNav":428,"pricingDeployment":439},{"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,121,209,214,289,343],{"text":46,"left":9,"config":47,"menu":49},"Plataforma",{"dataNavLevelOne":48},"platform",{"type":50,"link":51,"columns":55,"feature":110},"lists",{"text":52,"config":53},"Conheça a plataforma",{"href":54,"dataGaName":48,"dataGaLocation":28},"/pt-br/platform/",[56,74,92],{"title":57,"items":58},"Execução e fluxos de trabalho",[59,64,69],{"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",{"title":75,"items":76},"Segurança e governança",[77,82,87],{"text":78,"config":79},"Testes de segurança de aplicações",{"href":80,"dataGaLocation":28,"dataGaName":81},"/pt-br/solutions/application-security-testing/","application security testing",{"text":83,"config":84},"Governança e conformidade",{"href":85,"dataGaLocation":28,"dataGaName":86},"/pt-br/solutions/software-compliance/","governance and compliance",{"text":88,"config":89},"Segurança da cadeia de suprimentos",{"href":90,"dataGaLocation":28,"dataGaName":91},"/pt-br/solutions/supply-chain/","supply chain security",{"title":93,"items":94},"Contexto e IA",[95,100,105],{"text":96,"config":97},"Orquestração agêntica",{"href":98,"dataGaLocation":28,"dataGaName":99},"/pt-br/gitlab-duo-agent-platform/","agentic orchestration",{"text":101,"config":102},"Grafo de contexto",{"href":103,"dataGaLocation":28,"dataGaName":104},"/pt-br/gitlab-orbit/","context graph",{"text":106,"config":107},"Visibilidade e métricas",{"href":108,"dataGaLocation":28,"dataGaName":109},"/pt-br/solutions/visibility-measurement/","visibility and measurement",{"config":111,"title":114,"text":115,"link":116},{"background":112,"textColor":113},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Por que escolher o GitLab?","Uma plataforma única que oferece velocidade e controle em todo o ciclo de vida do seu software.",{"text":117,"config":118},"Saiba mais",{"href":119,"dataGaName":120,"dataGaLocation":28},"/pt-br/why-gitlab/","why gitlab",{"text":122,"left":9,"config":123,"menu":125},"Soluções",{"dataNavLevelOne":124},"solutions",{"type":50,"link":126,"columns":130,"feature":200},{"text":127,"config":128},"Confira todas as soluções",{"href":129,"dataGaName":124,"dataGaLocation":28},"/pt-br/solutions/",[131,149,167],{"title":132,"items":133},"Resultados",[134,139,144],{"text":135,"config":136},"Modernização de DevOps",{"href":137,"dataGaLocation":28,"dataGaName":138},"/pt-br/assessments/devops-modernization-assessment/","devops modernization",{"text":140,"config":141},"Modernização da segurança",{"href":142,"dataGaLocation":28,"dataGaName":143},"/pt-br/assessments/security-modernization-assessment/","security modernization",{"text":145,"config":146},"Modernização da IA",{"href":147,"dataGaLocation":28,"dataGaName":148},"/pt-br/assessments/ai-modernization-assessment/","ai modernization",{"title":150,"items":151},"Por tamanho",[152,157,162],{"text":153,"config":154},"Enterprise",{"href":155,"dataGaLocation":28,"dataGaName":156},"/pt-br/enterprise/","enterprise",{"text":158,"config":159},"Pequenas empresas",{"href":160,"dataGaLocation":28,"dataGaName":161},"/pt-br/small-business/","small business",{"text":163,"config":164},"Start-ups",{"href":165,"dataGaLocation":28,"dataGaName":166},"/pt-br/solutions/startups/","startups",{"title":168,"items":169},"Indústrias",[170,175,180,185,190,195],{"text":171,"config":172},"Serviços financeiros",{"href":173,"dataGaLocation":28,"dataGaName":174},"/pt-br/solutions/finance/","financial services",{"text":176,"config":177},"Setor público",{"href":178,"dataGaLocation":28,"dataGaName":179},"/pt-br/solutions/public-sector/","public sector",{"text":181,"config":182},"Telecomunicações",{"href":183,"dataGaLocation":28,"dataGaName":184},"/pt-br/solutions/telecommunications/","telecommunications",{"text":186,"config":187},"Serviços automotivos",{"href":188,"dataGaLocation":28,"dataGaName":189},"/pt-br/solutions/automotive/","automotive",{"text":191,"config":192},"Educação",{"href":193,"dataGaLocation":28,"dataGaName":194},"/pt-br/solutions/education/","education",{"text":196,"config":197},"Setor aeroespacial",{"href":198,"dataGaLocation":28,"dataGaName":199},"/pt-br/solutions/aerospace/","aerospace",{"config":201,"title":202,"text":203,"link":204},{"background":112,"textColor":113},"GitLab Transcend","Confira nossas inovações mais recentes, anunciadas no último Transcend.",{"text":205,"config":206},"Acesse o blog",{"href":207,"dataGaName":208,"dataGaLocation":28},"/blog/gitlab-transcend-announcements/","gitlab transcend",{"text":210,"config":211},"Preços",{"href":212,"dataGaName":213,"dataGaLocation":28,"dataNavLevelOne":213},"/pt-br/pricing/","pricing",{"text":215,"config":216,"menu":218},"Recursos",{"dataNavLevelOne":217},"resources",{"type":50,"link":219,"columns":223,"feature":280},{"text":220,"config":221},"Confira todos os recursos",{"href":222,"dataGaName":217,"dataGaLocation":28},"/pt-br/resources/",[224,252],{"title":225,"items":226},"Descubra",[227,232,237,242,247],{"text":228,"config":229},"Documentação",{"href":230,"dataGaName":231,"dataGaLocation":28},"https://docs.gitlab.com/","docs",{"text":233,"config":234},"University",{"href":235,"dataGaName":236,"dataGaLocation":28},"https://university.gitlab.com/","university",{"text":238,"config":239},"Demo Series",{"href":240,"dataGaName":241,"dataGaLocation":28},"/pt-br/gitlab-technical-demo-series/","demo series",{"text":243,"config":244},"Demo Hub",{"href":245,"dataGaName":246,"dataGaLocation":28},"/pt-br/demo-hub/","demo hub",{"text":248,"config":249},"Serviços",{"href":250,"dataGaName":251,"dataGaLocation":28},"/pt-br/services/","services",{"title":253,"items":254},"Conecte-se",[255,260,265,270,275],{"text":256,"config":257},"Blog",{"href":258,"dataGaName":259,"dataGaLocation":28},"/blog/","blog",{"text":261,"config":262},"Comunidade",{"href":263,"dataGaName":264,"dataGaLocation":28},"/community/","community",{"text":266,"config":267},"Clientes",{"href":268,"dataGaName":269,"dataGaLocation":28},"/pt-br/customers/","customers",{"text":271,"config":272},"Parceiros",{"href":273,"dataGaName":274,"dataGaLocation":28},"/pt-br/partners/","partners",{"text":276,"config":277},"Eventos",{"href":278,"dataGaName":279,"dataGaLocation":28},"/events/","events",{"config":281,"title":282,"text":283,"link":284},{"background":112,"textColor":113},"Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":285,"config":286},"Confira as novidades",{"href":287,"dataGaName":288,"dataGaLocation":28},"/pt-br/whats-new/","whats new",{"text":290,"config":291,"menu":293},"Empresa",{"dataNavLevelOne":292},"company",{"type":50,"columns":294},[295],{"items":296},[297,302,308,313,318,323,328,333,338],{"text":298,"config":299},"Sobre",{"href":300,"dataGaName":301,"dataGaLocation":28},"/pt-br/company/","about",{"text":303,"config":304,"footerGa":307},"Vagas",{"href":305,"dataGaName":306,"dataGaLocation":28},"/jobs/","jobs",{"dataGaName":306},{"text":309,"config":310},"Imprensa",{"href":311,"dataGaName":312,"dataGaLocation":28},"/press/","press",{"text":314,"config":315},"Manual",{"href":316,"dataGaName":317,"dataGaLocation":28},"https://handbook.gitlab.com/","handbook",{"text":319,"config":320},"Liderança",{"href":321,"dataGaName":322,"dataGaLocation":28},"/company/team/e-group/","leadership",{"text":324,"config":325},"Relações com investidores",{"href":326,"dataGaName":327,"dataGaLocation":28},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":329,"config":330},"Trust Center",{"href":331,"dataGaName":332,"dataGaLocation":28},"/pt-br/security/","trust center",{"text":334,"config":335},"AI Transparency Center",{"href":336,"dataGaName":337,"dataGaLocation":28},"/pt-br/ai-transparency-center/","ai transparency center",{"text":339,"config":340},"Boletim informativo",{"href":341,"dataGaName":342,"dataGaLocation":28},"/company/contact/#contact-forms","newsletter",{"text":344,"config":345,"menu":346},"Entre em contato",{"dataNavLevelOne":292},{"type":50,"columns":347},[348],{"items":349},[350,355,360],{"text":351,"config":352},"Fale com a equipe de vendas",{"href":353,"dataGaName":354,"dataGaLocation":28},"/pt-br/sales/","talk to sales",{"text":356,"config":357},"Portal de ajuda",{"href":358,"dataGaName":359,"dataGaLocation":28},"https://support.gitlab.com/hc/en-us","support portal",{"text":361,"config":362},"Portal de clientes",{"href":363,"dataGaName":364,"dataGaLocation":28},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":366,"login":367,"suggestions":374},"Fechar",{"text":368,"link":369},"Para pesquisar repositórios e projetos, faça login em",{"text":370,"config":371},"gitlab.com",{"href":42,"dataGaName":372,"dataGaLocation":373},"search login","search",{"text":375,"default":376},"Sugestões",[377,380,385,387,392,397],{"text":378,"config":379},"GitLab Duo Agent Platform",{"href":98,"dataGaName":378,"dataGaLocation":373},{"text":381,"config":382},"Sugestões de código (AI)",{"href":383,"dataGaName":384,"dataGaLocation":373},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":60,"config":386},{"href":62,"dataGaName":60,"dataGaLocation":373},{"text":388,"config":389},"GitLab na AWS",{"href":390,"dataGaName":391,"dataGaLocation":373},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":393,"config":394},"GitLab no Google Cloud",{"href":395,"dataGaName":396,"dataGaLocation":373},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":114,"config":398},{"href":119,"dataGaName":399,"dataGaLocation":373},"Why GitLab?",{"freeTrial":401,"mobileIcon":406,"desktopIcon":411,"secondaryButton":414},{"text":402,"config":403},"Iniciar avaliação gratuita",{"href":404,"dataGaName":33,"dataGaLocation":405},"https://gitlab.com/-/trials/new/","nav",{"altText":407,"config":408},"Ícone do GitLab",{"src":409,"dataGaName":410,"dataGaLocation":405},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":407,"config":412},{"src":413,"dataGaName":410,"dataGaLocation":405},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":415,"config":416},"Primeiros passos",{"href":417,"dataGaName":418,"dataGaLocation":405},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":420,"mobileIcon":424,"desktopIcon":426},{"text":421,"config":422},"Saiba mais sobre o GitLab Duo",{"href":98,"dataGaName":423,"dataGaLocation":405},"gitlab duo",{"altText":407,"config":425},{"src":409,"dataGaName":410,"dataGaLocation":405},{"altText":407,"config":427},{"src":413,"dataGaName":410,"dataGaLocation":405},{"button":429,"mobileIcon":434,"desktopIcon":436},{"text":430,"config":431},"/switch",{"href":432,"dataGaName":433,"dataGaLocation":405},"#contact","switch",{"altText":407,"config":435},{"src":409,"dataGaName":410,"dataGaLocation":405},{"altText":407,"config":437},{"src":438,"dataGaName":410,"dataGaLocation":405},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":440,"mobileIcon":445,"desktopIcon":447},{"text":441,"config":442},"Voltar para preços",{"href":212,"dataGaName":443,"dataGaLocation":405,"icon":444},"back to pricing","GoBack",{"altText":407,"config":446},{"src":409,"dataGaName":410,"dataGaLocation":405},{"altText":407,"config":448},{"src":413,"dataGaName":410,"dataGaLocation":405},{"title":450,"button":451,"config":454},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":117,"config":452},{"href":103,"dataGaName":453,"dataGaLocation":28},"orbit",{"layout":455,"disabled":11},"release",{"data":457},{"text":458,"source":459,"edit":465,"contribute":470,"config":475,"items":480,"minimal":698},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":460,"config":461},"Ver a origem da página",{"href":462,"dataGaName":463,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":466,"config":467},"Editar esta página",{"href":468,"dataGaName":469,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":471,"config":472},"Contribua",{"href":473,"dataGaName":474,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":476,"facebook":477,"youtube":478,"linkedin":479},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[481,527,582,624,665],{"title":210,"links":482,"subMenu":497},[483,487,492],{"text":484,"config":485},"Confira os planos",{"href":212,"dataGaName":486,"dataGaLocation":464},"view plans",{"text":488,"config":489},"Por que escolher o GitLab Premium?",{"href":490,"dataGaName":491,"dataGaLocation":464},"/pt-br/pricing/premium/","why premium",{"text":493,"config":494},"Por que escolher o GitLab Ultimate?",{"href":495,"dataGaName":496,"dataGaLocation":464},"/pt-br/pricing/ultimate/","why ultimate",[498],{"title":499,"links":500},"Entre em contato conosco",[501,503,505,507,512,517,522],{"text":351,"config":502},{"href":353,"dataGaName":38,"dataGaLocation":464},{"text":356,"config":504},{"href":358,"dataGaName":359,"dataGaLocation":464},{"text":361,"config":506},{"href":363,"dataGaName":364,"dataGaLocation":464},{"text":508,"config":509},"Status",{"href":510,"dataGaName":511,"dataGaLocation":464},"https://status.gitlab.com/","status",{"text":513,"config":514},"Termos de uso",{"href":515,"dataGaName":516,"dataGaLocation":464},"/terms/","terms of use",{"text":518,"config":519},"Aviso de privacidade",{"href":520,"dataGaName":521,"dataGaLocation":464},"/pt-br/privacy/","privacy statement",{"text":523,"config":524},"Preferências de cookies",{"dataGaName":525,"dataGaLocation":464,"id":526,"isOneTrustButton":9},"cookie preferences","ot-sdk-btn",{"title":46,"links":528,"subMenu":539},[529,531,533,535,537],{"text":52,"config":530},{"href":54,"dataGaName":48,"dataGaLocation":464},{"text":96,"config":532},{"href":98,"dataGaName":99,"dataGaLocation":464},{"text":60,"config":534},{"href":62,"dataGaName":63,"dataGaLocation":464},{"text":101,"config":536},{"href":103,"dataGaName":104,"dataGaLocation":464},{"text":114,"config":538},{"href":119,"dataGaName":120,"dataGaLocation":464},[540],{"title":541,"links":542},"Tópicos",[543,547,552,557,562,567,572,577],{"text":60,"config":544},{"href":545,"dataGaName":546,"dataGaLocation":464},"/pt-br/topics/ci-cd/","cicd",{"text":548,"config":549},"GitOps",{"href":550,"dataGaName":551,"dataGaLocation":464},"/pt-br/topics/gitops/","gitops",{"text":553,"config":554},"DevOps",{"href":555,"dataGaName":556,"dataGaLocation":464},"/pt-br/topics/devops/","devops",{"text":558,"config":559},"Controle de versão",{"href":560,"dataGaName":561,"dataGaLocation":464},"/pt-br/topics/version-control/","version control",{"text":563,"config":564},"DevSecOps",{"href":565,"dataGaName":566,"dataGaLocation":464},"/pt-br/topics/devsecops/","devsecops",{"text":568,"config":569},"De nuvem nativa",{"href":570,"dataGaName":571,"dataGaLocation":464},"/pt-br/topics/cloud-native/","cloud native",{"text":573,"config":574},"IA para programação",{"href":575,"dataGaName":576,"dataGaLocation":464},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":578,"config":579},"IA agêntica",{"href":580,"dataGaName":581,"dataGaLocation":464},"/pt-br/topics/agentic-ai/","agentic ai",{"title":122,"links":583},[584,586,588,590,592,594,596,598,600,602,604,606,608,611,615,620],{"text":135,"config":585},{"href":137,"dataGaName":138,"dataGaLocation":464},{"text":140,"config":587},{"href":142,"dataGaName":143,"dataGaLocation":464},{"text":145,"config":589},{"href":147,"dataGaName":148,"dataGaLocation":464},{"text":171,"config":591},{"href":173,"dataGaName":174,"dataGaLocation":464},{"text":176,"config":593},{"href":178,"dataGaName":179,"dataGaLocation":464},{"text":181,"config":595},{"href":183,"dataGaName":184,"dataGaLocation":464},{"text":186,"config":597},{"href":188,"dataGaName":189,"dataGaLocation":464},{"text":191,"config":599},{"href":193,"dataGaName":194,"dataGaLocation":464},{"text":196,"config":601},{"href":198,"dataGaName":199,"dataGaLocation":464},{"text":153,"config":603},{"href":155,"dataGaName":156,"dataGaLocation":464},{"text":158,"config":605},{"href":160,"dataGaName":161,"dataGaLocation":464},{"text":163,"config":607},{"href":165,"dataGaName":166,"dataGaLocation":464},{"text":548,"config":609},{"href":610,"dataGaName":551,"dataGaLocation":464},"/pt-br/solutions/gitops/",{"text":612,"config":613},"Análise de composição de software",{"href":90,"dataGaName":614,"dataGaLocation":464},"software composition analysis",{"text":616,"config":617},"Gestão de fluxo de valor do GitLab",{"href":618,"dataGaName":619,"dataGaLocation":464},"/pt-br/solutions/value-stream-management/","value stream management",{"text":621,"config":622},"Todas as soluções",{"href":129,"dataGaName":623,"dataGaLocation":464},"all solutions",{"title":215,"links":625},[626,631,636,638,640,642,644,646,648,650,652,654,656,658,661],{"text":627,"config":628},"Instalação",{"href":629,"dataGaName":630,"dataGaLocation":464},"/pt-br/install/","install",{"text":632,"config":633},"Guias de início rápido",{"href":634,"dataGaName":635,"dataGaLocation":464},"/pt-br/get-started/","quick setup checklists",{"text":228,"config":637},{"href":230,"dataGaName":231,"dataGaLocation":464},{"text":233,"config":639},{"href":235,"dataGaName":236,"dataGaLocation":464},{"text":238,"config":641},{"href":240,"dataGaName":241,"dataGaLocation":464},{"text":243,"config":643},{"href":245,"dataGaName":246,"dataGaLocation":464},{"text":248,"config":645},{"href":250,"dataGaName":251,"dataGaLocation":464},{"text":256,"config":647},{"href":258,"dataGaName":259,"dataGaLocation":464},{"text":261,"config":649},{"href":263,"dataGaName":264,"dataGaLocation":464},{"text":266,"config":651},{"href":268,"dataGaName":269,"dataGaLocation":464},{"text":271,"config":653},{"href":273,"dataGaName":274,"dataGaLocation":464},{"text":276,"config":655},{"href":278,"dataGaName":279,"dataGaLocation":464},{"text":339,"config":657},{"href":341,"dataGaName":342,"dataGaLocation":464},{"text":659,"config":660},"Novidades",{"href":287,"dataGaName":288,"dataGaLocation":464},{"text":662,"config":663},"Todos os recursos",{"href":222,"dataGaName":664,"dataGaLocation":464},"all resources",{"title":290,"links":666},[667,669,671,673,675,677,679,681,683,688,693],{"text":298,"config":668},{"href":300,"dataGaName":292,"dataGaLocation":464},{"text":303,"config":670},{"href":305,"dataGaName":306,"dataGaLocation":464},{"text":309,"config":672},{"href":311,"dataGaName":312,"dataGaLocation":464},{"text":314,"config":674},{"href":316,"dataGaName":317,"dataGaLocation":464},{"text":319,"config":676},{"href":321,"dataGaName":322,"dataGaLocation":464},{"text":324,"config":678},{"href":326,"dataGaName":327,"dataGaLocation":464},{"text":329,"config":680},{"href":331,"dataGaName":332,"dataGaLocation":464},{"text":334,"config":682},{"href":336,"dataGaName":337,"dataGaLocation":464},{"text":684,"config":685},"Sustentabilidade",{"href":686,"dataGaName":687,"dataGaLocation":464},"/sustainability/","Sustainability",{"text":689,"config":690},"Diversidade, inclusão e pertencimento (DIB)",{"href":691,"dataGaName":692,"dataGaLocation":464},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":694,"config":695},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":696,"dataGaName":697,"dataGaLocation":464},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":699},[700,703,706],{"text":701,"config":702},"Termos",{"href":515,"dataGaName":516,"dataGaLocation":464},{"text":704,"config":705},"Cookies",{"dataGaName":525,"dataGaLocation":464,"id":526,"isOneTrustButton":9},{"text":707,"config":708},"Privacidade",{"href":520,"dataGaName":521,"dataGaLocation":464},2,{"id":711,"title":712,"authors":713,"body":715,"category":10,"date":987,"description":988,"extension":989,"externalUrl":6,"faq":6,"featured":11,"heroImage":990,"meta":991,"navigation":9,"path":992,"seo":993,"slug":997,"stem":998,"tags":999,"template":1003,"updatedDate":6,"__hash__":1004},"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",[714],"Mitra Jozenazemian",{"type":716,"value":717,"toc":979},"minimark",[718,732,735,740,749,753,761,766,772,775,780,783,788,791,807,812,821,826,835,843,855,863,873,876,939,943,946,963,967,975],[719,720,721],"p",{},[722,723,724,725,731],"em",{},"Este post é o segundo de uma série sobre o ",[726,727,730],"a",{"href":728,"rel":729},"https://about.gitlab.com/pt-br/blog/unveiling-the-guard-framework-to-automate-security-detections-at-gitlab/",[],"GitLab Universal Automated Response and Detection (GUARD)",".",[719,733,734],{},"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.",[736,737,739],"h2",{"id":738},"o-problema-controle-de-versão-e-testes-automatizados","O problema: controle de versão e testes automatizados",[719,741,742,743,748],{},"Os times de Signals Engineering e ",[726,744,747],{"href":745,"rel":746},"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.",[736,750,752],{"id":751},"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",[719,754,755,756,760],{},"Para enfrentar esses desafios, desenvolvemos um fluxo de trabalho eficiente usando o ",[726,757,60],{"href":758,"rel":759},"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.",[762,763,765],"h3",{"id":764},"principais-componentes-do-pipeline-de-dac-do-guard","Principais componentes do pipeline de DaC do GUARD",[719,767,768],{},[769,770,771],"strong",{},"1. Detecções armazenadas em formato JSON em um projeto GitLab",[719,773,774],{},"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.",[719,776,777],{},[769,778,779],{},"2. Iniciando merge requests",[719,781,782],{},"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.",[719,784,785],{},[769,786,787],{},"3. Validação automatizada com jobs de CI/CD",[719,789,790],{},"Cada MR passa por uma série de verificações automatizadas por meio do GitLab CI/CD:",[792,793,794,798,801,804],"ul",{},[795,796,797],"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.",[795,799,800],{},"A validação dos campos JSON da detecção confirma que todos os campos obrigatórios estão presentes e no formato correto.",[795,802,803],{},"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.",[795,805,806],{},"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.",[719,808,809],{},[769,810,811],{},"4. Revisão por pares e aprovação",[719,813,814,815,820],{},"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 ",[726,816,819],{"href":817,"rel":818},"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.",[719,822,823],{},[769,824,825],{},"5. Merge e implantação final",[719,827,828,829,834],{},"Depois que a MR é aprovada, ela é mesclada na branch principal. Como parte do ",[726,830,833],{"href":831,"rel":832},"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:",[792,836,837,840],{},[795,838,839],{},"Criar a nova detecção ou atualizar/excluir a detecção existente, conforme necessário.",[795,841,842],{},"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.",[719,844,845,848,849,854],{},[769,846,847],{},"Observação:"," as credenciais necessárias para essas ações ficam armazenadas com segurança em ",[726,850,853],{"href":851,"rel":852},"https://docs.gitlab.com/ci/variables/",[],"variáveis de CI/CD",", o que garante que o processo permaneça confidencial e seguro.",[719,856,857,858,862],{},"Veja abaixo um arquivo de configuração ",[859,860,861],"code",{},"gitlab-ci.yml"," de exemplo para um pipeline de DaC no GitLab CI/CD:",[864,865,871],"pre",{"className":866,"code":868,"language":869,"meta":870},[867],"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","",[859,872,868],{"__ignoreMap":870},[719,874,875],{},"O diagrama abaixo ilustra o fluxo de trabalho do processo de CI/CD que foi descrito acima.",[864,877,881],{"className":878,"code":879,"language":880,"meta":870,"style":870},"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",[859,882,883,891,897,903,909,915,921,927,933],{"__ignoreMap":870},[884,885,888],"span",{"class":886,"line":887},"line",1,[884,889,890],{"emptyLinePlaceholder":9},"\n",[884,892,893],{"class":886,"line":709},[884,894,896],{"class":895},"sgsFI","graph TD;\n",[884,898,900],{"class":886,"line":899},3,[884,901,902],{"class":895},"    fetch[Etapa de busca: identificar arquivos alterados] --> test[Etapa de teste: executar linting e testes];\n",[884,904,906],{"class":886,"line":905},4,[884,907,908],{"class":895},"    test --> process[Etapa de processamento: categorizar arquivos];\n",[884,910,912],{"class":886,"line":911},5,[884,913,914],{"class":895},"    process --> upload[Etapa de upload: atualizar regras e tabelas de referência];\n",[884,916,918],{"class":886,"line":917},6,[884,919,920],{"class":895},"    fetch --> fetch_details[Detalhes: filtrar arquivos JSON, gerar o arquivo 'changed-files.txt'];\n",[884,922,924],{"class":886,"line":923},7,[884,925,926],{"class":895},"    test --> test_details[Detalhes: executar Flake8 para linting, Pytest para testes];\n",[884,928,930],{"class":886,"line":929},8,[884,931,932],{"class":895},"    process --> process_details[Detalhes: categorizar em 'modified', 'new', 'deleted', preparar para upload];\n",[884,934,936],{"class":886,"line":935},9,[884,937,938],{"class":895},"    upload --> upload_details[Detalhes: atualizar o repositório, atualizar detecções no SIEM e na tabela de referência do SIEM];\n",[736,940,942],{"id":941},"benefícios-e-resultados","Benefícios e resultados",[719,944,945],{},"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:",[792,947,948,951,954,957,960],{},[795,949,950],{},"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.",[795,952,953],{},"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.",[795,955,956],{},"Eficiência: o formato JSON padronizado para detecções e a criação automatizada agilizam o processo de implantação.",[795,958,959],{},"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.",[795,961,962],{},"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.",[736,964,966],{"id":965},"comece-a-usar-o-dac","Comece a usar o DaC",[719,968,969,970,731],{},"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 ",[726,971,974],{"href":972,"rel":973},"https://about.gitlab.com/pt-br/free-trial/",[],"teste gratuito do GitLab Ultimate",[976,977,978],"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":870,"searchDepth":709,"depth":709,"links":980},[981,982,985,986],{"id":738,"depth":709,"text":739},{"id":751,"depth":709,"text":752,"children":983},[984],{"id":764,"depth":899,"text":765},{"id":941,"depth":709,"text":942},{"id":965,"depth":709,"text":966},"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":712,"ogImage":990,"ogDescription":988,"ogSiteName":994,"noIndex":11,"ogType":995,"ogUrl":996,"title":712,"canonicalUrls":996,"description":988},"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",[1000,1001,563,1002,60],"security","tutorial","DevSecOps platform","BlogPost","EpS14vDIoho9pQx8eS0PtJhQXlRvAS0sSDPgVMs-y9Q",[1006],{"title":1007,"heroImage":1008,"category":10,"description":1009,"authors":1010,"slug":1014,"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.",[1011,1012,1013],"Harjeet Sharma","Valentine Mairet","Matt Coons","unveiling-the-guard-framework-to-automate-security-detections-at-gitlab",1790371248330]