[{"data":1,"prerenderedAt":2173},["ShallowReactive",2],{"/de-de/blog/enhance-data-security-with-custom-pii-detection-rulesets":3,"navigation-de-de":1390,"banner-de-de":1822,"footer-de-de":1830,"blog-post-authors-de-de-Fernando Diaz":2071,"blog-related-posts-de-de-enhance-data-security-with-custom-pii-detection-rulesets":2086,"blog-promotions-de-de":2111,"next-steps-de-de":2163},{"id":4,"title":5,"authors":6,"body":8,"category":1367,"date":1368,"description":1369,"extension":1370,"externalUrl":1371,"faq":1371,"featured":135,"heroImage":1372,"meta":1373,"navigation":135,"path":1374,"seo":1375,"slug":1381,"stem":1382,"tags":1383,"template":1388,"updatedDate":1371,"__hash__":1389},"blogPosts/de-de/blog/enhance-data-security-with-custom-pii-detection-rulesets.md","Personenbezogene Daten im Code erkennen – Custom PII-Detection mit GitLab",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1351},"minimark",[11,15,20,29,34,63,67,70,79,84,92,175,180,187,486,491,501,698,703,706,753,756,761,768,876,879,929,938,945,948,954,957,965,969,972,1001,1005,1014,1018,1044,1052,1060,1066,1094,1097,1130,1143,1147,1201,1204,1217,1221,1224,1255,1259,1262,1268,1274,1280,1284,1287,1290,1293,1304,1308,1311,1347],[12,13,14],"p",{},"Personenbezogene Daten (PII) sollten nicht hardcoded im Quellcode gespeichert werden. GitLab Secret Detection mit Custom Rulesets ermöglicht automatisierte Erkennung solcher Daten. Dieses Tutorial zeigt die Vorgehensweise: systematische Ruleset-Erstellung, Test-Szenarien und KI-gestützte Regex-Generierung mit GitLab Duo Chat.",[16,17,19],"h2",{"id":18},"gitlab-secret-detection-verstehen","GitLab Secret Detection verstehen",[12,21,22,28],{},[23,24,27],"a",{"href":25,"rel":26},"https://docs.gitlab.com/user/application_security/secret_detection/",[],"GitLab Secret Detection"," ist ein Security-Scanning-Feature, das in die GitLab-CI/CD-Pipeline integriert ist. Die Funktion scannt Codebasen automatisch und identifiziert hardcodierte Secrets, Credentials und personenbezogene Daten, die nicht im Repository gespeichert werden sollten.",[30,31,33],"h3",{"id":32},"zentrale-vorteile","Zentrale Vorteile",[35,36,37,45,51,57],"ul",{},[38,39,40,44],"li",{},[41,42,43],"strong",{},"Data-Breach-Prävention:"," Secrets werden erkannt, bevor sie committed werden.",[38,46,47,50],{},[41,48,49],{},"Automatisiertes Scanning:"," Läuft als Teil der CI/CD-Pipeline ohne manuelle Eingriffe.",[38,52,53,56],{},[41,54,55],{},"Custom Rules:"," Erweiterung der Detection-Capabilities durch eigene Pattern.",[38,58,59,62],{},[41,60,61],{},"Compliance-Unterstützung:"," Erfüllt regulatorische Anforderungen wie DSGVO, HIPAA und weitere Datenschutzgesetze.",[16,64,66],{"id":65},"custom-rulesets-für-pii-detection-erstellen","Custom Rulesets für PII-Detection erstellen",[12,68,69],{},"GitLabs Standard-Secret-Detection deckt gängige Secrets wie API-Keys und Passwörter ab. Für unternehmens­spezifische PII-Typen lassen sich Custom Rules erstellen.",[12,71,72,73,78],{},"Zum Einstieg ein neues GitLab-Projekt anlegen und die folgenden Schritte ausführen. Beispiele finden sich in der ",[23,74,77],{"href":75,"rel":76},"https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/secret-scanning/pii-data-ruleset",[],"PII Demo Application",".",[12,80,81],{},[41,82,83],{},"Schritt 1: Secret Detection aktivieren",[12,85,86,87,91],{},"Secret Detection in der ",[88,89,90],"code",{},".gitlab-ci.yml","-Datei aktivieren:",[93,94,99],"pre",{"className":95,"code":96,"language":97,"meta":98,"style":98},"language-yaml shiki shiki-themes github-light","include:\n  - template: Security/Secret-Detection.gitlab-ci.yml\n\nsecret_detection:\n  variables:\n    SECRET_DETECTION_EXCLUDED_PATHS: \"rules,.gitlab,README.md,LICENSE\"\n    SECRET_DETECTION_HISTORIC_SCAN: \"true\"\n\n","yaml","",[88,100,101,114,130,137,145,153,164],{"__ignoreMap":98},[102,103,106,110],"span",{"class":104,"line":105},"line",1,[102,107,109],{"class":108},"shJU0","include",[102,111,113],{"class":112},"sgsFI",":\n",[102,115,117,120,123,126],{"class":104,"line":116},2,[102,118,119],{"class":112},"  - ",[102,121,122],{"class":108},"template",[102,124,125],{"class":112},": ",[102,127,129],{"class":128},"sYBdl","Security/Secret-Detection.gitlab-ci.yml\n",[102,131,133],{"class":104,"line":132},3,[102,134,136],{"emptyLinePlaceholder":135},true,"\n",[102,138,140,143],{"class":104,"line":139},4,[102,141,142],{"class":108},"secret_detection",[102,144,113],{"class":112},[102,146,148,151],{"class":104,"line":147},5,[102,149,150],{"class":108},"  variables",[102,152,113],{"class":112},[102,154,156,159,161],{"class":104,"line":155},6,[102,157,158],{"class":108},"    SECRET_DETECTION_EXCLUDED_PATHS",[102,160,125],{"class":112},[102,162,163],{"class":128},"\"rules,.gitlab,README.md,LICENSE\"\n",[102,165,167,170,172],{"class":104,"line":166},7,[102,168,169],{"class":108},"    SECRET_DETECTION_HISTORIC_SCAN",[102,171,125],{"class":112},[102,173,174],{"class":128},"\"true\"\n",[12,176,177],{},[41,178,179],{},"Schritt 2: Custom-Ruleset-Datei erstellen",[12,181,182,183,186],{},"Das Verzeichnis und die Datei ",[88,184,185],{},"rules/pii-data-extension.toml"," anlegen. Diese enthält Regex-Pattern für PII-Daten sowie eine Allowlist für Pattern, die ignoriert werden sollen. Nachfolgend Pattern für US-Reisepass­nummern, US-Telefon­nummern und E-Mail-Adressen:",[93,188,192],{"className":189,"code":190,"language":191,"meta":98,"style":98},"language-toml shiki shiki-themes github-light","[extend]\n# Extends default packaged ruleset, NOTE: do not change the path.\npath = \"/gitleaks.toml\"\n\n# Patterns to ignore (used for tests)\n[allowlist]\ndescription = \"allowlist of patterns and paths to ignore in detection\"\nregexTarget = \"match\"\nregexes = ['''555-555-5555''', '''user@example.com''']\npaths = ['''(.*?)(jpg|gif|doc|pdf|bin|svg|socket)''']\n\n# US Passport Number (USA)\n[[rules]]\nid = \"us_passport_detection\"\ntitle = \"US Passport Number\"\ndescription = \"Detects US passport numbers\"\nregex = '''\\b[A-Z]{1,2}[0-9]{6,9}\\b'''\nkeywords = [\"passport\"]\n\n# Phone Number (USA)\n[[rules]]\nid = \"us_phone_number_detection_basic\"\ntitle = \"US Phone Number\"\ndescription = \"Detects US phone numbers in basic format\"\nregex = '''\\b\\d{3}-\\d{3}-\\d{4}\\b'''\nkeywords = [\"phone\", \"mobile\"]\n\n# Email Address\n[[rules]]\nid = \"email_address\"\ntitle = \"Email Address\"\ndescription = \"Detects email addresses\"\nregex = '''[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}'''\nkeywords = [\"email\", \"e-mail\"]\n","toml",[88,193,194,206,212,220,224,229,238,246,255,272,283,288,294,306,315,324,332,341,352,357,363,372,380,388,396,404,419,424,430,439,447,455,463,471],{"__ignoreMap":98},[102,195,196,199,203],{"class":104,"line":105},[102,197,198],{"class":112},"[",[102,200,202],{"class":201},"s7eDp","extend",[102,204,205],{"class":112},"]\n",[102,207,208],{"class":104,"line":116},[102,209,211],{"class":210},"sAwPA","# Extends default packaged ruleset, NOTE: do not change the path.\n",[102,213,214,217],{"class":104,"line":132},[102,215,216],{"class":112},"path = ",[102,218,219],{"class":128},"\"/gitleaks.toml\"\n",[102,221,222],{"class":104,"line":139},[102,223,136],{"emptyLinePlaceholder":135},[102,225,226],{"class":104,"line":147},[102,227,228],{"class":210},"# Patterns to ignore (used for tests)\n",[102,230,231,233,236],{"class":104,"line":155},[102,232,198],{"class":112},[102,234,235],{"class":201},"allowlist",[102,237,205],{"class":112},[102,239,240,243],{"class":104,"line":166},[102,241,242],{"class":112},"description = ",[102,244,245],{"class":128},"\"allowlist of patterns and paths to ignore in detection\"\n",[102,247,249,252],{"class":104,"line":248},8,[102,250,251],{"class":112},"regexTarget = ",[102,253,254],{"class":128},"\"match\"\n",[102,256,258,261,264,267,270],{"class":104,"line":257},9,[102,259,260],{"class":112},"regexes = [",[102,262,263],{"class":128},"'''555-555-5555'''",[102,265,266],{"class":112},", ",[102,268,269],{"class":128},"'''user@example.com'''",[102,271,205],{"class":112},[102,273,275,278,281],{"class":104,"line":274},10,[102,276,277],{"class":112},"paths = [",[102,279,280],{"class":128},"'''(.*?)(jpg|gif|doc|pdf|bin|svg|socket)'''",[102,282,205],{"class":112},[102,284,286],{"class":104,"line":285},11,[102,287,136],{"emptyLinePlaceholder":135},[102,289,291],{"class":104,"line":290},12,[102,292,293],{"class":210},"# US Passport Number (USA)\n",[102,295,297,300,303],{"class":104,"line":296},13,[102,298,299],{"class":112},"[[",[102,301,302],{"class":201},"rules",[102,304,305],{"class":112},"]]\n",[102,307,309,312],{"class":104,"line":308},14,[102,310,311],{"class":112},"id = ",[102,313,314],{"class":128},"\"us_passport_detection\"\n",[102,316,318,321],{"class":104,"line":317},15,[102,319,320],{"class":112},"title = ",[102,322,323],{"class":128},"\"US Passport Number\"\n",[102,325,327,329],{"class":104,"line":326},16,[102,328,242],{"class":112},[102,330,331],{"class":128},"\"Detects US passport numbers\"\n",[102,333,335,338],{"class":104,"line":334},17,[102,336,337],{"class":112},"regex = ",[102,339,340],{"class":128},"'''\\b[A-Z]{1,2}[0-9]{6,9}\\b'''\n",[102,342,344,347,350],{"class":104,"line":343},18,[102,345,346],{"class":112},"keywords = [",[102,348,349],{"class":128},"\"passport\"",[102,351,205],{"class":112},[102,353,355],{"class":104,"line":354},19,[102,356,136],{"emptyLinePlaceholder":135},[102,358,360],{"class":104,"line":359},20,[102,361,362],{"class":210},"# Phone Number (USA)\n",[102,364,366,368,370],{"class":104,"line":365},21,[102,367,299],{"class":112},[102,369,302],{"class":201},[102,371,305],{"class":112},[102,373,375,377],{"class":104,"line":374},22,[102,376,311],{"class":112},[102,378,379],{"class":128},"\"us_phone_number_detection_basic\"\n",[102,381,383,385],{"class":104,"line":382},23,[102,384,320],{"class":112},[102,386,387],{"class":128},"\"US Phone Number\"\n",[102,389,391,393],{"class":104,"line":390},24,[102,392,242],{"class":112},[102,394,395],{"class":128},"\"Detects US phone numbers in basic format\"\n",[102,397,399,401],{"class":104,"line":398},25,[102,400,337],{"class":112},[102,402,403],{"class":128},"'''\\b\\d{3}-\\d{3}-\\d{4}\\b'''\n",[102,405,407,409,412,414,417],{"class":104,"line":406},26,[102,408,346],{"class":112},[102,410,411],{"class":128},"\"phone\"",[102,413,266],{"class":112},[102,415,416],{"class":128},"\"mobile\"",[102,418,205],{"class":112},[102,420,422],{"class":104,"line":421},27,[102,423,136],{"emptyLinePlaceholder":135},[102,425,427],{"class":104,"line":426},28,[102,428,429],{"class":210},"# Email Address\n",[102,431,433,435,437],{"class":104,"line":432},29,[102,434,299],{"class":112},[102,436,302],{"class":201},[102,438,305],{"class":112},[102,440,442,444],{"class":104,"line":441},30,[102,443,311],{"class":112},[102,445,446],{"class":128},"\"email_address\"\n",[102,448,450,452],{"class":104,"line":449},31,[102,451,320],{"class":112},[102,453,454],{"class":128},"\"Email Address\"\n",[102,456,458,460],{"class":104,"line":457},32,[102,459,242],{"class":112},[102,461,462],{"class":128},"\"Detects email addresses\"\n",[102,464,466,468],{"class":104,"line":465},33,[102,467,337],{"class":112},[102,469,470],{"class":128},"'''[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}'''\n",[102,472,474,476,479,481,484],{"class":104,"line":473},34,[102,475,346],{"class":112},[102,477,478],{"class":128},"\"email\"",[102,480,266],{"class":112},[102,482,483],{"class":128},"\"e-mail\"",[102,485,205],{"class":112},[12,487,488],{},[41,489,490],{},"Schritt 3: Secret Detection mit Custom-Ruleset-Datei erweitern",[12,492,182,493,496,497,500],{},[88,494,495],{},".gitlab/secret-detection-ruleset.toml"," im Repository-Root anlegen. Diese Datei ermöglicht die Erweiterung der Standard­konfiguration mit der PII-Rules-Datei und überschreibt den Schweregrad erkannter Vulnerabilities (Standard-Schweregrad ist ",[88,498,499],{},"Critical",").",[93,502,504],{"className":189,"code":503,"language":191,"meta":98,"style":98},"# Define the pii rules to add to default configuration\n[[secrets.passthrough]]\ntype = \"file\"\ntarget = \"gitleaks.toml\"\nvalue = \"rules/pii-data-extension.toml\"\n\n# Overwrite Phone Number (USA) PII Severity\n[[secrets.ruleset]]\n[secrets.ruleset.identifier]\ntype = \"gitleaks_rule_id\"\nvalue = \"us_phone_number_detection_basic\"\n[secrets.ruleset.override]\nseverity = \"Medium\"\n\n# Overwrite Email Address PII Severity\n[[secrets.ruleset]]\n[secrets.ruleset.identifier]\ntype = \"gitleaks_rule_id\"\nvalue = \"email_address\"\n[secrets.ruleset.override]\nseverity = \"Low\"\n",[88,505,506,511,525,533,541,549,553,558,571,588,595,601,618,626,630,635,647,663,669,675,691],{"__ignoreMap":98},[102,507,508],{"class":104,"line":105},[102,509,510],{"class":210},"# Define the pii rules to add to default configuration\n",[102,512,513,515,518,520,523],{"class":104,"line":116},[102,514,299],{"class":112},[102,516,517],{"class":201},"secrets",[102,519,78],{"class":112},[102,521,522],{"class":201},"passthrough",[102,524,305],{"class":112},[102,526,527,530],{"class":104,"line":132},[102,528,529],{"class":112},"type = ",[102,531,532],{"class":128},"\"file\"\n",[102,534,535,538],{"class":104,"line":139},[102,536,537],{"class":112},"target = ",[102,539,540],{"class":128},"\"gitleaks.toml\"\n",[102,542,543,546],{"class":104,"line":147},[102,544,545],{"class":112},"value = ",[102,547,548],{"class":128},"\"rules/pii-data-extension.toml\"\n",[102,550,551],{"class":104,"line":155},[102,552,136],{"emptyLinePlaceholder":135},[102,554,555],{"class":104,"line":166},[102,556,557],{"class":210},"# Overwrite Phone Number (USA) PII Severity\n",[102,559,560,562,564,566,569],{"class":104,"line":248},[102,561,299],{"class":112},[102,563,517],{"class":201},[102,565,78],{"class":112},[102,567,568],{"class":201},"ruleset",[102,570,305],{"class":112},[102,572,573,575,577,579,581,583,586],{"class":104,"line":257},[102,574,198],{"class":112},[102,576,517],{"class":201},[102,578,78],{"class":112},[102,580,568],{"class":201},[102,582,78],{"class":112},[102,584,585],{"class":201},"identifier",[102,587,205],{"class":112},[102,589,590,592],{"class":104,"line":274},[102,591,529],{"class":112},[102,593,594],{"class":128},"\"gitleaks_rule_id\"\n",[102,596,597,599],{"class":104,"line":285},[102,598,545],{"class":112},[102,600,379],{"class":128},[102,602,603,605,607,609,611,613,616],{"class":104,"line":290},[102,604,198],{"class":112},[102,606,517],{"class":201},[102,608,78],{"class":112},[102,610,568],{"class":201},[102,612,78],{"class":112},[102,614,615],{"class":201},"override",[102,617,205],{"class":112},[102,619,620,623],{"class":104,"line":296},[102,621,622],{"class":112},"severity = ",[102,624,625],{"class":128},"\"Medium\"\n",[102,627,628],{"class":104,"line":308},[102,629,136],{"emptyLinePlaceholder":135},[102,631,632],{"class":104,"line":317},[102,633,634],{"class":210},"# Overwrite Email Address PII Severity\n",[102,636,637,639,641,643,645],{"class":104,"line":326},[102,638,299],{"class":112},[102,640,517],{"class":201},[102,642,78],{"class":112},[102,644,568],{"class":201},[102,646,305],{"class":112},[102,648,649,651,653,655,657,659,661],{"class":104,"line":334},[102,650,198],{"class":112},[102,652,517],{"class":201},[102,654,78],{"class":112},[102,656,568],{"class":201},[102,658,78],{"class":112},[102,660,585],{"class":201},[102,662,205],{"class":112},[102,664,665,667],{"class":104,"line":343},[102,666,529],{"class":112},[102,668,594],{"class":128},[102,670,671,673],{"class":104,"line":354},[102,672,545],{"class":112},[102,674,446],{"class":128},[102,676,677,679,681,683,685,687,689],{"class":104,"line":359},[102,678,198],{"class":112},[102,680,517],{"class":201},[102,682,78],{"class":112},[102,684,568],{"class":201},[102,686,78],{"class":112},[102,688,615],{"class":201},[102,690,205],{"class":112},[102,692,693,695],{"class":104,"line":365},[102,694,622],{"class":112},[102,696,697],{"class":128},"\"Low\"\n",[12,699,700],{},[41,701,702],{},"Schritt 4: Änderungen committen",[12,704,705],{},"Die Änderungen aus den obigen Schritten zum Projekt hinzufügen:",[93,707,711],{"className":708,"code":709,"language":710,"meta":98,"style":98},"language-bash shiki shiki-themes github-light","cd /path/to/your/project\ngit add .\ngit commit -m \"Add PII data ruleset and Secret Scanning\"\ngit push\n","bash",[88,712,713,722,733,746],{"__ignoreMap":98},[102,714,715,719],{"class":104,"line":105},[102,716,718],{"class":717},"sYu0t","cd",[102,720,721],{"class":128}," /path/to/your/project\n",[102,723,724,727,730],{"class":104,"line":116},[102,725,726],{"class":201},"git",[102,728,729],{"class":128}," add",[102,731,732],{"class":128}," .\n",[102,734,735,737,740,743],{"class":104,"line":132},[102,736,726],{"class":201},[102,738,739],{"class":128}," commit",[102,741,742],{"class":717}," -m",[102,744,745],{"class":128}," \"Add PII data ruleset and Secret Scanning\"\n",[102,747,748,750],{"class":104,"line":139},[102,749,726],{"class":201},[102,751,752],{"class":128}," push\n",[12,754,755],{},"Nach dem Commit läuft Secret Detection im Default-Branch.",[12,757,758],{},[41,759,760],{},"Schritt 5: PII-Data-Detection testen",[12,762,763,764,767],{},"Nach der Konfiguration des Secret-Detection-Scanners erfolgt ein Test, um zu prüfen, ob der Scanner die neuen Custom-Pattern erkennt. Dazu einen Merge Request erstellen, der eine neue Datei ",[88,765,766],{},"customer-data.yaml"," mit folgendem Inhalt hinzufügt:",[93,769,771],{"className":95,"code":770,"language":97,"meta":98,"style":98},"customers:\n  test_user:\n    phone_number: 555-555-555\n    email: user@example.com\n  justin_case:\n    phone_number: 512-123-4567\n    passport_number: A12345678\n    email: justin_case@example.com\n  chris_p_bacon:\n    phone_number: 305-123-4567\n    passport_number: B09876543\n    email: chris_p_bacon@example.com\n\n",[88,772,773,780,787,797,807,814,823,833,842,849,858,867],{"__ignoreMap":98},[102,774,775,778],{"class":104,"line":105},[102,776,777],{"class":108},"customers",[102,779,113],{"class":112},[102,781,782,785],{"class":104,"line":116},[102,783,784],{"class":108},"  test_user",[102,786,113],{"class":112},[102,788,789,792,794],{"class":104,"line":132},[102,790,791],{"class":108},"    phone_number",[102,793,125],{"class":112},[102,795,796],{"class":128},"555-555-555\n",[102,798,799,802,804],{"class":104,"line":139},[102,800,801],{"class":108},"    email",[102,803,125],{"class":112},[102,805,806],{"class":128},"user@example.com\n",[102,808,809,812],{"class":104,"line":147},[102,810,811],{"class":108},"  justin_case",[102,813,113],{"class":112},[102,815,816,818,820],{"class":104,"line":155},[102,817,791],{"class":108},[102,819,125],{"class":112},[102,821,822],{"class":128},"512-123-4567\n",[102,824,825,828,830],{"class":104,"line":166},[102,826,827],{"class":108},"    passport_number",[102,829,125],{"class":112},[102,831,832],{"class":128},"A12345678\n",[102,834,835,837,839],{"class":104,"line":248},[102,836,801],{"class":108},[102,838,125],{"class":112},[102,840,841],{"class":128},"justin_case@example.com\n",[102,843,844,847],{"class":104,"line":257},[102,845,846],{"class":108},"  chris_p_bacon",[102,848,113],{"class":112},[102,850,851,853,855],{"class":104,"line":274},[102,852,791],{"class":108},[102,854,125],{"class":112},[102,856,857],{"class":128},"305-123-4567\n",[102,859,860,862,864],{"class":104,"line":285},[102,861,827],{"class":108},[102,863,125],{"class":112},[102,865,866],{"class":128},"B09876543\n",[102,868,869,871,873],{"class":104,"line":290},[102,870,801],{"class":108},[102,872,125],{"class":112},[102,874,875],{"class":128},"chris_p_bacon@example.com\n",[12,877,878],{},"Der Scanner führt nun Folgendes aus:",[35,880,881,896],{},[38,882,883,884,887,888,891,892,895],{},"Ignoriert ",[88,885,886],{},"phone_number"," und ",[88,889,890],{},"email"," von ",[88,893,894],{},"test_user",", da die Pattern in der Allowlist enthalten sind.",[38,897,898,899,887,902,113,905],{},"Erkennt sechs potenzielle Vulnerabilities aufgrund der Informationen für ",[88,900,901],{},"justin_case",[88,903,904],{},"chris_p_bacon",[35,906,907,913,920,926],{},[38,908,909,910,912],{},"US-Reisepassnummer mit Schweregrad ",[88,911,499],{}," (Standard)",[38,914,915,916,919],{},"US-Telefonnummer mit Schweregrad ",[88,917,918],{},"Medium"," (Override)",[38,921,922,923,919],{},"E-Mail-Adresse mit Schweregrad ",[88,924,925],{},"Low",[38,927,928],{},"Daten aus Rules Override werden zu jeder Vulnerability hinzugefügt",[12,930,931,932,937],{},"Nach dem Submit des ",[23,933,936],{"href":934,"rel":935},"https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/secret-scanning/pii-data-ruleset/-/merge_requests/4",[],"Merge Requests"," läuft der Secret-Detection-Scanner und liefert folgende Ergebnisse:",[12,939,940],{},[941,942],"img",{"alt":943,"src":944},"Secret Detection finding custom PII data MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097709/Blog/Content%20Images/Blog/Content%20Images/pii_vulns_aHR0cHM6_1750097709683.png",[12,946,947],{},"Bei Klick auf eine Vulnerability werden detaillierte Vulnerability-Daten angezeigt, basierend auf der Konfiguration in den neu erstellten Rules:",[12,949,950],{},[941,951],{"alt":952,"src":953},"Expanded custom PII data vulnerability","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097710/Blog/Content%20Images/Blog/Content%20Images/pii_vulns_expanded_aHR0cHM6_1750097709684.png",[12,955,956],{},"Diese Daten ermöglichen die Beurteilung der Validität der vorhandenen Daten und entsprechende Maßnahmen.",[12,958,959,960,78],{},"Weitere Konfigurationsmöglichkeiten für Custom Rulesets existieren. Beispielsweise lassen sich Rules remote auf mehrere Projekte anwenden, um die Duplizierung der Rules-Datei zu vermeiden. Details in der ",[23,961,964],{"href":962,"rel":963},"https://docs.gitlab.com/user/application_security/secret_detection/pipeline/configure/",[],"Secret Detection Configuration Documentation",[16,966,968],{"id":967},"gängige-pii-typen-berücksichtigen","Gängige PII-Typen berücksichtigen",[12,970,971],{},"Beim Erstellen von Custom Rulesets Pattern für folgende PII-Typen berücksichtigen:",[35,973,974,977,980,983,986,989,992,995,998],{},[38,975,976],{},"Sozialversicherungsnummern",[38,978,979],{},"Kreditkartennummern",[38,981,982],{},"Führerscheinnummern",[38,984,985],{},"Reisepassnummern",[38,987,988],{},"E-Mail-Adressen",[38,990,991],{},"Telefonnummern",[38,993,994],{},"IP-Adressen",[38,996,997],{},"Physische Adressen",[38,999,1000],{},"Patientenakten­nummern",[16,1002,1004],{"id":1003},"gitlab-duo-chat-für-pattern-erstellung-nutzen","GitLab Duo Chat für Pattern-Erstellung nutzen",[12,1006,1007,1008,1013],{},"Die Erstellung effektiver Regex-Pattern kann komplex sein. ",[23,1009,1012],{"href":1010,"rel":1011},"https://docs.gitlab.com/user/gitlab_duo_chat/",[],"GitLab Duo Chat"," unterstützt dabei. GitLab Duo Chat ist ein KI-gestützter Assistent, der Entwicklungsabläufe durch kontextuelle, konversationelle KI beschleunigt. Chat ist für jeden Nutzer mit einem zugewiesenen GitLab-Duo-Seat verfügbar.",[30,1015,1017],{"id":1016},"gitlab-duo-chat-zur-generierung-von-pii-regex-pattern-einsetzen","GitLab Duo Chat zur Generierung von PII-Regex-Pattern einsetzen",[1019,1020,1021,1030],"ol",{},[38,1022,1023,1026,1027,1029],{},[41,1024,1025],{},"GitLab Duo Chat aufrufen:"," Oben rechts ",[41,1028,1012],{}," auswählen. Ein Drawer öffnet sich auf der rechten Bildschirmseite.",[38,1031,1032,1035,1036,1039,1040,1043],{},[41,1033,1034],{},"Chat-Eingabe formulieren:"," Einen Prompt in die Chat-Eingabebox eingeben und ",[41,1037,1038],{},"Enter"," drücken oder ",[41,1041,1042],{},"Senden"," auswählen:",[93,1045,1050],{"className":1046,"code":1048,"language":1049,"meta":98},[1047],"language-text","I need a regex pattern to detect Canadian Zip Codes in our codebase for secret detection\n","text",[88,1051,1048],{"__ignoreMap":98},[1019,1053,1054],{"start":132},[38,1055,1056,1059],{},[41,1057,1058],{},"Review und Verfeinerung:"," GitLab Duo Chat schlägt ein Regex-Pattern vor, das überprüft und verfeinert werden kann:",[93,1061,1064],{"className":1062,"code":1063,"language":1049,"meta":98},[1047],"Canadian postal codes follow the format \"A1A 1A1\" (where A is a letter and 1 is a digit). Here's a regex pattern that will detect Canadian postal codes in your codebase, accounting for both spaced and non-spaced formats:\n[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d\nThis pattern matches:\n* A letter, followed by a digit, followed by a letter\n* An optional space or hyphen\n* A digit, followed by a letter, followed by a digit\nIf you need a more strict pattern that only matches uppercase letters (as official Canadian postal codes use), you can use:\n[A-Z]\\d[A-Z][ -]?\\d[A-Z]\\d\nFor implementation in a secret detection tool, you might want to add word boundaries to avoid partial matches:\n\\b[A-Z]\\d[A-Z][ -]?\\d[A-Z]\\d\\b\nWould you like more details about implementing this in a specific secret detection system?\n",[88,1065,1063],{"__ignoreMap":98},[1019,1067,1068,1079],{"start":139},[38,1069,1070,1073,1074,1078],{},[41,1071,1072],{},"Pattern testen:"," Das Pattern gegen Beispiel­daten testen, um korrekte Funktionsweise sicherzustellen. Websites wie ",[23,1075,1076],{"href":1076,"rel":1077},"https://regex101.com/",[]," ermöglichen die Validierung von Pattern, bevor diese zum Ruleset hinzugefügt werden.",[38,1080,1081,1084,1085,1087,1088,1093],{},[41,1082,1083],{},"Zum Ruleset hinzufügen:"," Nach erfolgreicher Validierung das Pattern zur ",[88,1086,185],{},"-Datei hinzufügen und Tests durchführen. Dieser Beispiel-",[23,1089,1092],{"href":1090,"rel":1091},"https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/secret-scanning/pii-data-ruleset/-/merge_requests/5/diffs",[],"Merge Request"," enthält eine neu hinzugefügte Rule für Canadian Zip Codes basierend auf dem obigen Pattern.",[12,1095,1096],{},"GitLab Duo Chat lässt sich zusätzlich nutzen in:",[35,1098,1099,1106,1114,1122],{},[38,1100,1101],{},[23,1102,1105],{"href":1103,"rel":1104},"https://docs.gitlab.com/user/project/web_ide/",[],"GitLab Web IDE (VS Code in the Cloud)",[38,1107,1108,1109],{},"VS Code mit der ",[23,1110,1113],{"href":1111,"rel":1112},"https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow",[],"GitLab Workflow Extension for VS Code",[38,1115,1116,1117],{},"JetBrains IDEs mit dem ",[23,1118,1121],{"href":1119,"rel":1120},"https://plugins.jetbrains.com/plugin/22325-gitlab-duo",[],"GitLab Duo Plugin for JetBrains",[38,1123,1124,1125],{},"Visual Studio for Windows mit der ",[23,1126,1129],{"href":1127,"rel":1128},"https://marketplace.visualstudio.com/items?itemName=GitLab.GitLabExtensionForVisualStudio",[],"GitLab Extension for Visual Studio",[12,1131,1132,1133,1138,1139,78],{},"In Zukunft lässt sich ",[23,1134,1137],{"href":1135,"rel":1136},"https://docs.gitlab.com/user/duo_agent_platform/",[],"GitLab Duo Workflow"," (derzeit in Private Beta) nutzen, um Pattern automatisch zu generieren und direkt aus der IDE zur Codebasis hinzuzufügen. GitLab Duo Workflow ist ein KI-Agent, der KI vom reaktiven Assistenten zum autonomen Contributor transformiert und den Software-Development-Lifecycle optimiert. Mehr zu ",[23,1140,1137],{"href":1141,"rel":1142},"https://about.gitlab.com/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development/",[],[16,1144,1146],{"id":1145},"best-practices-für-pii-detection","Best Practices für PII-Detection",[1019,1148,1149,1155,1161,1167,1173,1179,1190],{},[38,1150,1151,1154],{},[41,1152,1153],{},"Klein beginnen:"," Mit wenigen kritischen PII-Typen starten und schrittweise erweitern.",[38,1156,1157,1160],{},[41,1158,1159],{},"Gründlich testen:"," Pattern gegen Beispiel­daten testen, um False Positives zu vermeiden.",[38,1162,1163,1166],{},[41,1164,1165],{},"Regelmäßig aktualisieren:"," Rulesets überprüfen und aktualisieren, wenn neue PII-Anforderungen entstehen.",[38,1168,1169,1172],{},[41,1170,1171],{},"Pattern dokumentieren:"," Dokumentation für Custom-Regex-Pattern pflegen.",[38,1174,1175,1178],{},[41,1176,1177],{},"Präzision ausbalancieren:"," Pattern spezifisch genug gestalten, um False Positives zu vermeiden, aber flexibel genug für Variationen.",[38,1180,1181,1189],{},[41,1182,1183,1188],{},[23,1184,1187],{"href":1185,"rel":1186},"https://about.gitlab.com/blog/prevent-secret-leaks-in-source-code-with-gitlab-secret-push-protection/",[],"Secret Push Protection"," implementieren:"," Verhindert, dass PII-Daten ins Repository gelangen.",[38,1191,1192,1200],{},[41,1193,1194,1199],{},[23,1195,1198],{"href":1196,"rel":1197},"https://docs.gitlab.com/user/application_security/policies/merge_request_approval_policies/",[],"Merge Request Approval Policies"," einrichten:"," Approval erforderlich, bevor mögliche PII-Daten gemergt werden.",[12,1202,1203],{},"Nach Einrichtung eines PII-Data-Rulesets für unternehmens­spezifische Anforderungen lassen sich Remote Rulesets nutzen, um PII-Daten über mehrere Repositories hinweg zu scannen, ohne die Rules-Datei duplizieren zu müssen. Mehr dazu in diesem Video:",[1205,1206,1209,1210],"figure",{"className":1207},[1208],"video_container","\n  ",[1211,1212,1216],"iframe",{"src":1213,"frameBorder":1214,"allowFullScreen":1215},"https://www.youtube.com/embed/vjJxQz918WE?si=CRdIEodo3ALxVWXO","0","true"," ",[16,1218,1220],{"id":1219},"secret-detection-findings-bearbeiten","Secret-Detection-Findings bearbeiten",[12,1222,1223],{},"Wenn GitLab Secret Detection potenzielle PII im Code identifiziert:",[1019,1225,1226,1232,1238,1249],{},[38,1227,1228,1231],{},[41,1229,1230],{},"Finding überprüfen:"," Bewerten, ob es sich um einen legitimen Finding oder False Positive handelt.",[38,1233,1234,1237],{},[41,1235,1236],{},"Remediieren:"," Sensible Daten entfernen und durch Environment-Variablen oder Secrets-Management ersetzen.",[38,1239,1240,1248],{},[41,1241,1242,1247],{},[23,1243,1246],{"href":1244,"rel":1245},"https://docs.gitlab.com/user/project/merge_requests/revert_changes/#redact-text-from-repository",[],"Text aus Repository redaktieren",":"," Sensible oder vertrauliche Informationen, die versehentlich committed wurden, dauerhaft löschen, sodass sie in der Repository-History nicht mehr zugänglich sind.",[38,1250,1251,1254],{},[41,1252,1253],{},"Fortschritt tracken:"," GitLabs Security Dashboard nutzen, um laufende Compliance zu überwachen.",[30,1256,1258],{"id":1257},"integration-in-deutsche-compliance-frameworks","Integration in deutsche Compliance-Frameworks",[12,1260,1261],{},"Für deutsche Unternehmen lässt sich Secret Detection mit weiteren Compliance-Anforderungen integrieren:",[12,1263,1264,1267],{},[41,1265,1266],{},"NIS2-Richtlinie (ab Oktober 2024 verpflichtend):","\nArtikel 21 der NIS2-Richtlinie verlangt von wesentlichen und wichtigen Einrichtungen Cybersecurity-Risk-Management-Maßnahmen. Automatisierte PII-Erkennung erfüllt die Anforderung technischer Maßnahmen zur Risikoreduzierung.",[12,1269,1270,1273],{},[41,1271,1272],{},"BaFin-Anforderungen für Finanzinstitute:","\nDie Bankenaufsicht (BaFin) verlangt in den BAIT (Bankaufsichtliche Anforderungen an die IT) systematische Kontrollen für Kundendaten. GitLab Secret Detection dokumentiert technische Maßnahmen für MaRisk-Compliance (Mindest­anforderungen an das Risiko­management).",[12,1275,1276,1279],{},[41,1277,1278],{},"BSI IT-Grundschutz:","\nDer IT-Grundschutz des Bundesamts für Sicherheit in der Informationstechnik (BSI) enthält Bausteine für sichere Software­entwicklung. Secret Detection erfüllt Anforderungen aus APP.3.1 (Webanwendungen) und OPS.1.1.6 (Software-Tests und -Freigaben).",[16,1281,1283],{"id":1282},"jetzt-starten","Jetzt starten",[12,1285,1286],{},"GitLab Secret Detection kombiniert mit Custom PII Rulesets bietet systematischen Schutz gegen unbeabsichtigte Exposition sensibler Informationen. Durch Nutzung von GitLab Duo Chat zur Erstellung präziser Regex-Pattern lässt sich umfassende PII-Detection über die gesamte Codebasis effizient implementieren und regulatorische Compliance sicherstellen.",[12,1288,1289],{},"Secret Detection ist eine Komponente einer umfassenden Security-Strategie. Kombination mit weiteren GitLab-Security-Features wie Static Application Security Testing, Dynamic Application Security Testing und Dependency Scanning ergibt eine robuste Security-Posture.",[12,1291,1292],{},"Diese Praktiken noch heute implementieren, um personenbezogene Daten besser zu schützen und die Security-Integrität von Anwendungen zu gewährleisten.",[1294,1295,1296],"blockquote",{},[12,1297,1298,1303],{},[23,1299,1302],{"href":1300,"rel":1301},"https://about.gitlab.com/de-de/free-trial/",[],"Kostenlose Testversion von GitLab Ultimate und GitLab Duo"," starten!",[16,1305,1307],{"id":1306},"weitere-ressourcen","Weitere Ressourcen",[12,1309,1310],{},"Mehr über GitLab Security und Compliance und wie wir AppSec-Workflows verbessern können:",[35,1312,1313,1320,1327,1334,1341],{},[38,1314,1315],{},[23,1316,1319],{"href":1317,"rel":1318},"https://about.gitlab.com/solutions/application-security-testing/",[],"GitLab Security and Compliance Solutions",[38,1321,1322],{},[23,1323,1326],{"href":1324,"rel":1325},"https://about.gitlab.com/platform/",[],"GitLab DevSecOps Platform",[38,1328,1329],{},[23,1330,1333],{"href":1331,"rel":1332},"https://about.gitlab.com/gitlab-duo-agent-platform/",[],"GitLab Duo (AI)",[38,1335,1336],{},[23,1337,1340],{"href":1338,"rel":1339},"https://docs.gitlab.com/user/application_security/",[],"GitLab Application Security Documentation",[38,1342,1343],{},[23,1344,1346],{"href":25,"rel":1345},[],"Secret Detection Documentation",[1348,1349,1350],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}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 .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":98,"searchDepth":116,"depth":116,"links":1352},[1353,1356,1357,1358,1361,1362,1365,1366],{"id":18,"depth":116,"text":19,"children":1354},[1355],{"id":32,"depth":132,"text":33},{"id":65,"depth":116,"text":66},{"id":967,"depth":116,"text":968},{"id":1003,"depth":116,"text":1004,"children":1359},[1360],{"id":1016,"depth":132,"text":1017},{"id":1145,"depth":116,"text":1146},{"id":1219,"depth":116,"text":1220,"children":1363},[1364],{"id":1257,"depth":132,"text":1258},{"id":1282,"depth":116,"text":1283},{"id":1306,"depth":116,"text":1307},"security","2025-12-01","Personenbezogene Daten im Quellcode automatisch erkennen: Custom Rulesets in 5 Schritten erstellen, testen und mit GitLab Duo Chat optimieren.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097701/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%285%29_1iy516k40hwBDChKcUJ2zb_1750097700983.png",{},"/de-de/blog/enhance-data-security-with-custom-pii-detection-rulesets",{"title":1376,"description":1369,"ogTitle":1376,"ogDescription":1369,"noIndex":1377,"ogImage":1372,"ogUrl":1378,"ogSiteName":1379,"ogType":1380,"canonicalUrls":1378},"PII-Rulesets für DSGVO Artikel 32 – ein GitLab-Tutorial",false,"https://about.gitlab.com/blog/enhance-data-security-with-custom-pii-detection-rulesets","https://about.gitlab.com","article","enhance-data-security-with-custom-pii-detection-rulesets","de-de/blog/enhance-data-security-with-custom-pii-detection-rulesets",[1367,1384,1385,1386,1387],"product","tutorial","DevSecOps platform","AI","BlogPost","oVneVoSx-NU95CnE79e4z2xNncsudlEmu3-s-YQr6TQ",{"logo":1391,"freeTrial":1396,"sales":1401,"login":1406,"items":1411,"search":1740,"minimal":1774,"duo":1792,"switchNav":1801,"pricingDeployment":1812},{"config":1392},{"href":1393,"dataGaName":1394,"dataGaLocation":1395},"/de-de/","gitlab logo","header",{"text":1397,"config":1398},"Kostenlose Testversion anfordern",{"href":1399,"dataGaName":1400,"dataGaLocation":1395},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1402,"config":1403},"Demo anfordern",{"href":1404,"dataGaName":1405,"dataGaLocation":1395},"/de-de/sales/?contact-topic=request-demo","sales",{"text":1407,"config":1408},"Anmelden",{"href":1409,"dataGaName":1410,"dataGaLocation":1395},"https://gitlab.com/users/sign_in/","sign in",[1412,1441,1543,1548,1662,1718],{"text":1413,"config":1414,"menu":1416},"Plattform",{"dataNavLevelOne":1415},"platform",{"type":1417,"columns":1418},"cards",[1419,1425,1433],{"title":1413,"description":1420,"link":1421},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1422,"config":1423},"Die Plattform erkunden",{"href":1424,"dataGaName":1415,"dataGaLocation":1395},"/de-de/platform/",{"title":1426,"description":1427,"link":1428},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":1429,"config":1430},"Lerne GitLab Duo kennen",{"href":1431,"dataGaName":1432,"dataGaLocation":1395},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1434,"description":1435,"link":1436},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1437,"config":1438},"Mehr erfahren",{"href":1439,"dataGaName":1440,"dataGaLocation":1395},"/de-de/why-gitlab/","why gitlab",{"text":1442,"left":135,"config":1443,"menu":1445},"Produkt",{"dataNavLevelOne":1444},"solutions",{"type":1446,"link":1447,"columns":1451,"feature":1522},"lists",{"text":1448,"config":1449},"Alle Lösungen anzeigen",{"href":1450,"dataGaName":1444,"dataGaLocation":1395},"/de-de/solutions/",[1452,1477,1500],{"title":1453,"description":1454,"link":1455,"items":1460},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1456},{"icon":1457,"href":1458,"dataGaName":1459,"dataGaLocation":1395},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1461,1465,1468,1473],{"text":1462,"config":1463},"CI/CD",{"href":1464,"dataGaLocation":1395,"dataGaName":1462},"/de-de/solutions/continuous-integration/",{"text":1426,"config":1466},{"href":1431,"dataGaLocation":1395,"dataGaName":1467},"gitlab duo agent platform - product menu",{"text":1469,"config":1470},"Quellcodeverwaltung",{"href":1471,"dataGaLocation":1395,"dataGaName":1472},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1474,"config":1475},"Automatische Softwarebereitstellung",{"href":1458,"dataGaLocation":1395,"dataGaName":1476},"Automated software delivery",{"title":1478,"description":1479,"link":1480,"items":1485},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1481},{"href":1482,"dataGaName":1483,"dataGaLocation":1395,"icon":1484},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1486,1490,1495],{"text":1487,"config":1488},"Anwendungssicherheitstests",{"href":1482,"dataGaName":1489,"dataGaLocation":1395},"Application security testing",{"text":1491,"config":1492},"Schutz der Software-Lieferkette",{"href":1493,"dataGaLocation":1395,"dataGaName":1494},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1496,"config":1497},"Software-Compliance",{"href":1498,"dataGaName":1499,"dataGaLocation":1395},"/de-de/solutions/software-compliance/","software compliance",{"title":1501,"link":1502,"items":1507},"Messung",{"config":1503},{"icon":1504,"href":1505,"dataGaName":1506,"dataGaLocation":1395},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1508,1512,1517],{"text":1509,"config":1510},"Sichtbarkeit und Messung",{"href":1505,"dataGaLocation":1395,"dataGaName":1511},"Visibility and Measurement",{"text":1513,"config":1514},"Wertstrommanagement",{"href":1515,"dataGaLocation":1395,"dataGaName":1516},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1518,"config":1519},"Analysen und Einblicke",{"href":1520,"dataGaLocation":1395,"dataGaName":1521},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1523,"type":1446,"items":1524},"GitLab für",[1525,1531,1537],{"text":1526,"config":1527},"Enterprise",{"icon":1528,"href":1529,"dataGaLocation":1395,"dataGaName":1530},"Building","/de-de/enterprise/","enterprise",{"text":1532,"config":1533},"Kleinunternehmen",{"icon":1534,"href":1535,"dataGaLocation":1395,"dataGaName":1536},"Work","/de-de/small-business/","small business",{"text":1538,"config":1539},"Öffentlicher Sektor",{"icon":1540,"href":1541,"dataGaLocation":1395,"dataGaName":1542},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1544,"config":1545},"Preise",{"href":1546,"dataGaName":1547,"dataGaLocation":1395,"dataNavLevelOne":1547},"/de-de/pricing/","pricing",{"text":1549,"config":1550,"menu":1552},"Ressourcen",{"dataNavLevelOne":1551},"resources",{"type":1446,"link":1553,"columns":1557,"feature":1651},{"text":1554,"config":1555},"Alle Ressourcen anzeigen",{"href":1556,"dataGaName":1551,"dataGaLocation":1395},"/de-de/resources/",[1558,1591,1618],{"title":1559,"items":1560},"Erste Schritte",[1561,1566,1571,1576,1581,1586],{"text":1562,"config":1563},"Installieren",{"href":1564,"dataGaName":1565,"dataGaLocation":1395},"/de-de/install/","install",{"text":1567,"config":1568},"Kurzanleitungen",{"href":1569,"dataGaName":1570,"dataGaLocation":1395},"/de-de/get-started/","quick setup checklists",{"text":1572,"config":1573},"Lernen",{"href":1574,"dataGaLocation":1395,"dataGaName":1575},"https://university.gitlab.com/","learn",{"text":1577,"config":1578},"Produktdokumentation",{"href":1579,"dataGaName":1580,"dataGaLocation":1395},"https://docs.gitlab.com/","product documentation",{"text":1582,"config":1583},"Best-Practice-Videos",{"href":1584,"dataGaName":1585,"dataGaLocation":1395},"/de-de/getting-started-videos/","best practice videos",{"text":1587,"config":1588},"Integrationen",{"href":1589,"dataGaName":1590,"dataGaLocation":1395},"/de-de/integrations/","integrations",{"title":1592,"items":1593},"Entdecken",[1594,1599,1604,1609,1613],{"text":1595,"config":1596},"Kundenerfolge",{"href":1597,"dataGaName":1598,"dataGaLocation":1395},"/de-de/customers/","customer success stories",{"text":1600,"config":1601},"Blog",{"href":1602,"dataGaName":1603,"dataGaLocation":1395},"/de-de/blog/","blog",{"text":1605,"config":1606},"Demo-Hub",{"href":1607,"dataGaName":1608,"dataGaLocation":1395},"/de-de/demo-hub/","demo hub",{"text":1610,"config":1611},"The Source",{"href":1612,"dataGaName":1603,"dataGaLocation":1395},"/de-de/the-source/",{"text":1614,"config":1615},"Remote",{"href":1616,"dataGaName":1617,"dataGaLocation":1395},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1619,"items":1620},"Vernetzen",[1621,1626,1631,1636,1641,1646],{"text":1622,"config":1623},"GitLab-Services",{"href":1624,"dataGaName":1625,"dataGaLocation":1395},"/de-de/services/","services",{"text":1627,"config":1628},"Beitragen",{"href":1629,"dataGaName":1630,"dataGaLocation":1395},"https://contributors.gitlab.com","contribute",{"text":1632,"config":1633},"Community",{"href":1634,"dataGaName":1635,"dataGaLocation":1395},"/community/","community",{"text":1637,"config":1638},"Forum",{"href":1639,"dataGaName":1640,"dataGaLocation":1395},"https://forum.gitlab.com/","forum",{"text":1642,"config":1643},"Veranstaltungen",{"href":1644,"dataGaName":1645,"dataGaLocation":1395},"/events/","events",{"text":1647,"config":1648},"Partner",{"href":1649,"dataGaName":1650,"dataGaLocation":1395},"/de-de/partners/","partners",{"config":1652,"title":1655,"text":1656,"link":1657},{"background":1653,"textColor":1654},"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":1658,"config":1659},"Aktuelle Nachrichten",{"href":1660,"dataGaName":1661,"dataGaLocation":1395},"/de-de/whats-new/","whats new",{"text":1663,"config":1664,"menu":1666},"Unternehmen",{"dataNavLevelOne":1665},"company",{"type":1446,"columns":1667},[1668],{"items":1669},[1670,1675,1681,1683,1688,1693,1698,1703,1708,1713],{"text":1671,"config":1672},"Über",{"href":1673,"dataGaName":1674,"dataGaLocation":1395},"/de-de/company/","about",{"text":1676,"config":1677,"footerGa":1680},"Karriere",{"href":1678,"dataGaName":1679,"dataGaLocation":1395},"/jobs/","jobs",{"dataGaName":1679},{"text":1642,"config":1682},{"href":1644,"dataGaName":1645,"dataGaLocation":1395},{"text":1684,"config":1685},"Geschäftsführung",{"href":1686,"dataGaName":1687,"dataGaLocation":1395},"/company/team/e-group/","leadership",{"text":1689,"config":1690},"Handbuch",{"href":1691,"dataGaName":1692,"dataGaLocation":1395},"https://handbook.gitlab.com/","handbook",{"text":1694,"config":1695},"Investor Relations",{"href":1696,"dataGaName":1697,"dataGaLocation":1395},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1699,"config":1700},"Trust Center",{"href":1701,"dataGaName":1702,"dataGaLocation":1395},"/de-de/security/","trust center",{"text":1704,"config":1705},"AI Transparency Center",{"href":1706,"dataGaName":1707,"dataGaLocation":1395},"/de-de/ai-transparency-center/","ai transparency center",{"text":1709,"config":1710},"Newsletter",{"href":1711,"dataGaName":1712,"dataGaLocation":1395},"/company/contact/#contact-forms","newsletter",{"text":1714,"config":1715},"Presse",{"href":1716,"dataGaName":1717,"dataGaLocation":1395},"/press/","press",{"text":1719,"config":1720,"menu":1721},"Kontakt",{"dataNavLevelOne":1665},{"type":1446,"columns":1722},[1723],{"items":1724},[1725,1730,1735],{"text":1726,"config":1727},"Vertrieb kontaktieren",{"href":1728,"dataGaName":1729,"dataGaLocation":1395},"/de-de/sales/","talk to sales",{"text":1731,"config":1732},"Support-Portal",{"href":1733,"dataGaName":1734,"dataGaLocation":1395},"https://support.gitlab.com/hc/en-us","support portal",{"text":1736,"config":1737},"Kundenportal",{"href":1738,"dataGaName":1739,"dataGaLocation":1395},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1741,"login":1742,"suggestions":1749},"Schließen",{"text":1743,"link":1744},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1745,"config":1746},"gitlab.com",{"href":1409,"dataGaName":1747,"dataGaLocation":1748},"search login","search",{"text":1750,"default":1751},"Vorschläge",[1752,1754,1759,1761,1766,1771],{"text":1426,"config":1753},{"href":1431,"dataGaName":1426,"dataGaLocation":1748},{"text":1755,"config":1756},"Codevorschläge (KI)",{"href":1757,"dataGaName":1758,"dataGaLocation":1748},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1462,"config":1760},{"href":1464,"dataGaName":1462,"dataGaLocation":1748},{"text":1762,"config":1763},"GitLab auf AWS",{"href":1764,"dataGaName":1765,"dataGaLocation":1748},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1767,"config":1768},"GitLab auf Google Cloud",{"href":1769,"dataGaName":1770,"dataGaLocation":1748},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1434,"config":1772},{"href":1439,"dataGaName":1773,"dataGaLocation":1748},"Why GitLab?",{"freeTrial":1775,"mobileIcon":1780,"desktopIcon":1785,"secondaryButton":1788},{"text":1776,"config":1777},"Kostenlos testen",{"href":1778,"dataGaName":1400,"dataGaLocation":1779},"https://gitlab.com/-/trials/new/","nav",{"altText":1781,"config":1782},"GitLab-Symbol",{"src":1783,"dataGaName":1784,"dataGaLocation":1779},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1781,"config":1786},{"src":1787,"dataGaName":1784,"dataGaLocation":1779},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1559,"config":1789},{"href":1790,"dataGaName":1791,"dataGaLocation":1779},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1793,"mobileIcon":1797,"desktopIcon":1799},{"text":1794,"config":1795},"Mehr über GitLab Duo erfahren",{"href":1431,"dataGaName":1796,"dataGaLocation":1779},"gitlab duo",{"altText":1781,"config":1798},{"src":1783,"dataGaName":1784,"dataGaLocation":1779},{"altText":1781,"config":1800},{"src":1787,"dataGaName":1784,"dataGaLocation":1779},{"button":1802,"mobileIcon":1807,"desktopIcon":1809},{"text":1803,"config":1804},"/Option",{"href":1805,"dataGaName":1806,"dataGaLocation":1779},"#contact","switch",{"altText":1781,"config":1808},{"src":1783,"dataGaName":1784,"dataGaLocation":1779},{"altText":1781,"config":1810},{"src":1811,"dataGaName":1784,"dataGaLocation":1779},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1813,"mobileIcon":1818,"desktopIcon":1820},{"text":1814,"config":1815},"Zurück zur Preisübersicht",{"href":1546,"dataGaName":1816,"dataGaLocation":1779,"icon":1817},"back to pricing","GoBack",{"altText":1781,"config":1819},{"src":1783,"dataGaName":1784,"dataGaLocation":1779},{"altText":1781,"config":1821},{"src":1787,"dataGaName":1784,"dataGaLocation":1779},{"title":1823,"button":1824,"config":1828},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":1437,"config":1825},{"href":1826,"dataGaName":1827,"dataGaLocation":1395},"/de-de/gitlab-orbit/","orbit",{"layout":1829,"disabled":1377},"release",{"data":1831},{"text":1832,"source":1833,"edit":1839,"contribute":1844,"config":1849,"items":1854,"minimal":2060},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1834,"config":1835},"Quelltext der Seite anzeigen",{"href":1836,"dataGaName":1837,"dataGaLocation":1838},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1840,"config":1841},"Diese Seite bearbeiten",{"href":1842,"dataGaName":1843,"dataGaLocation":1838},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1845,"config":1846},"Beteilige dich",{"href":1847,"dataGaName":1848,"dataGaLocation":1838},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1850,"facebook":1851,"youtube":1852,"linkedin":1853},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1855,1900,1953,1995,2027],{"title":1544,"links":1856,"subMenu":1871},[1857,1861,1866],{"text":1858,"config":1859},"Tarife anzeigen",{"href":1546,"dataGaName":1860,"dataGaLocation":1838},"view plans",{"text":1862,"config":1863},"Vorteile von Premium",{"href":1864,"dataGaName":1865,"dataGaLocation":1838},"/de-de/pricing/premium/","why premium",{"text":1867,"config":1868},"Vorteile von Ultimate",{"href":1869,"dataGaName":1870,"dataGaLocation":1838},"/de-de/pricing/ultimate/","why ultimate",[1872],{"title":1719,"links":1873},[1874,1876,1878,1880,1885,1890,1895],{"text":1726,"config":1875},{"href":1728,"dataGaName":1405,"dataGaLocation":1838},{"text":1731,"config":1877},{"href":1733,"dataGaName":1734,"dataGaLocation":1838},{"text":1736,"config":1879},{"href":1738,"dataGaName":1739,"dataGaLocation":1838},{"text":1881,"config":1882},"Status",{"href":1883,"dataGaName":1884,"dataGaLocation":1838},"https://status.gitlab.com/","status",{"text":1886,"config":1887},"Nutzungsbedingungen",{"href":1888,"dataGaName":1889,"dataGaLocation":1838},"/terms/","terms of use",{"text":1891,"config":1892},"Datenschutzerklärung",{"href":1893,"dataGaName":1894,"dataGaLocation":1838},"/de-de/privacy/","privacy statement",{"text":1896,"config":1897},"Cookie-Einstellungen",{"dataGaName":1898,"dataGaLocation":1838,"id":1899,"isOneTrustButton":135},"cookie preferences","ot-sdk-btn",{"title":1442,"links":1901,"subMenu":1910},[1902,1906],{"text":1903,"config":1904},"DevSecOps-Plattform",{"href":1424,"dataGaName":1905,"dataGaLocation":1838},"devsecops platform",{"text":1907,"config":1908},"KI-unterstützte Entwicklung",{"href":1431,"dataGaName":1909,"dataGaLocation":1838},"ai-assisted development",[1911],{"title":1912,"links":1913},"Themen",[1914,1918,1923,1928,1933,1938,1943,1948],{"text":1462,"config":1915},{"href":1916,"dataGaName":1917,"dataGaLocation":1838},"/de-de/topics/ci-cd/","cicd",{"text":1919,"config":1920},"GitOps",{"href":1921,"dataGaName":1922,"dataGaLocation":1838},"/de-de/topics/gitops/","gitops",{"text":1924,"config":1925},"DevOps",{"href":1926,"dataGaName":1927,"dataGaLocation":1838},"/de-de/topics/devops/","devops",{"text":1929,"config":1930},"Versionskontrolle",{"href":1931,"dataGaName":1932,"dataGaLocation":1838},"/de-de/topics/version-control/","version control",{"text":1934,"config":1935},"DevSecOps",{"href":1936,"dataGaName":1937,"dataGaLocation":1838},"/de-de/topics/devsecops/","devsecops",{"text":1939,"config":1940},"Cloud-nativ",{"href":1941,"dataGaName":1942,"dataGaLocation":1838},"/de-de/topics/cloud-native/","cloud native",{"text":1944,"config":1945},"KI für das Programmieren",{"href":1946,"dataGaName":1947,"dataGaLocation":1838},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1949,"config":1950},"Agentische KI",{"href":1951,"dataGaName":1952,"dataGaLocation":1838},"/de-de/topics/agentic-ai/","agentic ai",{"title":1954,"links":1955},"Lösungen",[1956,1959,1961,1966,1970,1973,1976,1979,1981,1983,1985,1990],{"text":1487,"config":1957},{"href":1482,"dataGaName":1958,"dataGaLocation":1838},"Application Security Testing",{"text":1474,"config":1960},{"href":1458,"dataGaName":1459,"dataGaLocation":1838},{"text":1962,"config":1963},"Agile Entwicklung",{"href":1964,"dataGaName":1965,"dataGaLocation":1838},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1967,"config":1968},"SCM",{"href":1471,"dataGaName":1969,"dataGaLocation":1838},"source code management",{"text":1462,"config":1971},{"href":1464,"dataGaName":1972,"dataGaLocation":1838},"continuous integration & delivery",{"text":1513,"config":1974},{"href":1515,"dataGaName":1975,"dataGaLocation":1838},"value stream management",{"text":1919,"config":1977},{"href":1978,"dataGaName":1922,"dataGaLocation":1838},"/de-de/solutions/gitops/",{"text":1526,"config":1980},{"href":1529,"dataGaName":1530,"dataGaLocation":1838},{"text":1532,"config":1982},{"href":1535,"dataGaName":1536,"dataGaLocation":1838},{"text":1538,"config":1984},{"href":1541,"dataGaName":1542,"dataGaLocation":1838},{"text":1986,"config":1987},"Bildungswesen",{"href":1988,"dataGaName":1989,"dataGaLocation":1838},"/de-de/solutions/education/","education",{"text":1991,"config":1992},"Finanzdienstleistungen",{"href":1993,"dataGaName":1994,"dataGaLocation":1838},"/de-de/solutions/finance/","financial services",{"title":1549,"links":1996},[1997,1999,2001,2003,2006,2008,2011,2013,2015,2017,2019,2021,2023,2025],{"text":1562,"config":1998},{"href":1564,"dataGaName":1565,"dataGaLocation":1838},{"text":1567,"config":2000},{"href":1569,"dataGaName":1570,"dataGaLocation":1838},{"text":1572,"config":2002},{"href":1574,"dataGaName":1575,"dataGaLocation":1838},{"text":1577,"config":2004},{"href":1579,"dataGaName":2005,"dataGaLocation":1838},"docs",{"text":1600,"config":2007},{"href":1602,"dataGaName":1603,"dataGaLocation":1838},{"text":2009,"config":2010},"Neuerungen",{"href":1660,"dataGaName":1661,"dataGaLocation":1838},{"text":1595,"config":2012},{"href":1597,"dataGaName":1598,"dataGaLocation":1838},{"text":1614,"config":2014},{"href":1616,"dataGaName":1617,"dataGaLocation":1838},{"text":1622,"config":2016},{"href":1624,"dataGaName":1625,"dataGaLocation":1838},{"text":1627,"config":2018},{"href":1629,"dataGaName":1630,"dataGaLocation":1838},{"text":1632,"config":2020},{"href":1634,"dataGaName":1635,"dataGaLocation":1838},{"text":1637,"config":2022},{"href":1639,"dataGaName":1640,"dataGaLocation":1838},{"text":1642,"config":2024},{"href":1644,"dataGaName":1645,"dataGaLocation":1838},{"text":1647,"config":2026},{"href":1649,"dataGaName":1650,"dataGaLocation":1838},{"title":1663,"links":2028},[2029,2031,2033,2035,2037,2039,2044,2049,2051,2053,2055],{"text":1671,"config":2030},{"href":1673,"dataGaName":1665,"dataGaLocation":1838},{"text":1676,"config":2032},{"href":1678,"dataGaName":1679,"dataGaLocation":1838},{"text":1684,"config":2034},{"href":1686,"dataGaName":1687,"dataGaLocation":1838},{"text":1689,"config":2036},{"href":1691,"dataGaName":1692,"dataGaLocation":1838},{"text":1694,"config":2038},{"href":1696,"dataGaName":1697,"dataGaLocation":1838},{"text":2040,"config":2041},"Nachhaltigkeit",{"href":2042,"dataGaName":2043,"dataGaLocation":1838},"/sustainability/","Sustainability",{"text":2045,"config":2046},"Vielfalt, Inklusion und Zugehörigkeit",{"href":2047,"dataGaName":2048,"dataGaLocation":1838},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1699,"config":2050},{"href":1701,"dataGaName":1702,"dataGaLocation":1838},{"text":1709,"config":2052},{"href":1711,"dataGaName":1712,"dataGaLocation":1838},{"text":1714,"config":2054},{"href":1716,"dataGaName":1717,"dataGaLocation":1838},{"text":2056,"config":2057},"Transparenzerklärung zu moderner Sklaverei",{"href":2058,"dataGaName":2059,"dataGaLocation":1838},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2061},[2062,2065,2068],{"text":2063,"config":2064},"Terms",{"href":1888,"dataGaName":1889,"dataGaLocation":1838},{"text":2066,"config":2067},"Cookies",{"dataGaName":1898,"dataGaLocation":1838,"id":1899,"isOneTrustButton":135},{"text":2069,"config":2070},"Datenschutz",{"href":1893,"dataGaName":1894,"dataGaLocation":1838},[2072],{"id":2073,"title":7,"body":1371,"config":2074,"content":2076,"description":1371,"extension":2080,"meta":2081,"navigation":135,"path":2082,"seo":2083,"stem":2084,"__hash__":2085},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":2075},"BlogAuthor",{"name":7,"config":2077},{"headshot":2078,"ctfId":2079},"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",[2087,2095,2103],{"title":2088,"description":2089,"heroImage":2090,"category":1367,"date":2091,"authors":2092,"slug":2094,"externalUrl":1371},"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",[2093],"Julian Thome","improved-scope-offset-fingerprinting",{"title":2096,"description":2097,"heroImage":2090,"category":1367,"date":2098,"authors":2099,"slug":2102,"externalUrl":1371},"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",[2100,2101],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":2104,"description":2105,"heroImage":2106,"category":1367,"date":2107,"authors":2108,"slug":2110,"externalUrl":1371},"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",[2109],"Alisa Ho","claude-security-and-gitlab",{"promotions":2112},[2113,2127,2138,2149],{"id":2114,"categories":2115,"header":2117,"text":2118,"button":2119,"image":2124},"ai-modernization",[2116],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":2120,"config":2121},"Ermittle deinen KI-Reifegrad",{"href":2122,"dataGaName":2123,"dataGaLocation":1603},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":2125},{"src":2126},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":2128,"categories":2129,"header":2130,"text":2118,"button":2131,"image":2135},"devops-modernization",[1384,1937],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":2132,"config":2133},"Ermittle deinen DevOps-Reifegrad",{"href":2134,"dataGaName":2123,"dataGaLocation":1603},"/de-de/assessments/devops-modernization-assessment/",{"config":2136},{"src":2137},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":2139,"categories":2140,"header":2141,"text":2118,"button":2142,"image":2146},"security-modernization",[1367],"Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":2143,"config":2144},"Ermittle deinen Sicherheitsreifegrad",{"href":2145,"dataGaName":2123,"dataGaLocation":1603},"/de-de/assessments/security-modernization-assessment/",{"config":2147},{"src":2148},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":2150,"paths":2151,"header":2154,"text":2155,"button":2156,"image":2161},"github-azure-migration",[2152,2153],"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":2157,"config":2158},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":2159,"dataGaName":2160,"dataGaLocation":1603},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":2162},{"src":2137},{"header":2164,"blurb":2165,"button":2166,"secondaryButton":2171},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":2167,"config":2168},"Kostenlosen Test starten",{"href":2169,"dataGaName":1400,"dataGaLocation":2170},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1726,"config":2172},{"href":1728,"dataGaName":1405,"dataGaLocation":2170},1786803736960]