„serilog“ – c# registravimas – „serilog“ konfigūracija – saugus registravimas

„Serilog“ spąstai: kai registravimas tampa duomenų nutekėjimu

„Serilog“ ir C# registravimo rizikų supratimas gamyboje

„Serilog“ yra viena populiariausių C# registravimo sistemų, pripažinta dėl savo lankstumo, struktūrizuotų duomenų palaikymo ir galingų rinktuvų. Tačiau tas pats lankstumas kelia paslėptų pavojų. Išsami arba neteisingai sukonfigūruota „Serilog“ konfigūracija gali netyčia atskleisti:

  • API raktai arba žetonai, užfiksuoti išimčių žurnaluose
  • Vidiniai failų keliai arba steko pėdsakai, atskleidžiantys architektūros detales
  • Jautrūs užklausų / atsakymų naudingieji duomenys iš API

Tai, kas kūrimo metu atrodo naudinga derinant duomenis, gamyboje gali tapti duomenų nutekėjimu.
Kai C# registravimo lygiai nustatyti per aukšti (Daugiakalbis or Debug), jie gali užfiksuoti paslaptis iš aplinkos kintamųjų arba serializuotų objektų. Ši rizika eksponentiškai auga debesijos arba kelių nuomininkų aplinkose, kur žurnalai yra centralizuoti ir bendrinami tarp kelių paslaugų.

Dažnos „Serilog“ klaidos, dėl kurių duomenys gali būti nutekinti

Panagrinėkime dažniausias „Serilog“ konfigūravimo ir naudojimo klaidas, dėl kurių duomenys gali būti atskleisti realiuose .NET projektuose.

1. Jautrių duomenų registravimas pagal numatytuosius nustatymus

⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams. Nenaudoti gamybinėje aplinkoje.

/ Insecure Serilog usage Log.Information("User logged in with token {token}", user.Token); 

Tai saugos autentifikavimo žetonus tiesiai jūsų žurnaluose, kuriuos dažnai bus galima rasti žurnalų agregatoriuose arba debesies saugykloje.

Saugi versija:

// Secure: never log tokens or secrets Log.Information("User {userId} logged in successfully", user.Id); 

Mokymo pastaba: prieš įrašydami į žurnalus, filtruokite arba užmaskuokite jautrius laukus.

2. Pernelyg išsamus registravimas gamybinėje aplinkoje

Kūrėjai dažnai išeina Minimalus lygis nustatytas į Daugiakalbis gamyboje naudojama „Serilog“ konfigūracija:

⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams:

// Insecure Serilog configuration .LogLevel.MinimumLevel.Verbose();  

Tai gali užfiksuoti steko pėdsakus, neapdorotus naudinguosius duomenis arba ryšio eilutes.

Saugi versija:

// Secure Serilog configuration .MinimumLevel.Information() .Enrich.FromLogContext(); 

Mokymo pastaba: nustatykite žurnalavimo lygius į Informacija arba didesnės gamybos.

3. Nefiltruoti užklausų ir atsakymų duomenys

Kai kurie kūrėjai konfigūruoja „Serilog“ tarpinę programinę įrangą taip, kad ji registruotų visus užklausų / atsakymų tekstus:

⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams:

// Insecure example app.UseSerilogRequestLogging(); 

Nors tai patogu, tai gali išmesti jautrias antraštes arba JSON naudingąją apkrovą į žurnalus.

Saugus būdas yra įdiegti pasirinktinius filtrus:

app.UseSerilogRequestLogging(options => {     options.MessageTemplate = "Handled {RequestPath}"; }); 

Mokymo pastaba: Visada išvalykite užklausų žurnalą ir redaguokite antraštes, pvz. leidimas.

3. Nesaugi C# registravimo praktika CI/CD ir debesis Pipelines

Prisijungiama CI/CD yra tokia pat rizikinga kaip ir gamybojeKai kūrėjai naudoja C# registravimą kūrimo ar diegimo metu, slapti duomenys ir prisijungimo duomenys gali nutekėti į žurnalus.

⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams:

# .github/workflows/deploy.yml - name: Deploy app   run: dotnet publish /p:ApiKey=$DEPLOY_KEY   env:     DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} # Never expose real tokens, credentials or internal URLs in pipelines 

Jei pipeline apima a Log.Information() iškvietimas konfigūracijos reikšmėms spausdinti, „Serilog“ gali užregistruoti DEPLOY_KEY netyčia.

Saugi versija:

- name: Deploy app securely   run: dotnet publish /p:Environment=Production  

Mokymo pastaba: Niekada neregistruokite ir nekartokite paslapčių iš aplinkos kintamųjų.

Centralizuotos registravimo platformos dar labiau padidina šią problemą. Kai kelių paslaugų žurnalai sujungiami, viena neteisingai sukonfigūruota „Serilog“ konfigūracija gali atskleisti paslaptis iš kelių aplinkų.

Saugi „Serilog“ konfigūracija ir saugaus registravimo strategijos

Norėdami saugiai sukonfigūruoti „Serilog“, kūrėjai turi laikyti žurnalus savo saugumo laikysena, ne tik kaip derinimo priemonės. Žemiau pateikiamas praktinis kontrolinis sąrašas, padėsiantis išvengti nutekėjimų C# registravimo nustatymuose.

