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