[{"data":1,"prerenderedAt":1271},["ShallowReactive",2],{"/blog/security-gitlab-15":3,"navigation-en-us":487,"banner-en-us":914,"footer-en-us":924,"blog-post-authors-en-us-Fernando Diaz":1168,"blog-related-posts-en-us-security-gitlab-15":1183,"blog-promotions-en-us":1208,"next-steps-en-us":1261},{"id":4,"title":5,"authors":6,"body":8,"category":467,"date":468,"description":469,"extension":470,"externalUrl":471,"faq":471,"featured":472,"heroImage":473,"meta":474,"navigation":187,"path":475,"seo":476,"slug":481,"stem":482,"tags":483,"template":485,"updatedDate":471,"__hash__":486},"blogPosts/en-us/blog/security-gitlab-15.md","GitLab's commitment to enhanced application security in the modern DevOps world",[7],"Fernando Diaz",{"type":9,"value":10,"toc":455},"minimark",[11,15,18,28,31,39,42,48,58,63,66,69,175,178,188,192,195,250,253,256,263,266,270,273,276,281,284,328,332,335,341,344,347,353,356,362,366,369,378,384,393,398,406,415,421,429,432,446],[12,13,14],"p",{},"With GitLab 14, we saw deep emphasis on modernizing our\nDevOps capabilities. This modernization enabled enhanced application security and strenghtened collaboration between developers and security professionals.",[12,16,17],{},"We saw enhancments such as:",[19,20,21,25],"ul",{},[22,23,24],"li",{},"global rule registry and customization for policy requriements with\nsupport for separation of duties",[22,26,27],{},"a newly developed browser-based Dynamic Application Security Testing\n(DAST) scanner used to test and secure modern APIs and Single Page",[12,29,30],{},"Applications",[19,32,33,36],{},[22,34,35],{},"more support for different languages using Semgrep",[22,37,38],{},"new vulnerability management capabilities to increase visibility",[12,40,41],{},"With the GitLab 15 release, we can see how our commitment to enhancing application security across the board is stronger than ever. In this blog post, I will provide details on how GitLab is commited to enhancing not only security, but efficiency.",[43,44,45],"blockquote",{},[12,46,47],{},"Discover how GitLab 15 can help your team deliver secure software, while\nmaintaining compliance and automating manual processes.",[12,49,50,51,57],{},"Save the date for our GitLab 15 ",[52,53,56],"a",{"href":54,"rel":55},"https://page.gitlab.com/fifteen",[],"launch event"," on June 23rd!",[59,60,62],"h2",{"id":61},"gitlab-15-security-features","GitLab 15 security features",[12,64,65],{},"We see that with every GitLab release, there are plenty of enhancements to our security tools.",[12,67,68],{},"GitLab 15 is no exception! We can see a boatload 🚢 of security enhacements released in GitLab 15 below:",[19,70,71,78,81,88,95,102,109,116,123,130,133,140,147,154,161,168],{},[22,72,73],{},[52,74,77],{"href":75,"rel":76},"https://docs.gitlab.com/user/application_security/container_scanning/#capabilities",[],"Container Scanning available in all\ntiers",[22,79,80],{},"Audit changes to group IP\nallowlist",[22,82,83],{},[52,84,87],{"href":85,"rel":86},"https://docs.gitlab.com/api/personal_access_tokens/#using-a-request-header",[],"Revoke a personal access token without PAT\nID",[22,89,90],{},[52,91,94],{"href":92,"rel":93},"https://docs.gitlab.com/ci/secure_files/",[],"Project-level Secure Files in open\nbeta",[22,96,97],{},[52,98,101],{"href":99,"rel":100},"https://docs.gitlab.com/user/application_security/dependency_scanning/#supported-languages-and-package-managers",[],"Dependency scanning support for poetry.lock\nfiles",[22,103,104],{},[52,105,108],{"href":106,"rel":107},"https://docs.gitlab.com/user/application_security/sast/analyzers/#transition-to-semgrep-based-scanning",[],"Semgrep-based Static Application Security Testing (SAST) scanning\navailable for early adoption",[22,110,111],{},[52,112,115],{"href":113,"rel":114},"https://docs.gitlab.com/ci/yaml/#environmentaction",[],"Access and Verify actions for\nenvironments",[22,117,118],{},[52,119,122],{"href":120,"rel":121},"https://docs.gitlab.com/user/infrastructure/iac/#integrate-your-project-with-terraform",[],"Terraform CI/CD template authenticates to Terraform module\nregistry",[22,124,125],{},[52,126,129],{"href":127,"rel":128},"https://docs.gitlab.com/user/application_security/container_scanning/#vulnerabilities-database",[],"GitLab advisory data included in container scanning\nresults",[22,131,132],{},"New audit events for merge\nsettings",[22,134,135],{},[52,136,139],{"href":137,"rel":138},"https://docs.gitlab.com/user/permissions/",[],"Users with the Reporter role can manage iterations and\nmilestones",[22,141,142],{},[52,143,146],{"href":144,"rel":145},"https://docs.gitlab.com/user/application_security/dependency_list/#dependency-paths",[],"Dependency path\ninformation",[22,148,149],{},[52,150,153],{"href":151,"rel":152},"https://docs.gitlab.com/user/application_security/",[],"Secure and Protect analyzer major version\nupdate",[22,155,156],{},[52,157,160],{"href":158,"rel":159},"https://docs.gitlab.com/user/application_security/sast/analyzers/",[],"Static Analysis analyzer\nupdates",[22,162,163],{},[52,164,167],{"href":165,"rel":166},"https://docs.gitlab.com/ci/environments/deployment_approvals/",[],"Approve deployments from the Environments detail\npage",[22,169,170],{},[52,171,174],{"href":172,"rel":173},"https://docs.gitlab.com/user/project/merge_requests/approvals/rules/#security-approvals",[],"Scan result policies listed under MR approval\nsettings",[12,176,177],{},"These features run across different stages of the software development lifecycle. I have created a video showing some of the coolest new security features in GitLab 15:",[179,180],"iframe",{"width":181,"height":182,"src":183,"title":184,"frameBorder":185,"allow":186,"allowFullScreen":187},560,315,"https://www.youtube.com/embed/BasGVNvOFGo","YouTube video player","0","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",true,[59,189,191],{"id":190},"scanners-moved-to-gitlab-free-tier","Scanners moved to GitLab Free Tier",[12,193,194],{},"A lot of our scanners were only part of GitLab Ultimate in the past.\nHowever, over time, certain scanners have been moved over to GitLab Free Tier, enabling you to enhance the security of your application no matter what tier of GitLab you are using.",[196,197,198,214],"table",{},[199,200,201],"thead",{},[202,203,204,208,211],"tr",{},[205,206,207],"th",{},"Scanner",[205,209,210],{},"Introduced",[205,212,213],{},"Moved to Free",[215,216,217,229,240],"tbody",{},[202,218,219,223,226],{},[220,221,222],"td",{},"SAST",[220,224,225],{},"10.3",[220,227,228],{},"13.3",[202,230,231,234,237],{},[220,232,233],{},"Container Scanning",[220,235,236],{},"10.4",[220,238,239],{},"15.0",[202,241,242,245,248],{},[220,243,244],{},"Secret Detection",[220,246,247],{},"11.9",[220,249,228],{},[12,251,252],{},"Within the free tier, you are able to download the reports generated by the security scanners.",[12,254,255],{},"This allows developers to see what vulnerabilities were detected within their source code and container images.",[12,257,258],{},[259,260],"img",{"alt":261,"src":262},"Report on vulnerabilities","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398718/blog/Content%20Images/modern-devops-security/results_1.png",[12,264,265],{},"However, there are benefits to upgrading to Ultimate, which are described below.",[59,267,269],{"id":268},"benefits-of-upgrading-to-ultimate","Benefits of upgrading to Ultimate",[12,271,272],{},"Some organizations have multiple groups and projects they are working on, as well as a the security team, which manages all the detected vulnerabilities. While having security scan reports ready for download is useful, it is not exactly scalable across an organization. This is where\nUltimate assists in enhancing",[12,274,275],{},"DevSecOps efficiency.",[277,278,280],"h3",{"id":279},"scanners","Scanners",[12,282,283],{},"While the GitLab Free Tier includes SAST, Secret Detection, and Container\nScanning to find vulnerabilities in your source code, when you upgrade to Ultimate, you are provided with even more scanners. Here are some of the additional scanners provided in Ultimate:",[19,285,286,293,300,307,314,321],{},[22,287,288],{},[52,289,292],{"href":290,"rel":291},"https://docs.gitlab.com/user/application_security/dast/",[],"DAST",[22,294,295],{},[52,296,299],{"href":297,"rel":298},"https://docs.gitlab.com/user/clusters/agent/vulnerabilities/",[],"Operational Container\nScanning",[22,301,302],{},[52,303,306],{"href":304,"rel":305},"https://docs.gitlab.com/user/application_security/dependency_scanning/",[],"Dependency\nScanning",[22,308,309],{},[52,310,313],{"href":311,"rel":312},"https://docs.gitlab.com/user/application_security/iac_scanning/",[],"Infrastructure as Code\nScanning",[22,315,316],{},[52,317,320],{"href":318,"rel":319},"https://docs.gitlab.com/user/application_security/coverage_fuzzing/",[],"Coverage-Guided\nFuzzing",[22,322,323],{},[52,324,327],{"href":325,"rel":326},"https://docs.gitlab.com/user/application_security/api_fuzzing/",[],"Web-API\nFuzzing",[277,329,331],{"id":330},"developer-lifecycle","Developer Lifecycle",[12,333,334],{},"In Ultimate, there is enhanced functionality within the developer lifecycle.\nThe merge request a developer creates will contain a security widget which displays a summary of the new security scan results. New results are determined by comparing the current findings against existing findings in the default branch.",[12,336,337],{},[259,338],{"alt":339,"src":340},"Ultimate security widget","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398717/blog/Content%20Images/modern-devops-security/developer_1.png",[12,342,343],{},"The results contain not only detailed information on the vulnerability and how it affects the system, but also solutions to mitigating or resolving the issue. These vulnerabilities are also actionable, meaning that a comment can be added in order to notify the security team, so they may review – enhancing developer and appsec collaboration.",[12,345,346],{},"A confidential issue can also be created so that developers and security professionals can work together towards a resolution safely and efficiently.",[12,348,349],{},[259,350],{"alt":351,"src":352},"Confidential issue","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398718/blog/Content%20Images/modern-devops-security/developer_2.png",[12,354,355],{},"While these features were avaliable in Ultimate on older versions of GitLab, within release 14 this feature was heightened to include developer training within the vulnerability, helping to educate developers and make them more security-aware. GitLab 15 will provide even more enhancements to the developer lifecycle.",[12,357,358],{},[259,359],{"alt":360,"src":361},"Ultimate enhancements","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398718/blog/Content%20Images/modern-devops-security/developer_3.png",[277,363,365],{"id":364},"security-team-lifecycle","Security team lifecycle",[12,367,368],{},"There are also several features which greatly benefit members of a security team.",[12,370,371,372,377],{},"The security team is able to effectively manage and triage vulnerabilities using the ",[52,373,376],{"href":374,"rel":375},"https://docs.gitlab.com/user/application_security/vulnerability_report/",[],"Vulnerability\nReports",".",[12,379,380],{},[259,381],{"alt":382,"src":383},"Vulnerability reports","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398716/blog/Content%20Images/modern-devops-security/appsec_1.png",[12,385,386,387,392],{},"The ",[52,388,391],{"href":389,"rel":390},"https://docs.gitlab.com/user/application_security/security_dashboard/",[],"security dashboard","\nallows the security team to assess the security posture of a project or group of projects. This is helpful to see how many vulnerabilities were introduced/resolved over time, as well as which projects require more attention than others",[12,394,395],{},[259,396],{"alt":391,"src":397},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398717/blog/Content%20Images/modern-devops-security/appsec_2.png",[12,399,400,401],{},"Separation of duties can be enforced using ",[52,402,405],{"href":403,"rel":404},"https://docs.gitlab.com/user/project/settings/#compliance-frameworks",[],"Compliance\nFrameworks",[12,407,408,409,414],{},"and ",[52,410,413],{"href":411,"rel":412},"https://docs.gitlab.com/user/application_security/policies/",[],"Security\nPolicies","\nassuring code requires approval before making it to production.",[12,416,417],{},[259,418],{"alt":419,"src":420},"Separation of duties","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398716/blog/Content%20Images/modern-devops-security/appsec_3.png",[12,422,423,424,428],{},"These are just some of the features GitLab has to offer in terms of security. For even more features, please see the ",[52,425,427],{"href":151,"rel":426},[],"GitLab application security","\ndocumentation.",[430,431],"hr",{},[12,433,434,435,440,441,445],{},"Thanks for reading! To find out more about the newest security features in\nGitLab 15, check out the ",[52,436,439],{"href":437,"rel":438},"https://docs.gitlab.com/releases/",[],"release post",". For upcoming version features, see the ",[52,442,444],{"href":443},"/whats-new/","Upcoming Releases"," page.",[12,447,448,449,454],{},"It is also helpful to check out our ",[52,450,453],{"href":451,"rel":452},"https://gitlab.com/groups/gitlab-org/-/work_items?type=epic&state=opened&label_name%5B%5D=section%3A%3Asec",[],"Secure and Protect roadmaps"," to get an idea of the direction we are headed!",{"title":456,"searchDepth":457,"depth":457,"links":458},"",2,[459,460,461],{"id":61,"depth":457,"text":62},{"id":190,"depth":457,"text":191},{"id":268,"depth":457,"text":269,"children":462},[463,465,466],{"id":279,"depth":464,"text":280},3,{"id":330,"depth":464,"text":331},{"id":364,"depth":464,"text":365},"security","2022-06-21","Security abounds in our latest DevOps platform release, GitLab 15.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667845/Blog/Hero%20Images/gl15.jpg",{},"/en-us/blog/security-gitlab-15",{"ogTitle":477,"ogImage":473,"ogDescription":469,"ogSiteName":478,"noIndex":472,"ogType":479,"ogUrl":480,"title":477,"canonicalUrls":480,"description":469},"GitLab's Commitment to Enhanced AppSec in Modern DevOps","https://about.gitlab.com","article","https://about.gitlab.com/blog/security-gitlab-15","security-gitlab-15","en-us/blog/security-gitlab-15",[467,484],"DevOps","BlogPost","eWB8P36rXZOMwEYhp92SVtgUe3_oZx1r4fFiF1nrTYE",{"logo":488,"freeTrial":493,"sales":498,"login":503,"items":508,"search":834,"minimal":865,"duo":884,"switchNav":893,"pricingDeployment":904},{"config":489},{"href":490,"dataGaName":491,"dataGaLocation":492},"/","gitlab logo","header",{"text":494,"config":495},"Get free trial",{"href":496,"dataGaName":497,"dataGaLocation":492},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":499,"config":500},"Request a demo",{"href":501,"dataGaName":502,"dataGaLocation":492},"/sales/?contact-topic=request-demo","sales",{"text":504,"config":505},"Sign in",{"href":506,"dataGaName":507,"dataGaLocation":492},"https://gitlab.com/users/sign_in/","sign in",[509,538,638,643,756,812],{"text":510,"config":511,"menu":513},"Platform",{"dataNavLevelOne":512},"platform",{"type":514,"columns":515},"cards",[516,522,530],{"title":510,"description":517,"link":518},"The intelligent orchestration platform for DevSecOps",{"text":519,"config":520},"Explore our Platform",{"href":521,"dataGaName":512,"dataGaLocation":492},"/platform/",{"title":523,"description":524,"link":525},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":526,"config":527},"Meet GitLab Duo",{"href":528,"dataGaName":529,"dataGaLocation":492},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":531,"description":532,"link":533},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":534,"config":535},"Learn more",{"href":536,"dataGaName":537,"dataGaLocation":492},"/why-gitlab/","why gitlab",{"text":539,"left":187,"config":540,"menu":542},"Product",{"dataNavLevelOne":541},"solutions",{"type":543,"link":544,"columns":548,"feature":617},"lists",{"text":545,"config":546},"View all Solutions",{"href":547,"dataGaName":541,"dataGaLocation":492},"/solutions/",[549,573,596],{"title":550,"description":551,"link":552,"items":557},"Automation","CI/CD and automation to accelerate deployment",{"config":553},{"icon":554,"href":555,"dataGaName":556,"dataGaLocation":492},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[558,562,565,569],{"text":559,"config":560},"CI/CD",{"href":561,"dataGaLocation":492,"dataGaName":559},"/solutions/continuous-integration/",{"text":523,"config":563},{"href":528,"dataGaLocation":492,"dataGaName":564},"gitlab duo agent platform - product menu",{"text":566,"config":567},"Source Code Management",{"href":568,"dataGaLocation":492,"dataGaName":566},"/solutions/source-code-management/",{"text":570,"config":571},"Automated Software Delivery",{"href":555,"dataGaLocation":492,"dataGaName":572},"Automated software delivery",{"title":574,"description":575,"link":576,"items":581},"Security","Deliver code faster without compromising security",{"config":577},{"href":578,"dataGaName":579,"dataGaLocation":492,"icon":580},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[582,586,591],{"text":583,"config":584},"Application Security Testing",{"href":578,"dataGaName":585,"dataGaLocation":492},"Application security testing",{"text":587,"config":588},"Software Supply Chain Security",{"href":589,"dataGaLocation":492,"dataGaName":590},"/solutions/supply-chain/","Software supply chain security",{"text":592,"config":593},"Software Compliance",{"href":594,"dataGaName":595,"dataGaLocation":492},"/solutions/software-compliance/","software compliance",{"title":597,"link":598,"items":603},"Measurement",{"config":599},{"icon":600,"href":601,"dataGaName":602,"dataGaLocation":492},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[604,608,612],{"text":605,"config":606},"Visibility & Measurement",{"href":601,"dataGaLocation":492,"dataGaName":607},"Visibility and Measurement",{"text":609,"config":610},"Value Stream Management",{"href":611,"dataGaLocation":492,"dataGaName":609},"/solutions/value-stream-management/",{"text":613,"config":614},"Analytics & Insights",{"href":615,"dataGaLocation":492,"dataGaName":616},"/solutions/analytics-and-insights/","Analytics and insights",{"title":618,"type":543,"items":619},"GitLab for",[620,626,632],{"text":621,"config":622},"Enterprise",{"icon":623,"href":624,"dataGaLocation":492,"dataGaName":625},"Building","/enterprise/","enterprise",{"text":627,"config":628},"Small Business",{"icon":629,"href":630,"dataGaLocation":492,"dataGaName":631},"Work","/small-business/","small business",{"text":633,"config":634},"Public Sector",{"icon":635,"href":636,"dataGaLocation":492,"dataGaName":637},"Organization","/solutions/public-sector/","public sector",{"text":639,"config":640},"Pricing",{"href":641,"dataGaName":642,"dataGaLocation":492,"dataNavLevelOne":642},"/pricing/","pricing",{"text":644,"config":645,"menu":647},"Resources",{"dataNavLevelOne":646},"resources",{"type":543,"link":648,"columns":652,"feature":746},{"text":649,"config":650},"View all resources",{"href":651,"dataGaName":646,"dataGaLocation":492},"/resources/",[653,686,713],{"title":654,"items":655},"Getting started",[656,661,666,671,676,681],{"text":657,"config":658},"Install",{"href":659,"dataGaName":660,"dataGaLocation":492},"/install/","install",{"text":662,"config":663},"Quick start guides",{"href":664,"dataGaName":665,"dataGaLocation":492},"/get-started/","quick setup checklists",{"text":667,"config":668},"Learn",{"href":669,"dataGaLocation":492,"dataGaName":670},"https://university.gitlab.com/","learn",{"text":672,"config":673},"Product documentation",{"href":674,"dataGaName":675,"dataGaLocation":492},"https://docs.gitlab.com/","product documentation",{"text":677,"config":678},"Best practice videos",{"href":679,"dataGaName":680,"dataGaLocation":492},"/getting-started-videos/","best practice videos",{"text":682,"config":683},"Integrations",{"href":684,"dataGaName":685,"dataGaLocation":492},"/integrations/","integrations",{"title":687,"items":688},"Discover",[689,694,699,704,708],{"text":690,"config":691},"Customer success stories",{"href":692,"dataGaName":693,"dataGaLocation":492},"/customers/","customer success stories",{"text":695,"config":696},"Blog",{"href":697,"dataGaName":698,"dataGaLocation":492},"/blog/","blog",{"text":700,"config":701},"Demo Hub",{"href":702,"dataGaName":703,"dataGaLocation":492},"/demo-hub/","demo hub",{"text":705,"config":706},"The Source",{"href":707,"dataGaName":698,"dataGaLocation":492},"/the-source/",{"text":709,"config":710},"Remote",{"href":711,"dataGaName":712,"dataGaLocation":492},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":714,"items":715},"Connect",[716,721,726,731,736,741],{"text":717,"config":718},"GitLab Services",{"href":719,"dataGaName":720,"dataGaLocation":492},"/services/","services",{"text":722,"config":723},"Contribute",{"href":724,"dataGaName":725,"dataGaLocation":492},"https://contributors.gitlab.com","contribute",{"text":727,"config":728},"Community",{"href":729,"dataGaName":730,"dataGaLocation":492},"/community/","community",{"text":732,"config":733},"Forum",{"href":734,"dataGaName":735,"dataGaLocation":492},"https://forum.gitlab.com/","forum",{"text":737,"config":738},"Events",{"href":739,"dataGaName":740,"dataGaLocation":492},"/events/","events",{"text":742,"config":743},"Partners",{"href":744,"dataGaName":745,"dataGaLocation":492},"/partners/","partners",{"config":747,"title":750,"text":751,"link":752},{"background":748,"textColor":749},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":753,"config":754},"Read the latest",{"href":443,"dataGaName":755,"dataGaLocation":492},"whats new",{"text":757,"config":758,"menu":760},"Company",{"dataNavLevelOne":759},"company",{"type":543,"columns":761},[762],{"items":763},[764,769,775,777,782,787,792,797,802,807],{"text":765,"config":766},"About",{"href":767,"dataGaName":768,"dataGaLocation":492},"/company/","about",{"text":770,"config":771,"footerGa":774},"Jobs",{"href":772,"dataGaName":773,"dataGaLocation":492},"/jobs/","jobs",{"dataGaName":773},{"text":737,"config":776},{"href":739,"dataGaName":740,"dataGaLocation":492},{"text":778,"config":779},"Leadership",{"href":780,"dataGaName":781,"dataGaLocation":492},"/company/team/e-group/","leadership",{"text":783,"config":784},"Handbook",{"href":785,"dataGaName":786,"dataGaLocation":492},"https://handbook.gitlab.com/","handbook",{"text":788,"config":789},"Investor relations",{"href":790,"dataGaName":791,"dataGaLocation":492},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":793,"config":794},"Trust Center",{"href":795,"dataGaName":796,"dataGaLocation":492},"/security/","trust center",{"text":798,"config":799},"AI Transparency Center",{"href":800,"dataGaName":801,"dataGaLocation":492},"/ai-transparency-center/","ai transparency center",{"text":803,"config":804},"Newsletter",{"href":805,"dataGaName":806,"dataGaLocation":492},"/company/contact/#contact-forms","newsletter",{"text":808,"config":809},"Press",{"href":810,"dataGaName":811,"dataGaLocation":492},"/press/","press",{"text":813,"config":814,"menu":815},"Contact us",{"dataNavLevelOne":759},{"type":543,"columns":816},[817],{"items":818},[819,824,829],{"text":820,"config":821},"Talk to sales",{"href":822,"dataGaName":823,"dataGaLocation":492},"/sales/","talk to sales",{"text":825,"config":826},"Support portal",{"href":827,"dataGaName":828,"dataGaLocation":492},"https://support.gitlab.com/hc/en-us","support portal",{"text":830,"config":831},"Customer portal",{"href":832,"dataGaName":833,"dataGaLocation":492},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":835,"login":836,"suggestions":843},"Close",{"text":837,"link":838},"To search repositories and projects, login to",{"text":839,"config":840},"gitlab.com",{"href":506,"dataGaName":841,"dataGaLocation":842},"search login","search",{"text":844,"default":845},"Suggestions",[846,848,852,854,858,862],{"text":523,"config":847},{"href":528,"dataGaName":523,"dataGaLocation":842},{"text":849,"config":850},"Code Suggestions (AI)",{"href":851,"dataGaName":849,"dataGaLocation":842},"/solutions/code-suggestions/",{"text":559,"config":853},{"href":561,"dataGaName":559,"dataGaLocation":842},{"text":855,"config":856},"GitLab on AWS",{"href":857,"dataGaName":855,"dataGaLocation":842},"/partners/technology-partners/aws/",{"text":859,"config":860},"GitLab on Google Cloud",{"href":861,"dataGaName":859,"dataGaLocation":842},"/partners/technology-partners/google-cloud-platform/",{"text":863,"config":864},"Why GitLab?",{"href":536,"dataGaName":863,"dataGaLocation":842},{"freeTrial":866,"mobileIcon":871,"desktopIcon":876,"secondaryButton":879},{"text":867,"config":868},"Start free trial",{"href":869,"dataGaName":497,"dataGaLocation":870},"https://gitlab.com/-/trials/new/","nav",{"altText":872,"config":873},"Gitlab Icon",{"src":874,"dataGaName":875,"dataGaLocation":870},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":872,"config":877},{"src":878,"dataGaName":875,"dataGaLocation":870},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":880,"config":881},"Get Started",{"href":882,"dataGaName":883,"dataGaLocation":870},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":885,"mobileIcon":889,"desktopIcon":891},{"text":886,"config":887},"Learn more about GitLab Duo",{"href":528,"dataGaName":888,"dataGaLocation":870},"gitlab duo",{"altText":872,"config":890},{"src":874,"dataGaName":875,"dataGaLocation":870},{"altText":872,"config":892},{"src":878,"dataGaName":875,"dataGaLocation":870},{"button":894,"mobileIcon":899,"desktopIcon":901},{"text":895,"config":896},"/switch",{"href":897,"dataGaName":898,"dataGaLocation":870},"#contact","switch",{"altText":872,"config":900},{"src":874,"dataGaName":875,"dataGaLocation":870},{"altText":872,"config":902},{"src":903,"dataGaName":875,"dataGaLocation":870},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":905,"mobileIcon":910,"desktopIcon":912},{"text":906,"config":907},"Back to pricing",{"href":641,"dataGaName":908,"dataGaLocation":870,"icon":909},"back to pricing","GoBack",{"altText":872,"config":911},{"src":874,"dataGaName":875,"dataGaLocation":870},{"altText":872,"config":913},{"src":878,"dataGaName":875,"dataGaLocation":870},{"title":915,"titleMobile":916,"button":917,"config":922},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":534,"config":918},{"href":919,"dataGaName":920,"dataGaLocation":921},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":923,"disabled":472},"release",{"data":925},{"text":926,"source":927,"edit":933,"contribute":938,"config":943,"items":948,"minimal":1157},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":928,"config":929},"View page source",{"href":930,"dataGaName":931,"dataGaLocation":932},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":934,"config":935},"Edit this page",{"href":936,"dataGaName":937,"dataGaLocation":932},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":939,"config":940},"Please contribute",{"href":941,"dataGaName":942,"dataGaLocation":932},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":944,"facebook":945,"youtube":946,"linkedin":947},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[949,996,1049,1093,1125],{"title":639,"links":950,"subMenu":965},[951,955,960],{"text":952,"config":953},"View plans",{"href":641,"dataGaName":954,"dataGaLocation":932},"view plans",{"text":956,"config":957},"Why Premium?",{"href":958,"dataGaName":959,"dataGaLocation":932},"/pricing/premium/","why premium",{"text":961,"config":962},"Why Ultimate?",{"href":963,"dataGaName":964,"dataGaLocation":932},"/pricing/ultimate/","why ultimate",[966],{"title":967,"links":968},"Contact Us",[969,972,974,976,981,986,991],{"text":970,"config":971},"Contact sales",{"href":822,"dataGaName":502,"dataGaLocation":932},{"text":825,"config":973},{"href":827,"dataGaName":828,"dataGaLocation":932},{"text":830,"config":975},{"href":832,"dataGaName":833,"dataGaLocation":932},{"text":977,"config":978},"Status",{"href":979,"dataGaName":980,"dataGaLocation":932},"https://status.gitlab.com/","status",{"text":982,"config":983},"Terms of use",{"href":984,"dataGaName":985,"dataGaLocation":932},"/terms/","terms of use",{"text":987,"config":988},"Privacy statement",{"href":989,"dataGaName":990,"dataGaLocation":932},"/privacy/","privacy statement",{"text":992,"config":993},"Cookie preferences",{"dataGaName":994,"dataGaLocation":932,"id":995,"isOneTrustButton":187},"cookie preferences","ot-sdk-btn",{"title":539,"links":997,"subMenu":1006},[998,1002],{"text":999,"config":1000},"DevSecOps platform",{"href":521,"dataGaName":1001,"dataGaLocation":932},"devsecops platform",{"text":1003,"config":1004},"AI-Assisted Development",{"href":528,"dataGaName":1005,"dataGaLocation":932},"ai-assisted development",[1007],{"title":1008,"links":1009},"Topics",[1010,1015,1020,1024,1029,1034,1039,1044],{"text":1011,"config":1012},"CICD",{"href":1013,"dataGaName":1014,"dataGaLocation":932},"/topics/ci-cd/","cicd",{"text":1016,"config":1017},"GitOps",{"href":1018,"dataGaName":1019,"dataGaLocation":932},"/topics/gitops/","gitops",{"text":484,"config":1021},{"href":1022,"dataGaName":1023,"dataGaLocation":932},"/topics/devops/","devops",{"text":1025,"config":1026},"Version Control",{"href":1027,"dataGaName":1028,"dataGaLocation":932},"/topics/version-control/","version control",{"text":1030,"config":1031},"DevSecOps",{"href":1032,"dataGaName":1033,"dataGaLocation":932},"/topics/devsecops/","devsecops",{"text":1035,"config":1036},"Cloud Native",{"href":1037,"dataGaName":1038,"dataGaLocation":932},"/topics/cloud-native/","cloud native",{"text":1040,"config":1041},"AI for Coding",{"href":1042,"dataGaName":1043,"dataGaLocation":932},"/topics/devops/ai-for-coding/","ai for coding",{"text":1045,"config":1046},"Agentic AI",{"href":1047,"dataGaName":1048,"dataGaLocation":932},"/topics/agentic-ai/","agentic ai",{"title":1050,"links":1051},"Solutions",[1052,1054,1056,1061,1065,1068,1072,1075,1077,1080,1083,1088],{"text":583,"config":1053},{"href":578,"dataGaName":583,"dataGaLocation":932},{"text":572,"config":1055},{"href":555,"dataGaName":556,"dataGaLocation":932},{"text":1057,"config":1058},"Agile development",{"href":1059,"dataGaName":1060,"dataGaLocation":932},"/solutions/agile-delivery/","agile delivery",{"text":1062,"config":1063},"SCM",{"href":568,"dataGaName":1064,"dataGaLocation":932},"source code management",{"text":1011,"config":1066},{"href":561,"dataGaName":1067,"dataGaLocation":932},"continuous integration & delivery",{"text":1069,"config":1070},"Value stream management",{"href":611,"dataGaName":1071,"dataGaLocation":932},"value stream management",{"text":1016,"config":1073},{"href":1074,"dataGaName":1019,"dataGaLocation":932},"/solutions/gitops/",{"text":621,"config":1076},{"href":624,"dataGaName":625,"dataGaLocation":932},{"text":1078,"config":1079},"Small business",{"href":630,"dataGaName":631,"dataGaLocation":932},{"text":1081,"config":1082},"Public sector",{"href":636,"dataGaName":637,"dataGaLocation":932},{"text":1084,"config":1085},"Education",{"href":1086,"dataGaName":1087,"dataGaLocation":932},"/solutions/education/","education",{"text":1089,"config":1090},"Financial services",{"href":1091,"dataGaName":1092,"dataGaLocation":932},"/solutions/finance/","financial services",{"title":644,"links":1094},[1095,1097,1099,1101,1104,1106,1109,1111,1113,1115,1117,1119,1121,1123],{"text":657,"config":1096},{"href":659,"dataGaName":660,"dataGaLocation":932},{"text":662,"config":1098},{"href":664,"dataGaName":665,"dataGaLocation":932},{"text":667,"config":1100},{"href":669,"dataGaName":670,"dataGaLocation":932},{"text":672,"config":1102},{"href":674,"dataGaName":1103,"dataGaLocation":932},"docs",{"text":695,"config":1105},{"href":697,"dataGaName":698,"dataGaLocation":932},{"text":1107,"config":1108},"What's new",{"href":443,"dataGaName":755,"dataGaLocation":932},{"text":690,"config":1110},{"href":692,"dataGaName":693,"dataGaLocation":932},{"text":709,"config":1112},{"href":711,"dataGaName":712,"dataGaLocation":932},{"text":717,"config":1114},{"href":719,"dataGaName":720,"dataGaLocation":932},{"text":722,"config":1116},{"href":724,"dataGaName":725,"dataGaLocation":932},{"text":727,"config":1118},{"href":729,"dataGaName":730,"dataGaLocation":932},{"text":732,"config":1120},{"href":734,"dataGaName":735,"dataGaLocation":932},{"text":737,"config":1122},{"href":739,"dataGaName":740,"dataGaLocation":932},{"text":742,"config":1124},{"href":744,"dataGaName":745,"dataGaLocation":932},{"title":757,"links":1126},[1127,1129,1131,1133,1135,1137,1141,1146,1148,1150,1152],{"text":765,"config":1128},{"href":767,"dataGaName":759,"dataGaLocation":932},{"text":770,"config":1130},{"href":772,"dataGaName":773,"dataGaLocation":932},{"text":778,"config":1132},{"href":780,"dataGaName":781,"dataGaLocation":932},{"text":783,"config":1134},{"href":785,"dataGaName":786,"dataGaLocation":932},{"text":788,"config":1136},{"href":790,"dataGaName":791,"dataGaLocation":932},{"text":1138,"config":1139},"Sustainability",{"href":1140,"dataGaName":1138,"dataGaLocation":932},"/sustainability/",{"text":1142,"config":1143},"Diversity, inclusion and belonging (DIB)",{"href":1144,"dataGaName":1145,"dataGaLocation":932},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":793,"config":1147},{"href":795,"dataGaName":796,"dataGaLocation":932},{"text":803,"config":1149},{"href":805,"dataGaName":806,"dataGaLocation":932},{"text":808,"config":1151},{"href":810,"dataGaName":811,"dataGaLocation":932},{"text":1153,"config":1154},"Modern Slavery Transparency Statement",{"href":1155,"dataGaName":1156,"dataGaLocation":932},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1158},[1159,1162,1165],{"text":1160,"config":1161},"Terms",{"href":984,"dataGaName":985,"dataGaLocation":932},{"text":1163,"config":1164},"Cookies",{"dataGaName":994,"dataGaLocation":932,"id":995,"isOneTrustButton":187},{"text":1166,"config":1167},"Privacy",{"href":989,"dataGaName":990,"dataGaLocation":932},[1169],{"id":1170,"title":7,"body":471,"config":1171,"content":1173,"description":471,"extension":1177,"meta":1178,"navigation":187,"path":1179,"seo":1180,"stem":1181,"__hash__":1182},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":1172},"BlogAuthor",{"name":7,"config":1174},{"headshot":1175,"ctfId":1176},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[1184,1192,1200],{"title":1185,"description":1186,"heroImage":1187,"category":467,"date":1188,"authors":1189,"slug":1191,"externalUrl":471},"How GitLab tracks vulnerabilities through refactors and reformatting","Learn how GitLab's improved Scope+Offset fingerprinting keeps vulnerability tracking stable across comments, blank lines, and reformatting.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","2026-08-12",[1190],"Julian Thome","improved-scope-offset-fingerprinting",{"title":1193,"description":1194,"heroImage":1187,"category":467,"date":1195,"authors":1196,"slug":1199,"externalUrl":471},"GitLab Secrets Manager adds ESO, Terraform, API support","Simplify credential management across your stack. GitLab Secrets Manager provides secure retrieval in Kubernetes, Terraform, and external workflows.","2026-08-06",[1197,1198],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":1201,"description":1202,"heroImage":1203,"category":467,"date":1204,"authors":1205,"slug":1207,"externalUrl":471},"Secure every commit to production with Claude and GitLab","Claude Security catches vulnerabilities inside a coding session. GitLab picks up from there, scanning, enforcing policy, and producing audit evidence for the software lifecycle. ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756122536/akivvcnafog9c4dhhzkp.png","2026-08-03",[1206],"Alisa Ho","claude-security-and-gitlab",{"promotions":1209},[1210,1224,1236,1247],{"id":1211,"categories":1212,"header":1214,"text":1215,"button":1216,"image":1221},"ai-modernization",[1213],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1217,"config":1218},"Get your AI maturity score",{"href":1219,"dataGaName":1220,"dataGaLocation":698},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1222},{"src":1223},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1225,"categories":1226,"header":1228,"text":1215,"button":1229,"image":1233},"devops-modernization",[1227,1033],"product","Are you just managing tools or shipping innovation?",{"text":1230,"config":1231},"Get your DevOps maturity score",{"href":1232,"dataGaName":1220,"dataGaLocation":698},"/assessments/devops-modernization-assessment/",{"config":1234},{"src":1235},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1237,"categories":1238,"header":1239,"text":1215,"button":1240,"image":1244},"security-modernization",[467],"Are you trading speed for security?",{"text":1241,"config":1242},"Get your security maturity score",{"href":1243,"dataGaName":1220,"dataGaLocation":698},"/assessments/security-modernization-assessment/",{"config":1245},{"src":1246},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1248,"paths":1249,"header":1252,"text":1253,"button":1254,"image":1259},"github-azure-migration",[1250,1251],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":1255,"config":1256},"See how GitLab compares to GitHub",{"href":1257,"dataGaName":1258,"dataGaLocation":698},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1260},{"src":1235},{"header":1262,"blurb":1263,"button":1264,"secondaryButton":1269},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1265,"config":1266},"Get your free trial",{"href":1267,"dataGaName":497,"dataGaLocation":1268},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":970,"config":1270},{"href":822,"dataGaName":502,"dataGaLocation":1268},1786803754680]