Saugus „Serilog“ kontrolinis sąrašas

  • Nustatyti Minimalus lygis į Informacija arba didesnės gamybos.
  • Naudokite filtrus, kad užmaskuotumėte arba praleistumėte jautrias ypatybes (pvz., slaptažodžius, prieigos raktus, antraštes).
  • Verčiau venkite registruoti ištisus objektus, žurnalų ID, laiko žymas ar maišos nuorodų formatus.
  • Reguliariai keiskite ir šifruokite žurnalų failus.
  • Naudokite saugius kanalus (HTTPS galinius taškus, apsaugotą saugyklą arba debesies žurnalų paslaugas).
  • Taikykite saugojimo apribojimus, kad išvengtumėte per didelio ekspozicijos.

Prieš diegimą patikrinkite „Serilog“ konfigūraciją automatinio nuskaitymo būdu.

Saugaus filtravimo pavyzdys:

var logger = new LoggerConfiguration()     .Filter.ByExcluding(e => e.MessageTemplate.Text.Contains("token"))     .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)     .CreateLogger(); 

Mokymo pastaba: naudokite filtrus ir slenkančius intervalus, kad sumažintumėte duomenų atskleidimo riziką.

Žurnalų patvirtinimo ir slapto nuskaitymo automatizavimas „DevSecOps“ sistemoje

Šiuolaikinės kūrėjų saugumo operacijos pipelines prieš sujungiant arba diegiant, turėtų automatiškai patvirtinti „Serilog“ konfigūraciją ir žurnalo turinį. Automatizavimas padeda anksti aptikti nesaugius C# registravimo modelius ir nutekėjusius slaptus duomenis.

Integracijos pavyzdys:

- name: Run log security validation   run: |     dotnet test --filter Category=LoggingSecurity     xygeni validate --rules logging # Never expose real tokens or internal URLs in pipelines 

Tai užtikrina:

  • Jokuose žurnaluose nėra kredencialų ar žetonų.
  • Žurnalo lygis tinkamas aplinkai.
  • Filtrai konfigūruojami kiekviename „Serilog“ profilyje.

By įtraukiant žurnalų skenavimą į CI/CDkomandos pašalina vieną iš dažniausių, bet nepastebimų duomenų atskleidimo priežasčių.

Slapto poveikio aptikimas naudojant Xygeni Secrets Security

Ksigeni Paslaptys Saugumas neapsiriboja vien paprastomis reguliariosiomis išraiškomis ar šablonų atitikimu – ji atlieka kontekstinę „Serilog“ ir C# registravimo kodo analizę, kad atskleistų nesaugias konfigūracijas ir slaptus atskleidimus saugyklose, kompiliacijose ir aplinkose.

„Xygeni“ aptinka:

  • Žurnalų išrašuose užkoduoti prisijungimo duomenys arba API raktai.
  • Išsamus registravimas gamybinėje aplinkoje Serilogas konfigūracijos failus.
  • Jautrių naudingųjų krovinių atskleidimas naudojant struktūrizuotą registravimą.
  • Nesaugios duomenų rinkimo vietos, pvz., vieši failai arba neužšifruotas perdavimas.

Komandos pavyzdys:

xygeni scan --detect secrets --context serilog 

Kitaip nei pasyvieji skaitytuvai, Ksigeni patvirtina žurnalavimo elgseną, susieja išvadas su diegimo metaduomenimis ir automatiškai įgyvendina politikas CI/CD.
Jei aptinkamas nesaugus C# registravimas arba „Serilog“ šablonai, jis blokuoja commit or pipeline etape, paverčiant registravimo higieną aktyvia „DevSecOps“ apsaugos priemone, kuri apsaugo nuo duomenų atskleidimo prieš kodui pasiekiant produkciją.

Edukacinė pastaba: integruoti Ksigeni pre-commit hooks bei pipeline vykdymo užtikrinimas, siekiant anksti aptikti slaptus atskleidimus ir automatiškai sustabdyti nesaugias konfigūracijas.

Saugus registravimas yra saugaus kodavimo dalis

Registravimas turėtų pagerinti stebimumą, o ne susilpninti saugumą. Neteisingai sukonfigūruotas. Serilogas arba nesaugu C# registravimas gali tyliai atskleisti kredencialus, aplinkos duomenis arba vidinius galinius taškus.

Norint sukurti saugesnes sistemas:

  • Gydykite savo Serilogas konfigūraciją kaip jūsų grėsmių modelio dalį.
  • Taikykite filtrus, keiskite žurnalus ir valdykite išsamumo lygius.
  • Konfigūracijų patvirtinimas naudojant automatizuotą CI/CD patikrinimus.
  • Paskirtis Xygeni Secrets Security nuolat aptikti, patvirtinti ir blokuoti nesaugius modelius.

Ksigeni aptinka nesaugias registravimo konfigūracijas, patvirtina slaptos informacijos atskleidimo riziką ir taiko automatinį vykdymą CI/CD pipelines, paverčiant saugų prisijungimą į nuolatinė „DevSecOps“ praktika kuri apsaugo jūsų kodą, kredencialus ir duomenis pagal paskirtį.

sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu