[{"data":1,"prerenderedAt":1351},["ShallowReactive",2],{"/de-de/blog/improve-security-auditing-with-gitlab-operational-container-scanning":3,"navigation-de-de":569,"banner-de-de":1001,"footer-de-de":1009,"blog-post-authors-de-de-Daniel Helfand":1249,"blog-related-posts-de-de-improve-security-auditing-with-gitlab-operational-container-scanning":1264,"blog-promotions-de-de":1289,"next-steps-de-de":1341},{"id":4,"title":5,"authors":6,"body":8,"category":547,"date":548,"description":549,"extension":550,"externalUrl":551,"faq":551,"featured":552,"heroImage":553,"meta":554,"navigation":152,"path":555,"seo":556,"slug":560,"stem":561,"tags":562,"template":567,"updatedDate":551,"__hash__":568},"blogPosts/de-de/blog/improve-security-auditing-with-gitlab-operational-container-scanning.md","Sicherheitsüberprüfung mittels GitLab Operational Scanning",[7],"Daniel Helfand",{"type":9,"value":10,"toc":536},"minimark",[11,22,31,39,42,47,50,84,99,103,115,179,186,212,215,223,226,230,239,244,256,260,300,304,310,317,339,342,348,355,359,378,389,407,457,464,478,481,484,487,500,504,513,532],[12,13,14,15,21],"p",{},"Security-Scans sind regulärer Bestandteil jedes Software-Entwicklungsprozesses. Ob beim Scannen von Source-Code (beispielsweise Java oder Python), Konfigurationsdateien (beispielsweise YAML) oder ",[16,17,20],"a",{"href":18,"rel":19},"https://cloudnativenow.com/kubecon-cnc-na-2024/unlocking-the-full-potential-of-container-vulnerability-scans/",[],"Container-Images"," – diese Scanning-Tools helfen Entwicklungsteams, Security-Threats systematisch zu verstehen und zu adressieren.",[12,23,24,25,30],{},"Traditionell führen Entwickler diese ",[16,26,29],{"href":27,"rel":28},"https://docs.gitlab.com/user/application_security/container_scanning/",[],"Security-Scans als Teil von CI/CD-Pipelines"," durch. Durch Integration dieser Scans in CI/CD wird jede Änderung an einem Projekt überprüft, um zu sehen, ob Vulnerabilities eingeführt werden. Das Verständnis von Security-Concerns während der Entwicklung trägt dazu bei, dass Änderungen adressiert werden, bevor sie in eine Live-Umgebung deployed werden. Container-Vulnerability-Scans nach dem Deployment bieten jedoch weitere Vorteile: Die automatisierten Scans laufen unabhängig vom Merge-Request-Prozess und erfordern keine Code-Änderungen, um ausgeführt zu werden. Dies gewährleistet kontinuierliche Überwachung auch für stabile Production-Umgebungen, in denen selten Deployments stattfinden.",[12,32,33,38],{},[16,34,37],{"href":35,"rel":36},"https://docs.gitlab.com/user/clusters/agent/vulnerabilities/",[],"GitLabs Operational Container Scanning","-Feature ermöglicht DevSecOps-Praktikern, Container-Vulnerability-Scans gegen Container in Kubernetes-Umgebungen durchzuführen. Die Vorteile von Vulnerability-Scans auf deployed Containern umfassen regelmäßiges Scannen der Images auf neu entdeckte Vulnerabilities, Tracking, in welchen Umgebungen bestimmte Vulnerabilities deployed sind, sowie Tracking des Fortschritts bei der Behebung dieser Vulnerabilities.",[12,40,41],{},"Die Scans können konfiguriert werden, um in regelmäßigen Intervallen auf Containern in spezifischen Namespaces eines Kubernetes-Clusters zu laufen. Die Ergebnisse dieser Scans werden zurück zu GitLab-Projekten gesendet und können über die GitLab-UI angezeigt werden. Um zu demonstrieren, wie das Feature genau funktioniert, zeigen die nächsten Schritte in diesem Artikel, wie das Operational-Container-Scanning-Feature mit einem GitLab-Projekt, einer Sample-Applikation und einem Kubernetes-Cluster angewendet wird.",[43,44,46],"h2",{"id":45},"prerequisites","Prerequisites",[12,48,49],{},"Für den Start wird Folgendes benötigt:",[51,52,53,61,70,77],"ul",{},[54,55,56],"li",{},[16,57,60],{"href":58,"rel":59},"https://about.gitlab.com/de-de/free-trial/",[],"GitLab-Ultimate-Account",[54,62,63,64,69],{},"Kubernetes-Cluster, der ",[16,65,68],{"href":66,"rel":67},"https://docs.gitlab.com/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features",[],"GitLabs Kubernetes-Versionsanforderungen"," erfüllt",[54,71,72],{},[16,73,76],{"href":74,"rel":75},"https://kubernetes.io/docs/tasks/tools/#kubectl",[],"kubectl CLI",[54,78,79],{},[16,80,83],{"href":81,"rel":82},"https://helm.sh/docs/intro/install/",[],"helm CLI",[12,85,86,87,92,93,98],{},"Zusätzlich verwendet das Tutorial unten ein ",[16,88,91],{"href":89,"rel":90},"https://gitlab.com/gitlab-da/tutorials/cloud-native/operational-container-scanning-tutorial",[],"GitLab-Projekt",", das in eine ",[16,94,97],{"href":95,"rel":96},"https://docs.gitlab.com/user/group/",[],"GitLab-Gruppe"," geforkt werden kann, wo entsprechende Permissions vorhanden sind, um die folgenden Schritte durchzuführen.",[43,100,102],{"id":101},"sample-applikation-deployen","Sample-Applikation deployen",[12,104,105,106,110,111,114],{},"Die erste Aktion ist das Deployment einer Sample-Applikation auf dem Kubernetes-Cluster für dieses Tutorial. Vor Ausführung des ",[107,108,109],"code",{},"kubectl","-Commands zum Deployment der Sample-Applikation ist sicherzustellen, dass ",[107,112,113],{},"KUBECONFIG"," auf den gewünschten Cluster gesetzt ist. Nach erfolgter Einrichtung für den Cluster den folgenden Command ausführen:",[116,117,122],"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-bash shiki shiki-themes github-light","$ kubectl apply -f https://gitlab.com/gitlab-da/tutorials/cloud-native/go-web-server/-/raw/main/manifests/go-web-server-manifests.yaml\n\nnamespace/go-web-server-dev created\ndeployment.apps/go-web-server created\nservice/go-web-server created\n","bash","",[107,123,124,147,154,163,171],{"__ignoreMap":121},[125,126,129,133,137,140,144],"span",{"class":127,"line":128},"line",1,[125,130,132],{"class":131},"s7eDp","$",[125,134,136],{"class":135},"sYBdl"," kubectl",[125,138,139],{"class":135}," apply",[125,141,143],{"class":142},"sYu0t"," -f",[125,145,146],{"class":135}," https://gitlab.com/gitlab-da/tutorials/cloud-native/go-web-server/-/raw/main/manifests/go-web-server-manifests.yaml\n",[125,148,150],{"class":127,"line":149},2,[125,151,153],{"emptyLinePlaceholder":152},true,"\n",[125,155,157,160],{"class":127,"line":156},3,[125,158,159],{"class":131},"namespace/go-web-server-dev",[125,161,162],{"class":135}," created\n",[125,164,166,169],{"class":127,"line":165},4,[125,167,168],{"class":131},"deployment.apps/go-web-server",[125,170,162],{"class":135},[125,172,174,177],{"class":127,"line":173},5,[125,175,176],{"class":131},"service/go-web-server",[125,178,162],{"class":135},[12,180,181,182,185],{},"Warten, bis alle Pods im ",[107,183,184],{},"go-web-server-dev","-Namespace laufen, durch Ausführung des folgenden Commands:",[116,187,189],{"className":118,"code":188,"language":120,"meta":121,"style":121},"$ kubectl get pods -n go-web-server-dev -w\n",[107,190,191],{"__ignoreMap":121},[125,192,193,195,197,200,203,206,209],{"class":127,"line":128},[125,194,132],{"class":131},[125,196,136],{"class":135},[125,198,199],{"class":135}," get",[125,201,202],{"class":135}," pods",[125,204,205],{"class":142}," -n",[125,207,208],{"class":135}," go-web-server-dev",[125,210,211],{"class":142}," -w\n",[12,213,214],{},"Output ähnlich dem unten gezeigten sollte erscheinen:",[116,216,221],{"className":217,"code":219,"language":220,"meta":121},[218],"language-text","NAME                            READY   STATUS    RESTARTS   AGE\ngo-web-server-f6b8767dc-57269   1/1     Running   0          18m\ngo-web-server-f6b8767dc-fkct2   1/1     Running   0          18m\ngo-web-server-f6b8767dc-j4qwg   1/1     Running   0          18m\n","text",[107,222,219],{"__ignoreMap":121},[12,224,225],{},"Sobald alles läuft, kann das geforkte GitLab-Projekt eingerichtet werden, um es mit dem Kubernetes-Cluster zu verbinden und die Operational-Container-Scanning-Properties zu konfigurieren.",[43,227,229],{"id":228},"kubernetes-cluster-verbinden","Kubernetes-Cluster verbinden",[12,231,232,233,238],{},"Dieser Abschnitt zeigt, wie ein Kubernetes-Cluster über den ",[16,234,237],{"href":235,"rel":236},"https://docs.gitlab.com/user/clusters/agent/",[],"GitLab Agent für Kubernetes"," mit dem GitLab-Projekt verbunden wird. Durch Konfiguration und Installation des Agent auf dem Kubernetes-Cluster lässt sich auch Operational Container Scanning konfigurieren.",[240,241,243],"h3",{"id":242},"id-property-für-gitlab-kubernetes-agent-ändern","id-Property für GitLab Kubernetes-Agent ändern",[12,245,246,247,255],{},"Im geforkten GitLab-Projekt die ",[16,248,251,254],{"href":249,"rel":250},"https://gitlab.com/gitlab-da/tutorials/cloud-native/operational-container-scanning-tutorial/-/blob/main/.gitlab/agents/k8s-agent/config.yaml?ref_type=heads#L5",[],[107,252,253],{},"id","-Property in der config.yaml-Datei"," ändern, um sie mit der Gruppe abzugleichen, in die das Projekt geforkt wurde. Dadurch wird der GitLab Agent für Kubernetes konfiguriert, um Informationen über den Cluster zurück zum GitLab-Projekt zu übergeben. Diese Änderung in den Main-Branch des geforkten Projekts committen und pushen.",[240,257,259],{"id":258},"zur-kubernetes-clusters-page-des-projekts-navigieren","Zur Kubernetes-Clusters-Page des Projekts navigieren",[12,261,262,263,267,268,271,272,275,276,279,280,283,284,287,288,290,291,296,297,299],{},"In der GitLab-UI den Tab ",[264,265,266],"strong",{},"Operate > Kubernetes clusters"," des geforkten Projekts wählen. Den Button ",[264,269,270],{},"Connect a cluster (agent)"," klicken. Den Namen des Agent zur Input-Box unter ",[107,273,274],{},"Option 2: Create and register an agent with the UI"," hinzufügen und dann ",[264,277,278],{},"Create and register"," klicken. In diesem Fall ist der Name des Agent ",[107,281,282],{},"k8s-agent",", da der Folder unter agents mit der ",[107,285,286],{},"config.yaml","-Datei ",[107,289,282],{}," heißt. Zu beachten ist, dass dieser Folder jeden Namen haben kann, der den ",[16,292,295],{"href":293,"rel":294},"https://docs.gitlab.com/user/clusters/agent/install/#create-an-agent-configuration-file",[],"Kubernetes-Naming-Restrictions"," folgt, und dass ",[107,298,282],{}," nur der Einfachheit halber verwendet wird.",[240,301,303],{"id":302},"gitlab-kubernetes-agent-installieren","GitLab-Kubernetes-Agent installieren",[12,305,306,307,309],{},"Nach Registrierung des Agent wird ein helm-Command angezeigt, der in der GitLab-UI zu sehen ist und von der Command-Line gegen den Kubernetes-Cluster auszuführen ist. Vor Ausführung des Commands sicherstellen, dass ",[107,308,113],{}," noch mit dem gleichen Cluster verbunden ist, auf dem die Sample-Applikation deployed wurde.",[12,311,312,313,316],{},"Nach erfolgreicher Ausführung des helm-Commands warten, bis alle Pods im ",[107,314,315],{},"gitlab-agent-k8s-agent","-Namespace auf dem Cluster laufen. Das Warten kann mit folgendem Command erfolgen:",[116,318,320],{"className":118,"code":319,"language":120,"meta":121,"style":121},"$ kubectl get pods -n gitlab-agent-k8s-agent -w\n",[107,321,322],{"__ignoreMap":121},[125,323,324,326,328,330,332,334,337],{"class":127,"line":128},[125,325,132],{"class":131},[125,327,136],{"class":135},[125,329,199],{"class":135},[125,331,202],{"class":135},[125,333,205],{"class":142},[125,335,336],{"class":135}," gitlab-agent-k8s-agent",[125,338,211],{"class":142},[12,340,341],{},"Ähnlicher Output wie unten gezeigt sollte erscheinen:",[116,343,346],{"className":344,"code":345,"language":220,"meta":121},[218],"NAME                                         READY   STATUS    RESTARTS   AGE\nk8s-agent-gitlab-agent-v2-6bb676b6bf-v4qml   1/1     Running   0          10m\nk8s-agent-gitlab-agent-v2-6bb676b6bf-xt7xh   1/1     Running   0          10m\n",[107,347,345],{"__ignoreMap":121},[12,349,350,351,354],{},"Sobald die Pods laufen, sollte das GitLab-Projekt mit dem Kubernetes-Cluster verbunden sein und bereit, das Operational-Container-Scanning-Feature zu nutzen. Vor dem Fortfahren den ",[107,352,353],{},"kubectl get pods -n gitlab-agent-k8s-agent -w","-Command weiterhin ausführen, um Konzepte im nächsten Abschnitt zu erklären.",[43,356,358],{"id":357},"operational-container-scanning","Operational Container Scanning",[12,360,361,362,364,365,368,369,374,375,377],{},"Zusätzlich zu den Pods für den GitLab-Agent, die im ",[107,363,315],{},"-Namespace laufen, sollte schließlich ein weiterer Pod namens ",[107,366,367],{},"trivy-scan-go-web-server-dev"," erscheinen. Dieser Pod startet in den konfigurierten Intervallen, führt einen Container-Vulnerability-Scan mit dem Tool ",[16,370,373],{"href":371,"rel":372},"https://trivy.dev/latest/",[],"Trivy"," gegen den ",[107,376,184],{},"-Namespace durch und terminiert nach Abschluss des Scans. Alle Scan-Ergebnisse werden automatisch zurück zum GitLab-Projekt gesendet. Dieser Prozess läuft kontinuierlich und unabhängig von Entwicklungsaktivitäten.",[12,379,380,381,388],{},"Die Operational-Container-Scanning-Properties sind in der ",[16,382,385,387],{"href":383,"rel":384},"https://gitlab.com/gitlab-da/tutorials/cloud-native/operational-container-scanning-tutorial/-/blob/main/.gitlab/agents/k8s-agent/config.yaml?ref_type=heads#L6-L10",[],[107,386,286],{},"-Datei"," definiert, die für die Einrichtung des GitLab-Agent für Kubernetes auf dem Cluster verwendet wird.",[12,390,391,392,395,396,399,400,403,404,406],{},"Die zwei Haupt-Properties sind ",[107,393,394],{},"cadence",", welches die Häufigkeit der Container-Vulnerability-Scans spezifiziert, und die ",[107,397,398],{},"namespaces","-Property, die unter ",[107,401,402],{},"vulnerability_report"," verschachtelt ist und einen oder mehrere Namespaces definiert, auf denen der Scan durchgeführt werden soll. Die Konfiguration in ",[107,405,286],{}," sieht wie folgt aus:",[116,408,412],{"className":409,"code":410,"language":411,"meta":121,"style":121},"language-yaml shiki shiki-themes github-light","container_scanning:\n  cadence: '*/5 * * * *'\n  vulnerability_report:\n    namespaces:\n      - go-web-server-dev\n","yaml",[107,413,414,424,435,442,449],{"__ignoreMap":121},[125,415,416,420],{"class":127,"line":128},[125,417,419],{"class":418},"shJU0","container_scanning",[125,421,423],{"class":422},"sgsFI",":\n",[125,425,426,429,432],{"class":127,"line":149},[125,427,428],{"class":418},"  cadence",[125,430,431],{"class":422},": ",[125,433,434],{"class":135},"'*/5 * * * *'\n",[125,436,437,440],{"class":127,"line":156},[125,438,439],{"class":418},"  vulnerability_report",[125,441,423],{"class":422},[125,443,444,447],{"class":127,"line":165},[125,445,446],{"class":418},"    namespaces",[125,448,423],{"class":422},[125,450,451,454],{"class":127,"line":173},[125,452,453],{"class":422},"      - ",[125,455,456],{"class":135},"go-web-server-dev\n",[12,458,459,460,463],{},"Die Cadence folgt einem Cron-Format. In diesem Fall bedeutet ",[107,461,462],{},"*/5 * * * *",", dass der Scan alle fünf Minuten ausgeführt wird – diese hohe Frequenz dient Demo-Zwecken. Für Production-Umgebungen sind typischerweise längere Intervalle sinnvoll (beispielsweise alle 12 oder 24 Stunden), abhängig von den Compliance-Anforderungen und der Änderungsrate der Container-Images. Die Konfiguration erfolgt über Configuration-as-Code, wodurch versionierte, nachvollziehbare Scan-Konfigurationen für Compliance-Audits ermöglicht werden.",[12,465,466,467,469,470,473,474,477],{},"Die durch den Scan aufgedeckten Vulnerabilities für Container im ",[107,468,184],{},"-Namespace werden zurück zum GitLab-Projekt gesendet. Um die Ergebnisse zu sehen, in der GitLab-UI das geforkte Projekt wählen. Die Option ",[264,471,472],{},"Secure > Vulnerability report"," für das Projekt wählen und dann den Tab ",[264,475,476],{},"Operational vulnerabilities",", um Scan-Ergebnisse anzuzeigen.",[12,479,480],{},"Die Scan-Ergebnisse enthalten Informationen über den Schweregrad der Common Vulnerabilities and Exposures (CVEs) zusammen mit dem Namen des Image und dem Cluster, auf dem die Vulnerability aktiv deployed ist. Durch Verwendung des Image-Tags, um die Version der deployed Software zusammen mit der Umgebung einzuschließen, lassen sich systematisch die bekannten Vulnerabilities in den Kubernetes-Umgebungen auditieren und tracken, wie diese von Engineering-Teams adressiert werden.",[12,482,483],{},"GitLab integriert die Scan-Ergebnisse direkt in das Issue-Tracking-System: Für jede identifizierte Vulnerability kann ein Follow-up-Issue erstellt oder der CVE-Kontext zu einem bestehenden Issue hinzugefügt werden. Dies ermöglicht systematisches Tracking der Vulnerability-Behebung über den gesamten Entwicklungszyklus hinweg und unterstützt Audit-Anforderungen durch vollständige Dokumentation des Behebungsprozesses.",[12,485,486],{},"Das folgende Demo zeigt weitere Informationen:",[488,489,492,493],"figure",{"className":490},[491],"video_container","\n  ",[494,495,499],"iframe",{"src":496,"frameBorder":497,"allowFullScreen":498},"https://www.youtube.com/embed/2FVQec2J-Ew?si=T6kwPMnPAGwKlkfP","0","true"," ",[43,501,503],{"id":502},"feedback-teilen","Feedback teilen",[12,505,506,507,512],{},"Das Hinzufügen von GitLabs Operational Container Scanning zu Kubernetes-Umgebungen kann Entwicklungs-, Security- und Infrastruktur-Teams helfen, ein einheitliches Verständnis der Container-Security in Kubernetes-Umgebungen über die gesamte Organisation hinweg zu haben. Zusätzlich zu GitLabs CI-Container-Scanning-Capabilities und der Fähigkeit, ",[16,508,511],{"href":509,"rel":510},"https://www.youtube.com/watch?v=Zuk7Axs-CRw",[],"Container zu scannen, die zu GitLabs Container-Registry gepusht werden",", hat GitLab Lösungen in jeder Phase des Software-Development-Lifecycles, um Container-Security-Concerns zu adressieren.",[12,514,515,516,521,522,526,527,531],{},"Feedback zu Operational Container Scanning kann in diesem ",[16,517,520],{"href":518,"rel":519},"https://forum.gitlab.com/t/operational-container-scanning-feedback/119479",[],"Forum-Post"," geteilt werden, der mit den Product- und Engineering-Teams geteilt wird, die dieses Feature supporten. Der Start mit Operational Container Scanning erfolgt durch Lesen der ",[16,523,525],{"href":35,"rel":524},[],"Dokumentation zum Feature"," und Starten einer ",[16,528,530],{"href":58,"rel":529},[],"kostenlosen Testversion von GitLab Ultimate",".",[533,534,535],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":121,"searchDepth":149,"depth":149,"links":537},[538,539,540,545,546],{"id":45,"depth":149,"text":46},{"id":101,"depth":149,"text":102},{"id":228,"depth":149,"text":229,"children":541},[542,543,544],{"id":242,"depth":156,"text":243},{"id":258,"depth":156,"text":259},{"id":302,"depth":156,"text":303},{"id":357,"depth":149,"text":358},{"id":502,"depth":149,"text":503},"security","2025-01-29","Container-Vulnerabilities nach Deployment überwachen: Tutorial zu GitLab Operational Container Scanning mit Trivy für Kubernetes.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664654/Blog/Hero%20Images/AdobeStock_1172300481.jpg",{},"/de-de/blog/improve-security-auditing-with-gitlab-operational-container-scanning",{"title":5,"description":549,"ogTitle":5,"ogDescription":549,"noIndex":552,"ogImage":553,"ogUrl":557,"ogSiteName":558,"ogType":559,"canonicalUrls":557},"https://about.gitlab.com/blog/improve-security-auditing-with-gitlab-operational-container-scanning","https://about.gitlab.com","article","improve-security-auditing-with-gitlab-operational-container-scanning","de-de/blog/improve-security-auditing-with-gitlab-operational-container-scanning",[563,564,565,547,566],"features","DevSecOps","tutorial","product","BlogPost","VZEwnsnpuyspQ7-h4GVr95wHw4SRudVt2AgnObiB_20",{"logo":570,"freeTrial":575,"sales":580,"login":585,"items":590,"search":919,"minimal":953,"duo":971,"switchNav":980,"pricingDeployment":991},{"config":571},{"href":572,"dataGaName":573,"dataGaLocation":574},"/de-de/","gitlab logo","header",{"text":576,"config":577},"Kostenlose Testversion anfordern",{"href":578,"dataGaName":579,"dataGaLocation":574},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":581,"config":582},"Demo anfordern",{"href":583,"dataGaName":584,"dataGaLocation":574},"/de-de/sales/?contact-topic=request-demo","sales",{"text":586,"config":587},"Anmelden",{"href":588,"dataGaName":589,"dataGaLocation":574},"https://gitlab.com/users/sign_in/","sign in",[591,620,722,727,841,897],{"text":592,"config":593,"menu":595},"Plattform",{"dataNavLevelOne":594},"platform",{"type":596,"columns":597},"cards",[598,604,612],{"title":592,"description":599,"link":600},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":601,"config":602},"Die Plattform erkunden",{"href":603,"dataGaName":594,"dataGaLocation":574},"/de-de/platform/",{"title":605,"description":606,"link":607},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":608,"config":609},"Lerne GitLab Duo kennen",{"href":610,"dataGaName":611,"dataGaLocation":574},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":613,"description":614,"link":615},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":616,"config":617},"Mehr erfahren",{"href":618,"dataGaName":619,"dataGaLocation":574},"/de-de/why-gitlab/","why gitlab",{"text":621,"left":152,"config":622,"menu":624},"Produkt",{"dataNavLevelOne":623},"solutions",{"type":625,"link":626,"columns":630,"feature":701},"lists",{"text":627,"config":628},"Alle Lösungen anzeigen",{"href":629,"dataGaName":623,"dataGaLocation":574},"/de-de/solutions/",[631,656,679],{"title":632,"description":633,"link":634,"items":639},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":635},{"icon":636,"href":637,"dataGaName":638,"dataGaLocation":574},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[640,644,647,652],{"text":641,"config":642},"CI/CD",{"href":643,"dataGaLocation":574,"dataGaName":641},"/de-de/solutions/continuous-integration/",{"text":605,"config":645},{"href":610,"dataGaLocation":574,"dataGaName":646},"gitlab duo agent platform - product menu",{"text":648,"config":649},"Quellcodeverwaltung",{"href":650,"dataGaLocation":574,"dataGaName":651},"/de-de/solutions/source-code-management/","Source Code Management",{"text":653,"config":654},"Automatische Softwarebereitstellung",{"href":637,"dataGaLocation":574,"dataGaName":655},"Automated software delivery",{"title":657,"description":658,"link":659,"items":664},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":660},{"href":661,"dataGaName":662,"dataGaLocation":574,"icon":663},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[665,669,674],{"text":666,"config":667},"Anwendungssicherheitstests",{"href":661,"dataGaName":668,"dataGaLocation":574},"Application security testing",{"text":670,"config":671},"Schutz der Software-Lieferkette",{"href":672,"dataGaLocation":574,"dataGaName":673},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":675,"config":676},"Software-Compliance",{"href":677,"dataGaName":678,"dataGaLocation":574},"/de-de/solutions/software-compliance/","software compliance",{"title":680,"link":681,"items":686},"Messung",{"config":682},{"icon":683,"href":684,"dataGaName":685,"dataGaLocation":574},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[687,691,696],{"text":688,"config":689},"Sichtbarkeit und Messung",{"href":684,"dataGaLocation":574,"dataGaName":690},"Visibility and Measurement",{"text":692,"config":693},"Wertstrommanagement",{"href":694,"dataGaLocation":574,"dataGaName":695},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":697,"config":698},"Analysen und Einblicke",{"href":699,"dataGaLocation":574,"dataGaName":700},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":702,"type":625,"items":703},"GitLab für",[704,710,716],{"text":705,"config":706},"Enterprise",{"icon":707,"href":708,"dataGaLocation":574,"dataGaName":709},"Building","/de-de/enterprise/","enterprise",{"text":711,"config":712},"Kleinunternehmen",{"icon":713,"href":714,"dataGaLocation":574,"dataGaName":715},"Work","/de-de/small-business/","small business",{"text":717,"config":718},"Öffentlicher Sektor",{"icon":719,"href":720,"dataGaLocation":574,"dataGaName":721},"Organization","/de-de/solutions/public-sector/","public sector",{"text":723,"config":724},"Preise",{"href":725,"dataGaName":726,"dataGaLocation":574,"dataNavLevelOne":726},"/de-de/pricing/","pricing",{"text":728,"config":729,"menu":731},"Ressourcen",{"dataNavLevelOne":730},"resources",{"type":625,"link":732,"columns":736,"feature":830},{"text":733,"config":734},"Alle Ressourcen anzeigen",{"href":735,"dataGaName":730,"dataGaLocation":574},"/de-de/resources/",[737,770,797],{"title":738,"items":739},"Erste Schritte",[740,745,750,755,760,765],{"text":741,"config":742},"Installieren",{"href":743,"dataGaName":744,"dataGaLocation":574},"/de-de/install/","install",{"text":746,"config":747},"Kurzanleitungen",{"href":748,"dataGaName":749,"dataGaLocation":574},"/de-de/get-started/","quick setup checklists",{"text":751,"config":752},"Lernen",{"href":753,"dataGaLocation":574,"dataGaName":754},"https://university.gitlab.com/","learn",{"text":756,"config":757},"Produktdokumentation",{"href":758,"dataGaName":759,"dataGaLocation":574},"https://docs.gitlab.com/","product documentation",{"text":761,"config":762},"Best-Practice-Videos",{"href":763,"dataGaName":764,"dataGaLocation":574},"/de-de/getting-started-videos/","best practice videos",{"text":766,"config":767},"Integrationen",{"href":768,"dataGaName":769,"dataGaLocation":574},"/de-de/integrations/","integrations",{"title":771,"items":772},"Entdecken",[773,778,783,788,792],{"text":774,"config":775},"Kundenerfolge",{"href":776,"dataGaName":777,"dataGaLocation":574},"/de-de/customers/","customer success stories",{"text":779,"config":780},"Blog",{"href":781,"dataGaName":782,"dataGaLocation":574},"/de-de/blog/","blog",{"text":784,"config":785},"Demo-Hub",{"href":786,"dataGaName":787,"dataGaLocation":574},"/de-de/demo-hub/","demo hub",{"text":789,"config":790},"The Source",{"href":791,"dataGaName":782,"dataGaLocation":574},"/de-de/the-source/",{"text":793,"config":794},"Remote",{"href":795,"dataGaName":796,"dataGaLocation":574},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":798,"items":799},"Vernetzen",[800,805,810,815,820,825],{"text":801,"config":802},"GitLab-Services",{"href":803,"dataGaName":804,"dataGaLocation":574},"/de-de/services/","services",{"text":806,"config":807},"Beitragen",{"href":808,"dataGaName":809,"dataGaLocation":574},"https://contributors.gitlab.com","contribute",{"text":811,"config":812},"Community",{"href":813,"dataGaName":814,"dataGaLocation":574},"/community/","community",{"text":816,"config":817},"Forum",{"href":818,"dataGaName":819,"dataGaLocation":574},"https://forum.gitlab.com/","forum",{"text":821,"config":822},"Veranstaltungen",{"href":823,"dataGaName":824,"dataGaLocation":574},"/events/","events",{"text":826,"config":827},"Partner",{"href":828,"dataGaName":829,"dataGaLocation":574},"/de-de/partners/","partners",{"config":831,"title":834,"text":835,"link":836},{"background":832,"textColor":833},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":837,"config":838},"Aktuelle Nachrichten",{"href":839,"dataGaName":840,"dataGaLocation":574},"/de-de/whats-new/","whats new",{"text":842,"config":843,"menu":845},"Unternehmen",{"dataNavLevelOne":844},"company",{"type":625,"columns":846},[847],{"items":848},[849,854,860,862,867,872,877,882,887,892],{"text":850,"config":851},"Über",{"href":852,"dataGaName":853,"dataGaLocation":574},"/de-de/company/","about",{"text":855,"config":856,"footerGa":859},"Karriere",{"href":857,"dataGaName":858,"dataGaLocation":574},"/jobs/","jobs",{"dataGaName":858},{"text":821,"config":861},{"href":823,"dataGaName":824,"dataGaLocation":574},{"text":863,"config":864},"Geschäftsführung",{"href":865,"dataGaName":866,"dataGaLocation":574},"/company/team/e-group/","leadership",{"text":868,"config":869},"Handbuch",{"href":870,"dataGaName":871,"dataGaLocation":574},"https://handbook.gitlab.com/","handbook",{"text":873,"config":874},"Investor Relations",{"href":875,"dataGaName":876,"dataGaLocation":574},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":878,"config":879},"Trust Center",{"href":880,"dataGaName":881,"dataGaLocation":574},"/de-de/security/","trust center",{"text":883,"config":884},"AI Transparency Center",{"href":885,"dataGaName":886,"dataGaLocation":574},"/de-de/ai-transparency-center/","ai transparency center",{"text":888,"config":889},"Newsletter",{"href":890,"dataGaName":891,"dataGaLocation":574},"/company/contact/#contact-forms","newsletter",{"text":893,"config":894},"Presse",{"href":895,"dataGaName":896,"dataGaLocation":574},"/press/","press",{"text":898,"config":899,"menu":900},"Kontakt",{"dataNavLevelOne":844},{"type":625,"columns":901},[902],{"items":903},[904,909,914],{"text":905,"config":906},"Vertrieb kontaktieren",{"href":907,"dataGaName":908,"dataGaLocation":574},"/de-de/sales/","talk to sales",{"text":910,"config":911},"Support-Portal",{"href":912,"dataGaName":913,"dataGaLocation":574},"https://support.gitlab.com/hc/en-us","support portal",{"text":915,"config":916},"Kundenportal",{"href":917,"dataGaName":918,"dataGaLocation":574},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":920,"login":921,"suggestions":928},"Schließen",{"text":922,"link":923},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":924,"config":925},"gitlab.com",{"href":588,"dataGaName":926,"dataGaLocation":927},"search login","search",{"text":929,"default":930},"Vorschläge",[931,933,938,940,945,950],{"text":605,"config":932},{"href":610,"dataGaName":605,"dataGaLocation":927},{"text":934,"config":935},"Codevorschläge (KI)",{"href":936,"dataGaName":937,"dataGaLocation":927},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":641,"config":939},{"href":643,"dataGaName":641,"dataGaLocation":927},{"text":941,"config":942},"GitLab auf AWS",{"href":943,"dataGaName":944,"dataGaLocation":927},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":946,"config":947},"GitLab auf Google Cloud",{"href":948,"dataGaName":949,"dataGaLocation":927},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":613,"config":951},{"href":618,"dataGaName":952,"dataGaLocation":927},"Why GitLab?",{"freeTrial":954,"mobileIcon":959,"desktopIcon":964,"secondaryButton":967},{"text":955,"config":956},"Kostenlos testen",{"href":957,"dataGaName":579,"dataGaLocation":958},"https://gitlab.com/-/trials/new/","nav",{"altText":960,"config":961},"GitLab-Symbol",{"src":962,"dataGaName":963,"dataGaLocation":958},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":960,"config":965},{"src":966,"dataGaName":963,"dataGaLocation":958},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":738,"config":968},{"href":969,"dataGaName":970,"dataGaLocation":958},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":972,"mobileIcon":976,"desktopIcon":978},{"text":973,"config":974},"Mehr über GitLab Duo erfahren",{"href":610,"dataGaName":975,"dataGaLocation":958},"gitlab duo",{"altText":960,"config":977},{"src":962,"dataGaName":963,"dataGaLocation":958},{"altText":960,"config":979},{"src":966,"dataGaName":963,"dataGaLocation":958},{"button":981,"mobileIcon":986,"desktopIcon":988},{"text":982,"config":983},"/Option",{"href":984,"dataGaName":985,"dataGaLocation":958},"#contact","switch",{"altText":960,"config":987},{"src":962,"dataGaName":963,"dataGaLocation":958},{"altText":960,"config":989},{"src":990,"dataGaName":963,"dataGaLocation":958},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":992,"mobileIcon":997,"desktopIcon":999},{"text":993,"config":994},"Zurück zur Preisübersicht",{"href":725,"dataGaName":995,"dataGaLocation":958,"icon":996},"back to pricing","GoBack",{"altText":960,"config":998},{"src":962,"dataGaName":963,"dataGaLocation":958},{"altText":960,"config":1000},{"src":966,"dataGaName":963,"dataGaLocation":958},{"title":1002,"button":1003,"config":1007},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":616,"config":1004},{"href":1005,"dataGaName":1006,"dataGaLocation":574},"/de-de/gitlab-orbit/","orbit",{"layout":1008,"disabled":552},"release",{"data":1010},{"text":1011,"source":1012,"edit":1018,"contribute":1023,"config":1028,"items":1033,"minimal":1238},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1013,"config":1014},"Quelltext der Seite anzeigen",{"href":1015,"dataGaName":1016,"dataGaLocation":1017},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1019,"config":1020},"Diese Seite bearbeiten",{"href":1021,"dataGaName":1022,"dataGaLocation":1017},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1024,"config":1025},"Beteilige dich",{"href":1026,"dataGaName":1027,"dataGaLocation":1017},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1029,"facebook":1030,"youtube":1031,"linkedin":1032},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1034,1079,1131,1173,1205],{"title":723,"links":1035,"subMenu":1050},[1036,1040,1045],{"text":1037,"config":1038},"Tarife anzeigen",{"href":725,"dataGaName":1039,"dataGaLocation":1017},"view plans",{"text":1041,"config":1042},"Vorteile von Premium",{"href":1043,"dataGaName":1044,"dataGaLocation":1017},"/de-de/pricing/premium/","why premium",{"text":1046,"config":1047},"Vorteile von Ultimate",{"href":1048,"dataGaName":1049,"dataGaLocation":1017},"/de-de/pricing/ultimate/","why ultimate",[1051],{"title":898,"links":1052},[1053,1055,1057,1059,1064,1069,1074],{"text":905,"config":1054},{"href":907,"dataGaName":584,"dataGaLocation":1017},{"text":910,"config":1056},{"href":912,"dataGaName":913,"dataGaLocation":1017},{"text":915,"config":1058},{"href":917,"dataGaName":918,"dataGaLocation":1017},{"text":1060,"config":1061},"Status",{"href":1062,"dataGaName":1063,"dataGaLocation":1017},"https://status.gitlab.com/","status",{"text":1065,"config":1066},"Nutzungsbedingungen",{"href":1067,"dataGaName":1068,"dataGaLocation":1017},"/terms/","terms of use",{"text":1070,"config":1071},"Datenschutzerklärung",{"href":1072,"dataGaName":1073,"dataGaLocation":1017},"/de-de/privacy/","privacy statement",{"text":1075,"config":1076},"Cookie-Einstellungen",{"dataGaName":1077,"dataGaLocation":1017,"id":1078,"isOneTrustButton":152},"cookie preferences","ot-sdk-btn",{"title":621,"links":1080,"subMenu":1089},[1081,1085],{"text":1082,"config":1083},"DevSecOps-Plattform",{"href":603,"dataGaName":1084,"dataGaLocation":1017},"devsecops platform",{"text":1086,"config":1087},"KI-unterstützte Entwicklung",{"href":610,"dataGaName":1088,"dataGaLocation":1017},"ai-assisted development",[1090],{"title":1091,"links":1092},"Themen",[1093,1097,1102,1107,1112,1116,1121,1126],{"text":641,"config":1094},{"href":1095,"dataGaName":1096,"dataGaLocation":1017},"/de-de/topics/ci-cd/","cicd",{"text":1098,"config":1099},"GitOps",{"href":1100,"dataGaName":1101,"dataGaLocation":1017},"/de-de/topics/gitops/","gitops",{"text":1103,"config":1104},"DevOps",{"href":1105,"dataGaName":1106,"dataGaLocation":1017},"/de-de/topics/devops/","devops",{"text":1108,"config":1109},"Versionskontrolle",{"href":1110,"dataGaName":1111,"dataGaLocation":1017},"/de-de/topics/version-control/","version control",{"text":564,"config":1113},{"href":1114,"dataGaName":1115,"dataGaLocation":1017},"/de-de/topics/devsecops/","devsecops",{"text":1117,"config":1118},"Cloud-nativ",{"href":1119,"dataGaName":1120,"dataGaLocation":1017},"/de-de/topics/cloud-native/","cloud native",{"text":1122,"config":1123},"KI für das Programmieren",{"href":1124,"dataGaName":1125,"dataGaLocation":1017},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1127,"config":1128},"Agentische KI",{"href":1129,"dataGaName":1130,"dataGaLocation":1017},"/de-de/topics/agentic-ai/","agentic ai",{"title":1132,"links":1133},"Lösungen",[1134,1137,1139,1144,1148,1151,1154,1157,1159,1161,1163,1168],{"text":666,"config":1135},{"href":661,"dataGaName":1136,"dataGaLocation":1017},"Application Security Testing",{"text":653,"config":1138},{"href":637,"dataGaName":638,"dataGaLocation":1017},{"text":1140,"config":1141},"Agile Entwicklung",{"href":1142,"dataGaName":1143,"dataGaLocation":1017},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1145,"config":1146},"SCM",{"href":650,"dataGaName":1147,"dataGaLocation":1017},"source code management",{"text":641,"config":1149},{"href":643,"dataGaName":1150,"dataGaLocation":1017},"continuous integration & delivery",{"text":692,"config":1152},{"href":694,"dataGaName":1153,"dataGaLocation":1017},"value stream management",{"text":1098,"config":1155},{"href":1156,"dataGaName":1101,"dataGaLocation":1017},"/de-de/solutions/gitops/",{"text":705,"config":1158},{"href":708,"dataGaName":709,"dataGaLocation":1017},{"text":711,"config":1160},{"href":714,"dataGaName":715,"dataGaLocation":1017},{"text":717,"config":1162},{"href":720,"dataGaName":721,"dataGaLocation":1017},{"text":1164,"config":1165},"Bildungswesen",{"href":1166,"dataGaName":1167,"dataGaLocation":1017},"/de-de/solutions/education/","education",{"text":1169,"config":1170},"Finanzdienstleistungen",{"href":1171,"dataGaName":1172,"dataGaLocation":1017},"/de-de/solutions/finance/","financial services",{"title":728,"links":1174},[1175,1177,1179,1181,1184,1186,1189,1191,1193,1195,1197,1199,1201,1203],{"text":741,"config":1176},{"href":743,"dataGaName":744,"dataGaLocation":1017},{"text":746,"config":1178},{"href":748,"dataGaName":749,"dataGaLocation":1017},{"text":751,"config":1180},{"href":753,"dataGaName":754,"dataGaLocation":1017},{"text":756,"config":1182},{"href":758,"dataGaName":1183,"dataGaLocation":1017},"docs",{"text":779,"config":1185},{"href":781,"dataGaName":782,"dataGaLocation":1017},{"text":1187,"config":1188},"Neuerungen",{"href":839,"dataGaName":840,"dataGaLocation":1017},{"text":774,"config":1190},{"href":776,"dataGaName":777,"dataGaLocation":1017},{"text":793,"config":1192},{"href":795,"dataGaName":796,"dataGaLocation":1017},{"text":801,"config":1194},{"href":803,"dataGaName":804,"dataGaLocation":1017},{"text":806,"config":1196},{"href":808,"dataGaName":809,"dataGaLocation":1017},{"text":811,"config":1198},{"href":813,"dataGaName":814,"dataGaLocation":1017},{"text":816,"config":1200},{"href":818,"dataGaName":819,"dataGaLocation":1017},{"text":821,"config":1202},{"href":823,"dataGaName":824,"dataGaLocation":1017},{"text":826,"config":1204},{"href":828,"dataGaName":829,"dataGaLocation":1017},{"title":842,"links":1206},[1207,1209,1211,1213,1215,1217,1222,1227,1229,1231,1233],{"text":850,"config":1208},{"href":852,"dataGaName":844,"dataGaLocation":1017},{"text":855,"config":1210},{"href":857,"dataGaName":858,"dataGaLocation":1017},{"text":863,"config":1212},{"href":865,"dataGaName":866,"dataGaLocation":1017},{"text":868,"config":1214},{"href":870,"dataGaName":871,"dataGaLocation":1017},{"text":873,"config":1216},{"href":875,"dataGaName":876,"dataGaLocation":1017},{"text":1218,"config":1219},"Nachhaltigkeit",{"href":1220,"dataGaName":1221,"dataGaLocation":1017},"/sustainability/","Sustainability",{"text":1223,"config":1224},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1225,"dataGaName":1226,"dataGaLocation":1017},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":878,"config":1228},{"href":880,"dataGaName":881,"dataGaLocation":1017},{"text":888,"config":1230},{"href":890,"dataGaName":891,"dataGaLocation":1017},{"text":893,"config":1232},{"href":895,"dataGaName":896,"dataGaLocation":1017},{"text":1234,"config":1235},"Transparenzerklärung zu moderner Sklaverei",{"href":1236,"dataGaName":1237,"dataGaLocation":1017},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1239},[1240,1243,1246],{"text":1241,"config":1242},"Terms",{"href":1067,"dataGaName":1068,"dataGaLocation":1017},{"text":1244,"config":1245},"Cookies",{"dataGaName":1077,"dataGaLocation":1017,"id":1078,"isOneTrustButton":152},{"text":1247,"config":1248},"Datenschutz",{"href":1072,"dataGaName":1073,"dataGaLocation":1017},[1250],{"id":1251,"title":7,"body":551,"config":1252,"content":1254,"description":551,"extension":1258,"meta":1259,"navigation":152,"path":1260,"seo":1261,"stem":1262,"__hash__":1263},"blogAuthors/en-us/blog/authors/daniel-helfand.yml",{"template":1253},"BlogAuthor",{"name":7,"config":1255},{"headshot":1256,"ctfId":1257},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662418/Blog/Author%20Headshots/dhelfand.png","b9sRP0HJhdPsOEruWUfih","yml",{},"/en-us/blog/authors/daniel-helfand",{},"en-us/blog/authors/daniel-helfand","U_csW5bNItyLp5wX6zV8xvC4yi-USG4wFxbnBMasIFw",[1265,1273,1281],{"title":1266,"description":1267,"heroImage":1268,"category":547,"date":1269,"authors":1270,"slug":1272,"externalUrl":551},"Wie GitLab Schwachstellen über Refactorings hinweg verfolgt","Das verbesserte Scope+Offset-Fingerprinting hält das Tracking stabil, wenn Kommentare, Leerzeilen oder Reformatierungen dazukommen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","2026-08-12",[1271],"Julian Thome","improved-scope-offset-fingerprinting",{"title":1274,"description":1275,"heroImage":1268,"category":547,"date":1276,"authors":1277,"slug":1280,"externalUrl":551},"GitLab Secrets Manager unterstützt ESO, Terraform und API","GitLab Secrets Manager liefert Secrets sicher an Kubernetes, Terraform und externe Workflows, aus einer einzigen Quelle für die gesamte Toolchain.","2026-08-06",[1278,1279],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":1282,"description":1283,"heroImage":1284,"category":547,"date":1285,"authors":1286,"slug":1288,"externalUrl":551},"Mit Claude und GitLab jeden Commit bis zur Produktion absichern","Claude Security findet Schwachstellen in der Coding-Session. GitLab übernimmt danach: Scans, Policy-Durchsetzung und Audit-Nachweise im Lebenszyklus.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756122536/akivvcnafog9c4dhhzkp.png","2026-08-03",[1287],"Alisa Ho","claude-security-and-gitlab",{"promotions":1290},[1291,1305,1316,1327],{"id":1292,"categories":1293,"header":1295,"text":1296,"button":1297,"image":1302},"ai-modernization",[1294],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":1298,"config":1299},"Ermittle deinen KI-Reifegrad",{"href":1300,"dataGaName":1301,"dataGaLocation":782},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":1303},{"src":1304},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1306,"categories":1307,"header":1308,"text":1296,"button":1309,"image":1313},"devops-modernization",[566,1115],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":1310,"config":1311},"Ermittle deinen DevOps-Reifegrad",{"href":1312,"dataGaName":1301,"dataGaLocation":782},"/de-de/assessments/devops-modernization-assessment/",{"config":1314},{"src":1315},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1317,"categories":1318,"header":1319,"text":1296,"button":1320,"image":1324},"security-modernization",[547],"Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":1321,"config":1322},"Ermittle deinen Sicherheitsreifegrad",{"href":1323,"dataGaName":1301,"dataGaLocation":782},"/de-de/assessments/security-modernization-assessment/",{"config":1325},{"src":1326},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1328,"paths":1329,"header":1332,"text":1333,"button":1334,"image":1339},"github-azure-migration",[1330,1331],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":1335,"config":1336},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":1337,"dataGaName":1338,"dataGaLocation":782},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1340},{"src":1315},{"header":1342,"blurb":1343,"button":1344,"secondaryButton":1349},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1345,"config":1346},"Kostenlosen Test starten",{"href":1347,"dataGaName":579,"dataGaLocation":1348},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":905,"config":1350},{"href":907,"dataGaName":584,"dataGaLocation":1348},1786803739443]