[{"data":1,"prerenderedAt":975},["ShallowReactive",2],{"/blog/keyless-signing-with-cosign":3,"navigation-en-us":191,"banner-en-us":617,"footer-en-us":627,"blog-post-authors-en-us-Sam White":872,"blog-related-posts-en-us-keyless-signing-with-cosign":887,"blog-promotions-en-us":912,"next-steps-en-us":965},{"id":4,"title":5,"authors":6,"body":8,"category":169,"date":170,"description":171,"extension":172,"externalUrl":173,"faq":173,"featured":174,"heroImage":175,"meta":176,"navigation":177,"path":178,"seo":179,"slug":183,"stem":184,"tags":185,"template":189,"updatedDate":173,"__hash__":190},"blogPosts/en-us/blog/keyless-signing-with-cosign.md","Streamline security with keyless signing and verification in GitLab",[7],"Sam White",{"type":9,"value":10,"toc":161},"minimark",[11,22,25,30,33,55,62,65,69,72,75,92,98,101,105,108,111,120,123,127,130,133,146],[12,13,14,15,21],"p",{},"Traditional cryptographic keys have created security issues and management overhead for software development teams for years. To address these security issues and ease the administrative burden, GitLab is partnering with Sigstore to use their command-line utility Cosign for ",[16,17,20],"a",{"href":18,"rel":19},"https://docs.gitlab.com/ci/yaml/signing_examples/",[],"keyless signing and verification",", which can be done by adding just a few lines in a yml file.",[12,23,24],{},"Before digging too far into the integration, though, let's take a closer look at some of the issues of traditional key management and some of the benefits of keyless signing.",[26,27,29],"h2",{"id":28},"traditional-key-management","Traditional key management",[12,31,32],{},"Cryptographic keys have been a mainstay of securing software and network elements for years. Traditional key management involves the generation, storage, distribution, and protection of cryptographic keys that are essential for processes like encryption, decryption, and digital signing. While these methods have worked well over the years, they pose challenges that can impact security and operational efficiency.",[34,35,36,40,43,46,49,52],"ul",{},[37,38,39],"li",{},"Complexity and risk of exposure: Generating, storing, and distributing cryptographic keys manually can be error-prone and time-consuming. This complexity increases the risk of key exposure due to mismanagement or vulnerabilities in the key storage systems.",[37,41,42],{},"Security risk: Risk that the key management system (KMS) might be compromised and the private key leaked. There is no way for users to verify that the public key has not been tampered with or modified.",[37,44,45],{},"Key rotation complexity: Regular key rotation is a security best practice, but it can be complex to manage, especially when dealing with large numbers of keys. Key rotation will often disrupt applications.",[37,47,48],{},"Key revocation: Revoking access to keys that are no longer needed or that have been compromised can be challenging, especially if those keys are widely used across different parts of your application.",[37,50,51],{},"Integration complexity: Integrating your application with a KMS can introduce complexity. If your application is distributed or consists of microservices the complexity increases.",[37,53,54],{},"Key distribution: There is no standard way of distributing public keys. A system for distribution must be selected and secure, and if that system is compromised the public key must be changed.",[12,56,57],{},[58,59],"img",{"alt":60,"src":61},"A diagram of how traditional key management works","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399246/blog/Content%20Images/traditionalkeymanagement.png",[12,63,64],{},"How traditional key management works",[26,66,68],{"id":67},"the-move-to-keyless-signing","The move to keyless signing",[12,70,71],{},"Recently, the industry has been making a push towards keyless signing. With keyless signing, a message is signed using an ephemeral key that is generated and used for signing. The key is only valid for a few minutes, greatly reducing the complexity and security issues associated with traditional key management.",[12,73,74],{},"Keyless signing has several advantages.",[34,76,77,80,83,86,89],{},[37,78,79],{},"Enhanced security: Keyless signing removes the need to store private keys on user devices, reducing the risk of exposure to malware or unauthorized access.",[37,81,82],{},"Simplified key management: With keyless signing, the complexities of key generation, distribution, and rotation are abstracted, leading to simplified key management processes. This streamlines operational workflows and reduces the potential for human error.",[37,84,85],{},"Audit trail: Keyless signing systems provide comprehensive audit trails and logging. Artifact verification is possible since public keys cannot be tampered with.",[37,87,88],{},"Remote signing and access: Keyless signing allows remote signing operations, enabling users to sign documents and transactions securely from anywhere. This capability enhances accessibility and collaboration without sacrificing security.",[37,90,91],{},"Regulatory compliance: The audit trails and accountability provided by keyless signing solutions facilitate regulatory compliance. With keyless signing, organizations can more confidently meet industry standards and demonstrate their commitment to secure practices.",[12,93,94],{},[58,95],{"alt":96,"src":97},"A diagram of how keyless signing works","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398598/blog/Content%20Images/keylesssigningdiagram.png",[12,99,100],{},"How keyless signing works",[26,102,104],{"id":103},"keyless-signing-within-gitlab","Keyless signing within GitLab",[12,106,107],{},"GitLab has partnered with one of the leaders in the keyless signing space, Sigstore, to help customers move away from traditional keys and easily make the transition to keyless signing.",[12,109,110],{},"The Sigstore project provides a command-line utility called Cosign, which can be used for keyless signing of container images built with the GitLab CI/CD. By adding a few lines of code to the GitLab yml file, GitLab users can use Cosign to leverage the benefits of keyless signing. Sigstore’s Cosign enables software developers to sign release files, binaries, and other software artifacts.",[12,112,113,114,119],{},"Once enabled within GitLab, when a user runs a pipeline, Cosign requests a short-lived key pair to use for signing, records it on a certificate transparency log (Rektor), and then discards it. The key is generated through a token obtained from the GitLab server using the ",[16,115,118],{"href":116,"rel":117},"https://docs.gitlab.com/administration/auth/oidc/",[],"OIDC"," identity of the user who ran the pipeline. This token includes unique claims that certify the token was generated by a CI/CD pipeline. The private key only lasts for a short time so there is no need to store it or rotate it. With Cosign, verification data, including the public key, signature, and signing timestamp, is written to the immutable Rektor log (an append-only transparency ledger) so that signing events can be publicly audited. Users can then verify the binary and signature against the public key.",[12,121,122],{},"The whole process is quick and easy and greatly increases system-wide security. With this integration, there is no longer a need to set up a key management system, no longer a need to rotate keys, and no longer a need to distribute public keys. Life is simpler and more secure!",[26,124,126],{"id":125},"next-steps","Next steps",[12,128,129],{},"This feature is now available on all tiers of GitLab SaaS.",[12,131,132],{},"Watch a setup demo here:",[134,135,138,139],"figure",{"className":136},[137],"video_container","\n  ",[140,141,145],"iframe",{"src":142,"frameBorder":143,"allowFullScreen":144},"https://www.youtube.com/embed/Ws2D77n4nAg?si=jhDRWXH7oJEwvyLS","0","true"," ",[12,147,148,149,154,155,160],{},"For more details, check out ",[16,150,153],{"href":151,"rel":152},"https://docs.sigstore.dev/#how-sigstore-works",[],"Sigstore’s keyless signature documentation"," and then start your ",[16,156,159],{"href":157,"rel":158},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com",[],"free trial of GitLab Ultimate",".",{"title":162,"searchDepth":163,"depth":163,"links":164},"",2,[165,166,167,168],{"id":28,"depth":163,"text":29},{"id":67,"depth":163,"text":68},{"id":103,"depth":163,"text":104},{"id":125,"depth":163,"text":126},"security","2023-09-13","Our partnership with Sigstore means that with just a few lines in a yml file, GitLab customers can make their development environment more secure.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664923/Blog/Hero%20Images/security-checklist.png",{},true,"/en-us/blog/keyless-signing-with-cosign",{"title":5,"description":171,"ogTitle":5,"ogDescription":171,"noIndex":174,"ogImage":175,"ogUrl":180,"ogSiteName":181,"ogType":182,"canonicalUrls":180},"https://about.gitlab.com/blog/keyless-signing-with-cosign","https://about.gitlab.com","article","keyless-signing-with-cosign","en-us/blog/keyless-signing-with-cosign",[169,186,187,188],"news","partners","integrations","BlogPost","9DTQrY-DrpGJaidooIBUo796lUozS0HHCfQ8jFS7eKQ",{"logo":192,"freeTrial":197,"sales":202,"login":207,"items":212,"search":537,"minimal":568,"duo":587,"switchNav":596,"pricingDeployment":607},{"config":193},{"href":194,"dataGaName":195,"dataGaLocation":196},"/","gitlab logo","header",{"text":198,"config":199},"Get free trial",{"href":200,"dataGaName":201,"dataGaLocation":196},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":203,"config":204},"Request a demo",{"href":205,"dataGaName":206,"dataGaLocation":196},"/sales/?contact-topic=request-demo","sales",{"text":208,"config":209},"Sign in",{"href":210,"dataGaName":211,"dataGaLocation":196},"https://gitlab.com/users/sign_in/","sign in",[213,242,342,347,459,515],{"text":214,"config":215,"menu":217},"Platform",{"dataNavLevelOne":216},"platform",{"type":218,"columns":219},"cards",[220,226,234],{"title":214,"description":221,"link":222},"The intelligent orchestration platform for DevSecOps",{"text":223,"config":224},"Explore our Platform",{"href":225,"dataGaName":216,"dataGaLocation":196},"/platform/",{"title":227,"description":228,"link":229},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":230,"config":231},"Meet GitLab Duo",{"href":232,"dataGaName":233,"dataGaLocation":196},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":235,"description":236,"link":237},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":238,"config":239},"Learn more",{"href":240,"dataGaName":241,"dataGaLocation":196},"/why-gitlab/","why gitlab",{"text":243,"left":177,"config":244,"menu":246},"Product",{"dataNavLevelOne":245},"solutions",{"type":247,"link":248,"columns":252,"feature":321},"lists",{"text":249,"config":250},"View all Solutions",{"href":251,"dataGaName":245,"dataGaLocation":196},"/solutions/",[253,277,300],{"title":254,"description":255,"link":256,"items":261},"Automation","CI/CD and automation to accelerate deployment",{"config":257},{"icon":258,"href":259,"dataGaName":260,"dataGaLocation":196},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[262,266,269,273],{"text":263,"config":264},"CI/CD",{"href":265,"dataGaLocation":196,"dataGaName":263},"/solutions/continuous-integration/",{"text":227,"config":267},{"href":232,"dataGaLocation":196,"dataGaName":268},"gitlab duo agent platform - product menu",{"text":270,"config":271},"Source Code Management",{"href":272,"dataGaLocation":196,"dataGaName":270},"/solutions/source-code-management/",{"text":274,"config":275},"Automated Software Delivery",{"href":259,"dataGaLocation":196,"dataGaName":276},"Automated software delivery",{"title":278,"description":279,"link":280,"items":285},"Security","Deliver code faster without compromising security",{"config":281},{"href":282,"dataGaName":283,"dataGaLocation":196,"icon":284},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[286,290,295],{"text":287,"config":288},"Application Security Testing",{"href":282,"dataGaName":289,"dataGaLocation":196},"Application security testing",{"text":291,"config":292},"Software Supply Chain Security",{"href":293,"dataGaLocation":196,"dataGaName":294},"/solutions/supply-chain/","Software supply chain security",{"text":296,"config":297},"Software Compliance",{"href":298,"dataGaName":299,"dataGaLocation":196},"/solutions/software-compliance/","software compliance",{"title":301,"link":302,"items":307},"Measurement",{"config":303},{"icon":304,"href":305,"dataGaName":306,"dataGaLocation":196},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[308,312,316],{"text":309,"config":310},"Visibility & Measurement",{"href":305,"dataGaLocation":196,"dataGaName":311},"Visibility and Measurement",{"text":313,"config":314},"Value Stream Management",{"href":315,"dataGaLocation":196,"dataGaName":313},"/solutions/value-stream-management/",{"text":317,"config":318},"Analytics & Insights",{"href":319,"dataGaLocation":196,"dataGaName":320},"/solutions/analytics-and-insights/","Analytics and insights",{"title":322,"type":247,"items":323},"GitLab for",[324,330,336],{"text":325,"config":326},"Enterprise",{"icon":327,"href":328,"dataGaLocation":196,"dataGaName":329},"Building","/enterprise/","enterprise",{"text":331,"config":332},"Small Business",{"icon":333,"href":334,"dataGaLocation":196,"dataGaName":335},"Work","/small-business/","small business",{"text":337,"config":338},"Public Sector",{"icon":339,"href":340,"dataGaLocation":196,"dataGaName":341},"Organization","/solutions/public-sector/","public sector",{"text":343,"config":344},"Pricing",{"href":345,"dataGaName":346,"dataGaLocation":196,"dataNavLevelOne":346},"/pricing/","pricing",{"text":348,"config":349,"menu":351},"Resources",{"dataNavLevelOne":350},"resources",{"type":247,"link":352,"columns":356,"feature":448},{"text":353,"config":354},"View all resources",{"href":355,"dataGaName":350,"dataGaLocation":196},"/resources/",[357,389,416],{"title":358,"items":359},"Getting started",[360,365,370,375,380,385],{"text":361,"config":362},"Install",{"href":363,"dataGaName":364,"dataGaLocation":196},"/install/","install",{"text":366,"config":367},"Quick start guides",{"href":368,"dataGaName":369,"dataGaLocation":196},"/get-started/","quick setup checklists",{"text":371,"config":372},"Learn",{"href":373,"dataGaLocation":196,"dataGaName":374},"https://university.gitlab.com/","learn",{"text":376,"config":377},"Product documentation",{"href":378,"dataGaName":379,"dataGaLocation":196},"https://docs.gitlab.com/","product documentation",{"text":381,"config":382},"Best practice videos",{"href":383,"dataGaName":384,"dataGaLocation":196},"/getting-started-videos/","best practice videos",{"text":386,"config":387},"Integrations",{"href":388,"dataGaName":188,"dataGaLocation":196},"/integrations/",{"title":390,"items":391},"Discover",[392,397,402,407,411],{"text":393,"config":394},"Customer success stories",{"href":395,"dataGaName":396,"dataGaLocation":196},"/customers/","customer success stories",{"text":398,"config":399},"Blog",{"href":400,"dataGaName":401,"dataGaLocation":196},"/blog/","blog",{"text":403,"config":404},"Demo Hub",{"href":405,"dataGaName":406,"dataGaLocation":196},"/demo-hub/","demo hub",{"text":408,"config":409},"The Source",{"href":410,"dataGaName":401,"dataGaLocation":196},"/the-source/",{"text":412,"config":413},"Remote",{"href":414,"dataGaName":415,"dataGaLocation":196},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":417,"items":418},"Connect",[419,424,429,434,439,444],{"text":420,"config":421},"GitLab Services",{"href":422,"dataGaName":423,"dataGaLocation":196},"/services/","services",{"text":425,"config":426},"Contribute",{"href":427,"dataGaName":428,"dataGaLocation":196},"https://contributors.gitlab.com","contribute",{"text":430,"config":431},"Community",{"href":432,"dataGaName":433,"dataGaLocation":196},"/community/","community",{"text":435,"config":436},"Forum",{"href":437,"dataGaName":438,"dataGaLocation":196},"https://forum.gitlab.com/","forum",{"text":440,"config":441},"Events",{"href":442,"dataGaName":443,"dataGaLocation":196},"/events/","events",{"text":445,"config":446},"Partners",{"href":447,"dataGaName":187,"dataGaLocation":196},"/partners/",{"config":449,"title":452,"text":453,"link":454},{"background":450,"textColor":451},"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":455,"config":456},"Read the latest",{"href":457,"dataGaName":458,"dataGaLocation":196},"/whats-new/","whats new",{"text":460,"config":461,"menu":463},"Company",{"dataNavLevelOne":462},"company",{"type":247,"columns":464},[465],{"items":466},[467,472,478,480,485,490,495,500,505,510],{"text":468,"config":469},"About",{"href":470,"dataGaName":471,"dataGaLocation":196},"/company/","about",{"text":473,"config":474,"footerGa":477},"Jobs",{"href":475,"dataGaName":476,"dataGaLocation":196},"/jobs/","jobs",{"dataGaName":476},{"text":440,"config":479},{"href":442,"dataGaName":443,"dataGaLocation":196},{"text":481,"config":482},"Leadership",{"href":483,"dataGaName":484,"dataGaLocation":196},"/company/team/e-group/","leadership",{"text":486,"config":487},"Handbook",{"href":488,"dataGaName":489,"dataGaLocation":196},"https://handbook.gitlab.com/","handbook",{"text":491,"config":492},"Investor relations",{"href":493,"dataGaName":494,"dataGaLocation":196},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":496,"config":497},"Trust Center",{"href":498,"dataGaName":499,"dataGaLocation":196},"/security/","trust center",{"text":501,"config":502},"AI Transparency Center",{"href":503,"dataGaName":504,"dataGaLocation":196},"/ai-transparency-center/","ai transparency center",{"text":506,"config":507},"Newsletter",{"href":508,"dataGaName":509,"dataGaLocation":196},"/company/contact/#contact-forms","newsletter",{"text":511,"config":512},"Press",{"href":513,"dataGaName":514,"dataGaLocation":196},"/press/","press",{"text":516,"config":517,"menu":518},"Contact us",{"dataNavLevelOne":462},{"type":247,"columns":519},[520],{"items":521},[522,527,532],{"text":523,"config":524},"Talk to sales",{"href":525,"dataGaName":526,"dataGaLocation":196},"/sales/","talk to sales",{"text":528,"config":529},"Support portal",{"href":530,"dataGaName":531,"dataGaLocation":196},"https://support.gitlab.com/hc/en-us","support portal",{"text":533,"config":534},"Customer portal",{"href":535,"dataGaName":536,"dataGaLocation":196},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":538,"login":539,"suggestions":546},"Close",{"text":540,"link":541},"To search repositories and projects, login to",{"text":542,"config":543},"gitlab.com",{"href":210,"dataGaName":544,"dataGaLocation":545},"search login","search",{"text":547,"default":548},"Suggestions",[549,551,555,557,561,565],{"text":227,"config":550},{"href":232,"dataGaName":227,"dataGaLocation":545},{"text":552,"config":553},"Code Suggestions (AI)",{"href":554,"dataGaName":552,"dataGaLocation":545},"/solutions/code-suggestions/",{"text":263,"config":556},{"href":265,"dataGaName":263,"dataGaLocation":545},{"text":558,"config":559},"GitLab on AWS",{"href":560,"dataGaName":558,"dataGaLocation":545},"/partners/technology-partners/aws/",{"text":562,"config":563},"GitLab on Google Cloud",{"href":564,"dataGaName":562,"dataGaLocation":545},"/partners/technology-partners/google-cloud-platform/",{"text":566,"config":567},"Why GitLab?",{"href":240,"dataGaName":566,"dataGaLocation":545},{"freeTrial":569,"mobileIcon":574,"desktopIcon":579,"secondaryButton":582},{"text":570,"config":571},"Start free trial",{"href":572,"dataGaName":201,"dataGaLocation":573},"https://gitlab.com/-/trials/new/","nav",{"altText":575,"config":576},"Gitlab Icon",{"src":577,"dataGaName":578,"dataGaLocation":573},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":575,"config":580},{"src":581,"dataGaName":578,"dataGaLocation":573},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":583,"config":584},"Get Started",{"href":585,"dataGaName":586,"dataGaLocation":573},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":588,"mobileIcon":592,"desktopIcon":594},{"text":589,"config":590},"Learn more about GitLab Duo",{"href":232,"dataGaName":591,"dataGaLocation":573},"gitlab duo",{"altText":575,"config":593},{"src":577,"dataGaName":578,"dataGaLocation":573},{"altText":575,"config":595},{"src":581,"dataGaName":578,"dataGaLocation":573},{"button":597,"mobileIcon":602,"desktopIcon":604},{"text":598,"config":599},"/switch",{"href":600,"dataGaName":601,"dataGaLocation":573},"#contact","switch",{"altText":575,"config":603},{"src":577,"dataGaName":578,"dataGaLocation":573},{"altText":575,"config":605},{"src":606,"dataGaName":578,"dataGaLocation":573},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":608,"mobileIcon":613,"desktopIcon":615},{"text":609,"config":610},"Back to pricing",{"href":345,"dataGaName":611,"dataGaLocation":573,"icon":612},"back to pricing","GoBack",{"altText":575,"config":614},{"src":577,"dataGaName":578,"dataGaLocation":573},{"altText":575,"config":616},{"src":581,"dataGaName":578,"dataGaLocation":573},{"title":618,"titleMobile":619,"button":620,"config":625},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":238,"config":621},{"href":622,"dataGaName":623,"dataGaLocation":624},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":626,"disabled":174},"release",{"data":628},{"text":629,"source":630,"edit":636,"contribute":641,"config":646,"items":651,"minimal":861},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":631,"config":632},"View page source",{"href":633,"dataGaName":634,"dataGaLocation":635},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":637,"config":638},"Edit this page",{"href":639,"dataGaName":640,"dataGaLocation":635},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":642,"config":643},"Please contribute",{"href":644,"dataGaName":645,"dataGaLocation":635},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":647,"facebook":648,"youtube":649,"linkedin":650},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[652,699,753,797,829],{"title":343,"links":653,"subMenu":668},[654,658,663],{"text":655,"config":656},"View plans",{"href":345,"dataGaName":657,"dataGaLocation":635},"view plans",{"text":659,"config":660},"Why Premium?",{"href":661,"dataGaName":662,"dataGaLocation":635},"/pricing/premium/","why premium",{"text":664,"config":665},"Why Ultimate?",{"href":666,"dataGaName":667,"dataGaLocation":635},"/pricing/ultimate/","why ultimate",[669],{"title":670,"links":671},"Contact Us",[672,675,677,679,684,689,694],{"text":673,"config":674},"Contact sales",{"href":525,"dataGaName":206,"dataGaLocation":635},{"text":528,"config":676},{"href":530,"dataGaName":531,"dataGaLocation":635},{"text":533,"config":678},{"href":535,"dataGaName":536,"dataGaLocation":635},{"text":680,"config":681},"Status",{"href":682,"dataGaName":683,"dataGaLocation":635},"https://status.gitlab.com/","status",{"text":685,"config":686},"Terms of use",{"href":687,"dataGaName":688,"dataGaLocation":635},"/terms/","terms of use",{"text":690,"config":691},"Privacy statement",{"href":692,"dataGaName":693,"dataGaLocation":635},"/privacy/","privacy statement",{"text":695,"config":696},"Cookie preferences",{"dataGaName":697,"dataGaLocation":635,"id":698,"isOneTrustButton":177},"cookie preferences","ot-sdk-btn",{"title":243,"links":700,"subMenu":709},[701,705],{"text":702,"config":703},"DevSecOps platform",{"href":225,"dataGaName":704,"dataGaLocation":635},"devsecops platform",{"text":706,"config":707},"AI-Assisted Development",{"href":232,"dataGaName":708,"dataGaLocation":635},"ai-assisted development",[710],{"title":711,"links":712},"Topics",[713,718,723,728,733,738,743,748],{"text":714,"config":715},"CICD",{"href":716,"dataGaName":717,"dataGaLocation":635},"/topics/ci-cd/","cicd",{"text":719,"config":720},"GitOps",{"href":721,"dataGaName":722,"dataGaLocation":635},"/topics/gitops/","gitops",{"text":724,"config":725},"DevOps",{"href":726,"dataGaName":727,"dataGaLocation":635},"/topics/devops/","devops",{"text":729,"config":730},"Version Control",{"href":731,"dataGaName":732,"dataGaLocation":635},"/topics/version-control/","version control",{"text":734,"config":735},"DevSecOps",{"href":736,"dataGaName":737,"dataGaLocation":635},"/topics/devsecops/","devsecops",{"text":739,"config":740},"Cloud Native",{"href":741,"dataGaName":742,"dataGaLocation":635},"/topics/cloud-native/","cloud native",{"text":744,"config":745},"AI for Coding",{"href":746,"dataGaName":747,"dataGaLocation":635},"/topics/devops/ai-for-coding/","ai for coding",{"text":749,"config":750},"Agentic AI",{"href":751,"dataGaName":752,"dataGaLocation":635},"/topics/agentic-ai/","agentic ai",{"title":754,"links":755},"Solutions",[756,758,760,765,769,772,776,779,781,784,787,792],{"text":287,"config":757},{"href":282,"dataGaName":287,"dataGaLocation":635},{"text":276,"config":759},{"href":259,"dataGaName":260,"dataGaLocation":635},{"text":761,"config":762},"Agile development",{"href":763,"dataGaName":764,"dataGaLocation":635},"/solutions/agile-delivery/","agile delivery",{"text":766,"config":767},"SCM",{"href":272,"dataGaName":768,"dataGaLocation":635},"source code management",{"text":714,"config":770},{"href":265,"dataGaName":771,"dataGaLocation":635},"continuous integration & delivery",{"text":773,"config":774},"Value stream management",{"href":315,"dataGaName":775,"dataGaLocation":635},"value stream management",{"text":719,"config":777},{"href":778,"dataGaName":722,"dataGaLocation":635},"/solutions/gitops/",{"text":325,"config":780},{"href":328,"dataGaName":329,"dataGaLocation":635},{"text":782,"config":783},"Small business",{"href":334,"dataGaName":335,"dataGaLocation":635},{"text":785,"config":786},"Public sector",{"href":340,"dataGaName":341,"dataGaLocation":635},{"text":788,"config":789},"Education",{"href":790,"dataGaName":791,"dataGaLocation":635},"/solutions/education/","education",{"text":793,"config":794},"Financial services",{"href":795,"dataGaName":796,"dataGaLocation":635},"/solutions/finance/","financial services",{"title":348,"links":798},[799,801,803,805,808,810,813,815,817,819,821,823,825,827],{"text":361,"config":800},{"href":363,"dataGaName":364,"dataGaLocation":635},{"text":366,"config":802},{"href":368,"dataGaName":369,"dataGaLocation":635},{"text":371,"config":804},{"href":373,"dataGaName":374,"dataGaLocation":635},{"text":376,"config":806},{"href":378,"dataGaName":807,"dataGaLocation":635},"docs",{"text":398,"config":809},{"href":400,"dataGaName":401,"dataGaLocation":635},{"text":811,"config":812},"What's new",{"href":457,"dataGaName":458,"dataGaLocation":635},{"text":393,"config":814},{"href":395,"dataGaName":396,"dataGaLocation":635},{"text":412,"config":816},{"href":414,"dataGaName":415,"dataGaLocation":635},{"text":420,"config":818},{"href":422,"dataGaName":423,"dataGaLocation":635},{"text":425,"config":820},{"href":427,"dataGaName":428,"dataGaLocation":635},{"text":430,"config":822},{"href":432,"dataGaName":433,"dataGaLocation":635},{"text":435,"config":824},{"href":437,"dataGaName":438,"dataGaLocation":635},{"text":440,"config":826},{"href":442,"dataGaName":443,"dataGaLocation":635},{"text":445,"config":828},{"href":447,"dataGaName":187,"dataGaLocation":635},{"title":460,"links":830},[831,833,835,837,839,841,845,850,852,854,856],{"text":468,"config":832},{"href":470,"dataGaName":462,"dataGaLocation":635},{"text":473,"config":834},{"href":475,"dataGaName":476,"dataGaLocation":635},{"text":481,"config":836},{"href":483,"dataGaName":484,"dataGaLocation":635},{"text":486,"config":838},{"href":488,"dataGaName":489,"dataGaLocation":635},{"text":491,"config":840},{"href":493,"dataGaName":494,"dataGaLocation":635},{"text":842,"config":843},"Sustainability",{"href":844,"dataGaName":842,"dataGaLocation":635},"/sustainability/",{"text":846,"config":847},"Diversity, inclusion and belonging (DIB)",{"href":848,"dataGaName":849,"dataGaLocation":635},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":496,"config":851},{"href":498,"dataGaName":499,"dataGaLocation":635},{"text":506,"config":853},{"href":508,"dataGaName":509,"dataGaLocation":635},{"text":511,"config":855},{"href":513,"dataGaName":514,"dataGaLocation":635},{"text":857,"config":858},"Modern Slavery Transparency Statement",{"href":859,"dataGaName":860,"dataGaLocation":635},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":862},[863,866,869],{"text":864,"config":865},"Terms",{"href":687,"dataGaName":688,"dataGaLocation":635},{"text":867,"config":868},"Cookies",{"dataGaName":697,"dataGaLocation":635,"id":698,"isOneTrustButton":177},{"text":870,"config":871},"Privacy",{"href":692,"dataGaName":693,"dataGaLocation":635},[873],{"id":874,"title":7,"body":173,"config":875,"content":877,"description":173,"extension":881,"meta":882,"navigation":177,"path":883,"seo":884,"stem":885,"__hash__":886},"blogAuthors/en-us/blog/authors/sam-white.yml",{"template":876},"BlogAuthor",{"name":7,"config":878},{"headshot":879,"ctfId":880},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682227/Blog/Author%20Headshots/sam.png","samwhite","yml",{},"/en-us/blog/authors/sam-white",{},"en-us/blog/authors/sam-white","X8bIdQl4OkmvGusN-6F5_nA4SjFr7Q1_o191tEXti8g",[888,896,904],{"title":889,"description":890,"heroImage":891,"category":169,"date":892,"authors":893,"slug":895,"externalUrl":173},"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",[894],"Julian Thome","improved-scope-offset-fingerprinting",{"title":897,"description":898,"heroImage":891,"category":169,"date":899,"authors":900,"slug":903,"externalUrl":173},"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",[901,902],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":905,"description":906,"heroImage":907,"category":169,"date":908,"authors":909,"slug":911,"externalUrl":173},"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",[910],"Alisa Ho","claude-security-and-gitlab",{"promotions":913},[914,928,940,951],{"id":915,"categories":916,"header":918,"text":919,"button":920,"image":925},"ai-modernization",[917],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":921,"config":922},"Get your AI maturity score",{"href":923,"dataGaName":924,"dataGaLocation":401},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":926},{"src":927},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":929,"categories":930,"header":932,"text":919,"button":933,"image":937},"devops-modernization",[931,737],"product","Are you just managing tools or shipping innovation?",{"text":934,"config":935},"Get your DevOps maturity score",{"href":936,"dataGaName":924,"dataGaLocation":401},"/assessments/devops-modernization-assessment/",{"config":938},{"src":939},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":941,"categories":942,"header":943,"text":919,"button":944,"image":948},"security-modernization",[169],"Are you trading speed for security?",{"text":945,"config":946},"Get your security maturity score",{"href":947,"dataGaName":924,"dataGaLocation":401},"/assessments/security-modernization-assessment/",{"config":949},{"src":950},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":952,"paths":953,"header":956,"text":957,"button":958,"image":963},"github-azure-migration",[954,955],"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":959,"config":960},"See how GitLab compares to GitHub",{"href":961,"dataGaName":962,"dataGaLocation":401},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":964},{"src":939},{"header":966,"blurb":967,"button":968,"secondaryButton":973},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":969,"config":970},"Get your free trial",{"href":971,"dataGaName":201,"dataGaLocation":972},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":673,"config":974},{"href":525,"dataGaName":206,"dataGaLocation":972},1786803772602]