This is the Trace Id: c5c1c6695b0e94dbf91d57db0c5e99c2
Gå til hovedindholdet Microsoft Defender Microsoft Entra Microsoft Intune Microsoft Purview Microsoft Security Copilot Microsoft Sentinel Vis alle produkter Cybersikkerhed, der er drevet af kunstig intelligens Skysikkerhed Datasikkerhed og styring Identitet og netværksadgang Beskyttelse af personlige oplysninger og risikostyring Sikkerhed til kunstig intelligens Små og mellemstore virksomheder Samlet SecOps Nul tillid Prisfastsættelse Tjenester Partnere Hvorfor Microsoft Security Fokus på cybersikkerhed Kundehistorier Sikkerhed 101 Prøveversioner af produkter Anerkendelse fra branchen Microsoft Security Insider Microsofts rapport om digitalt forsvar Security Response Center Blog om Microsoft Security Microsoft Security-begivenheder Microsoft Tech Community Dokumentation Teknisk indholdsbibliotek Kurser og certifikater Compliance Program til Microsoft Cloud Microsoft Center for sikkerhed og rettigheder Service Trust Portal Microsoft Secure Future Initiative Hub til løsninger for virksomheder Kontakt salgsafdelingen Start gratis prøveversion Microsoft Sikkerhed Azure Dynamics 365 Microsoft 365 Microsoft Teams Windows 365 Kunstig intelligens Azure Space Mixed reality Microsoft HoloLens Microsoft Viva Kvantecomputere Uddannelse Biler Finansielle tjenester Myndigheder Sundhedspleje Produktion Detail Find en partner Bliv partner Partner Network Microsoft Marketplace Softwarefirmaer Blog Microsoft Advertising Udviklercenter Dokumentation Arrangementer Licenser Microsoft Learn Microsoft Research Vis oversigt over websted
Person, der arbejder på en bærbar computer ved et træbord ved siden af et vindue med planter.

Hvad er DevSecOps?

Få mere at vide om, hvordan DevSecOps integrerer sikkerhed på tværs af udviklings- og cloudmiljøer for at reducere risikoen, samtidig med at leveringshastigheden og overholdelsen af angivne standarder bevares.
DevSecOps integrerer sikkerhed i alle faser af moderne softwareudvikling, integrerer automatiseret test, identitetsstyring og løbende overholdelse af angivne standarder i DevOps-arbejdsprocesser. Med DevSecOps kan organisationer bedre administrere risici på tværs af kode, pipelines og multicloudmiljøer, samtidig med at leveringshastigheden bevares, og tekniske fremgangsmåder justeres i forhold til virksomhedens sikkerhed og lovmæssige krav.
  • DevSecOps integrerer sikkerhed på tværs af hele livscyklussen for softwareudvikling og udvider DevOps ved at tilføje løbende kontrolelementer til sikkerhed og overholdelse af angivne standarder.
  • En CNAPP samler administration af stilling, beskyttelse af arbejdsbelastninger, identitet og overholdelse af angivne standarder.
  • Automatisering og politik som kode gennemtvinger sikkerhed i stor skala i CI/CD-pipelines, mens adgang med færrest rettigheder reducerer identitetsrisikoen på tværs af lagre og cloudarbejdsbelastninger.
  • Trusselsintelligens forbedrer fokus på prioritering og afhjælpning af sikkerhedsrisici.
  • Test af skift til venstre og kontinuerlig overvågning understøtter sikker og hurtig levering.
  • Almindelige udfordringer omfatter værktøjsudbytte, mangler i færdigheder, kompleksitet i forbindelse med overholdelse af angivne standarder og risiko for AI-genereret kode.

Hvad er DevSecOps i moderne cloudmiljøer?

DevSecOps er en tilgang til softwareudvikling, der integrerer sikkerhed i alle faser af DevOps-livscyklussen. I stedet for at behandle sikkerhed som en sidste gennemgang før udgivelsen integrerer DevSecOps automatiserede sikkerhedskontroller direkte i pipelines med løbende integration og levering (CI/CD). Målet er at bygge sikker software i høj kvalitet hurtigt.

DevSecOps udviklede sig fra DevOps, som fokuserer på at forbedre samarbejdet mellem udviklings- og driftsteams for at sætte skub i leveringen. Efterhånden som cloudimplementering øges, og udgivelsescyklusserne forkortes, havde sikkerhedsteams brug for en metode til at holde trit. DevSecOps udvider DevOps ved at gøre sikkerhed til et delt ansvar, der understøttes af automatisering, håndhævelse af politikker og løbende test.

I moderne miljøer arbejder DevSecOps inden for en bredere sikkerhedsstrategi, der oprindeligt findes i cloudmiljøet, og som ofte leveres via skybaseret programbeskyttelse (CNAPP). En CNAPP giver samlet synlighed på tværs af udviklingspipelines og kørselsmiljøer, hvilket hjælper teams med at justere administration af stilling, kørselsbeskyttelse, identitetskontroller og overvågning af overholdelse af angivne standarder. DevSecOps-praksisser indgår i denne strategi ved at identificere og løse risici tidligt, før de når til produktion.

Flere forretningsfaktorer former denne vagt. Organisationer administrerer multicloudinfrastruktur, distribuerede teams og AI-genereret kode, der sætter skub i udviklingen, men kan introducere nye risici. Lovmæssige krav udvides fortsat. Kontinuerlig håndhævelse af politikker på tværs af pipelines og cloudmiljøer hjælper med at bevare kontrollen uden at gøre innovationen langsommere. DevSecOps er en model, hvor hastighed og sikkerhed forstærker hinanden i stedet for at konkurrere.

DevSecOps vs. DevOps: Hvad er forskellen?

DevOps forbedrer den måde, udviklings- og driftsteams arbejder sammen på. Det fremhæver automatisering, hurtigere udgivelsescyklusser og delt ejerskab af programmets ydeevne. Det primære mål er hastighed med stabilitet.

DevSecOps bygger videre på dette fundament ved at integrere kontinuerlig sikkerhed og overholdelse af angivne standarder i de samme arbejdsprocesser. I stedet for at tilføje sikkerhedsgennemgange i slutningen af udviklingen integrerer DevSecOps automatiserede kontrolelementer direkte i pipelines, infrastrukturskabeloner og cloudmiljøer.

Forskellen bliver tydeligere i moderne cloudscenarier. DevOps sætter fart på udrulninger på tværs af multicloudinfrastruktur. DevSecOps løser de risici, der følger med denne skala, herunder:
 
  • Identitetsmisbrug i buildpipelines

  • Sikkerhedsrisici i forbindelse med softwareforsyningskæden i tredjepartspakker

  • Forkerte konfigurationer af infrastruktur i cloudressourcer

  • Hemmeligheder, der vises i kildekodelagre
En DevOps-pipeline kan f.eks. automatisk bygge og udrulle programmer i objektbeholdere efter en kodebekræftelse. En DevSecOps-pipeline tilføjer automatiseret scanning af sikkerhedsrisici, registrering af hemmeligheder, afhængighedsanalyse og politikkontroller, før udrulningen fortsætter. Hvis der findes en kritisk sikkerhedsrisiko eller eksponerede legitimationsoplysninger, frigives pipelinen, indtil den er løst.

Her er en forenklet sammenligning:
 
  • DevOps: Hastighed, automatisering, samarbejde

  • DevSecOps: Hastighed, automatisering, samarbejde samt integreret sikkerhed og overholdelse af angivne standarder
DevSecOps sikrer, at hurtig levering ikke introducerer ikke-administreret risiko ved at justere udviklingshastigheden med sikkerhedsansvarlighed på tværs af distribuerede teams og komplekse cloudmiljøer.

Sådan fungerer DevSecOps på tværs af softwarelivscyklussen

DevSecOps dækker hele livscyklussen for softwareudvikling – fra indledende planlægning til løbende overvågning – og integrerer sikkerhed i alle faser. Sådan fungerer det:

Planlægning: Teams definerer sikkerhedskrav, overholdelsesforpligtelser og risikotærskler sammen med funktionelle mål. Politikker kodes tidligt for at vejlede i udviklingsbeslutninger.

Kodning: Udviklere skriver kode med indbyggede sikkerhedsforanstaltninger, f.eks. sikre biblioteker, styring af hemmeligheder og afhængighedskontroller. Automatiserede scanninger kontrollerer, om der er eksponerede legitimationsoplysninger og sårbare pakker, når koden er bekræftet.

Bygning: Pipelines med løbende integration kompilerer kode og kører statisk analyse, analyse af softwarekomposition og signering af artefakter for at beskytte softwareforsyningskæden.

Test: Automatiseret sikkerhedstest identificerer sikkerhedsrisici, fejlkonfigurationer og overtrædelser af politikker før udrulning. Risikoindsigt i realtid hjælper teams med at prioritere afhjælpning baseret på indvirkning.

Udrulning: Skabeloner til infrastruktur som kode valideres i forhold til politik som kode-kontrolelementer for at forhindre usikre konfigurationer i multicloudmiljøer.

Overvågning: Løbende overvågning registrerer kørselstrusler, identitetsmisbrug og konfigurationsafvigelse i produktionen.

DevSecOps-modellen afspejler en moderne sikker udviklingslivscyklus, der er bygget på principper for skift til venstre. Sikkerhedstest og håndhævelse af politikker begynder tidligt og fortsætter i hele pipelinen. Automatiserings- og feedbackløkker giver løbende synlighed i risikoen.

En CNAPP understøtter denne tilgang ved at levere samlet håndhævelse af politikker, eksponeringsstyring, identitetsbaserede kontrolelementer og registrering af fejlkonfiguration på tværs af udviklings- og kørselsmiljøer.

DevSecOps kan integreres direkte med CI/CD-værktøjer som GitHub Actions og Azure DevOps for at understøtte konsistente sikkerhedskontroller uden at afbryde leveringshastigheden.

Nøglekomponenter i en DevSecOps-strategi

DevSecOps kombinerer proces, automatisering og styring i en samlet driftsmodel. Selvom værktøjer spiller en vigtig rolle, afhænger succes virkelig af, hvordan teams anvender dem på tværs af udviklings- og cloudmiljøer – hvilket gør DevSecOps lige så meget om tankesæt, som det handler om teknologi.

På platformsniveau leverer en CNAPP den samlede basis, som DevSecOps-teams er afhængige af. Den forbinder administration af stilling, IaC-scanning (Infrastruktur som kode), beskyttelse af arbejdsbelastninger, objektbeholdersikkerhed, eksponeringsstyring og identitetsstyring til en kontinuerlig sikkerhedsmodel.

Grundlæggende komponenter i en DevSecOps-strategi omfatter:

  • Sikre kodningspraksisser. Udviklere bygger med indbygget sikkerhed ved hjælp af godkendte biblioteker, sikre lagre og integreret beskyttelse af udviklingsmiljøer, der reducerer risikoen ved kilden.

  • Automatisering og CI/CD-integration. Sikkerhedskontroller kører løbende i pipelines, herunder kodescanning, afhængighedsanalyse, signering af artefakter og politikvalidering.

  • Identitets- og adgangsadministration. Færrest privilegeret adgang på tværs af lagre, pipelines, cloudressourcer og tjenestekonti reducerer identitetsmisbrug og tværgående bevægelse.

  • Overholdelse og styring. Politik-som-kode gennemtvinger standarder, der er justeret i forhold til strukturer som f.eks. International Organization for Standardization (ISO), System and Organization Controls (SOC) og NIST (National Institute of Standards and Technology), der understøtter parathed til overvågning.

  • Løbende overvågning. Kontroller efter udrulning registrerer sårbarheder, konfigurationsafvigelser og kørselstrusler.

  • Samarbejde og kultur. Sikkerhed bliver et delt ansvar på tværs af udviklings-, drifts- og sikkerhedsteams.
DevSecOps kræver stærk identitetsstyring, disciplin i clouden og kontrolelementer, der beskytter både menneskelig og maskinel udvikling.

Identitetsstyring på tværs af pipelines er grundlæggende. Tjenestekonti, agenter og automatiseringsscripts har ofte administratorrettigheder. Uden færrest håndhævelse af rettigheder bliver disse identiteter mål med høj værdi. DevSecOps anvender rollebaseret adgangskontrol, rettidig adgang og løbende overvågning af legitimationsoplysninger på tværs af lagre, pipelines og cloudressourcer. Hemmeligheder gemmes i administrerede samlinger i stedet for indlejret i kode. Adgangspolitikker er versionskontrollerede og gennemgås som programkode.

Kontrolelementer til cloudstilling sikrer, at infrastrukturen forbliver justeret i forhold til de definerede sikkerhedsbaselinelinjer. Skabeloner for infrastruktur som kode evalueres i forhold til politikken før udrulning. Efter udrulningen registrerer kontinuerlig overvågning af stillinger konfigurationsafvigelse, for mange tilladelser, offentlig eksponering og usikre netværksregler på tværs af multicloudmiljøer.

Sikker lagring og integreret beskyttelse af udviklingsmiljøer reducerer risikoen i den tidligste fase. Lagerbeskyttelse blokerer eksponerede hemmeligheder og sårbare afhængigheder før fletning. Udvidelser til integrerede udviklingsmiljøer afslører sikkerhedsfeedback i realtid, når udviklere skriver kode, hvilket reducerer afhjælpningsindsatsen i downstream.

I AI-æraen håndterer DevSecOps også sikkerheden i forsyningskæden for model og datasæt. Teams validerer oplæringsdatakilder, kontrollerer modelintegritet via signering af artefakter og overvåger for manipulation i modelregistreringer. Styring omfatter også AI-genereret kode med automatiseret gennemgang og politikkontroller, der sikrer, at genereret output opfylder sikkerhedsstandarderne.

Almindelige DevSecOps-værktøjer og -platforme

DevSecOps-værktøjer giver den automatisering, synlighed og kontrol, der kræves for at sikre moderne udvikling i stor skala. De reducerer manuel gennemgang, håndhæver politik konsekvent og giver teams delt indsigt i risici på tværs af pipelines og cloudmiljøer.

Sikre værktøjer til kode- og afhængighedsstyring
, f.eks. GitHub Advanced Security og SonarQube, identificerer sårbarheder og eksponerede hemmeligheder, før kode når produktionen. De udfører statiske sikkerhedstest af programmer, analyse af softwarekomposition og registrering af hemmeligheder direkte i lagre og henteanmodninger, hvilket hjælper udviklere med at afhjælpe risikoen tidligt.

Pipelineintegritet og CI/CD-integrationsfunktioner
på platforme, f.eks. GitHub Actions, Jenkins og Azure DevOps-sikkerheds-plug-ins, integrerer sikkerhedskontroller direkte i build- og udgivelsesarbejdsprocesser. Disse integrationer gennemtvinger politikkontroller, validerer artefakter og kører automatiserede tests i hele pipelinen for at forhindre, at kode med høj risiko kommer videre.

CWPP-løsninger (Container and Cloud Workload Protection), herunder Microsoft Defender for Containers, Aqua og Prisma Cloud, scan objektbeholderafbildninger, og overvåg kørselsmiljøer. De hjælper med at registrere fejlkonfigurationer, sårbare billeder og aktive trusler, der påvirker programmer i objektbeholdere.

Administration af cloudstillinger og overvågningsværktøjer til overholdelse af angivne standarder, f.eks. Microsoft Defender for Cloud og Azure Policy, vurderer løbende infrastrukturen i forhold til definerede sikkerhedsbaseline. De identificerer konfigurationsafvigninger, for mange tilladelser og huller i overholdelse af angivne standarder på tværs af multicloudmiljøer.

Administrationsplatforme til hemmeligheder , herunder Azure Key Vault og HashiCorp Vault, centraliserer lagring og rotation af legitimationsoplysninger og kryptografiske nøgler, hvilket reducerer risikoen for eksponerede hemmeligheder i kildekode eller pipelines. Effektive DevSecOps-programmer prioriterer værktøjer, der integreres på tværs af lagre, pipelines og cloudplatforme. Interoperabilitet understøtter delte arbejdsprocesser, reducerer siloer og hjælper teams med at opretholde ensartede sikkerhedskontroller fra udvikling til produktion.

DevSecOps bedste praksis for sikker, moderne udvikling

Effektive DevSecOps-programmer kombinerer automatisering, styring og kultur for at styrke robustheden, samtidig med at leveringshastigheden bevares i komplekse multicloudmiljøer.

Indfør en vagt til venstre-tankesæt
Integrer sikkerhedskrav under planlægning og design. Scan kode, afhængigheder og infrastrukturskabeloner, efterhånden som de oprettes – ikke efter udrulningen. Tidlig registrering reducerer omkostninger til afhjælpning og forhindrer, at sikkerhedsrisici går gennem pipelinen.

Automatiser test og håndhævelse af overholdelse af angivne standarder
Integrer sikkerhedstest, politikvalidering og bekræftelse af artefakt direkte i CI/CD-arbejdsprocesser. Politik-som-kode sikrer ensartet håndhævelse af interne standarder og eksterne bestemmelser uden manuelle flaskehalse ved gennemgang.

Anvend adgangskontroller med færrest rettigheder
Begræns tilladelser på tværs af lagre, pipelines, tjenestekonti og arbejdsbelastninger i cloudmiljøet. Gennemtving rollebaseret adgangskontrol, just-in-time-adgang og lagring af administrerede hemmeligheder for at reducere identitetsbaseret risiko.

Prioriter ved hjælp af trusselsintelligens og løbende validering
Brug cybertrusselsefterretning til at styrke håndtering af sikkerhedsrisici med aktive udnyttelsessignaler. Implementer Zero Trust-pipelineprincipper ved at bekræfte alle buildartefakter, identiteter og afhængigheder. Valider løbende konfigurationer og kontrolelementer i takt med, at miljøer udvikler sig.

Overvåg løbende, og reager hurtigt

Udrul kørselsovervågning og -beskeder for at registrere trusler, konfigurationsafvigelse og unormal adfærd i produktionen. Automatiserede feedbackløkker sikrer, at risikoindsigt flyder tilbage til udviklingsteams.

Opbyg delt ansvarlighed
Tilskynd til samarbejde på tværs af udvikling, sikkerhed og drift. Sikkerhed bliver en del af de daglige arbejdsprocesser, der understøttes af ledelsens forventninger og målbare mål.

Almindelige udfordringer i devSecOps-indføring

Det er både organisatorisk og teknisk komplekst at indføre en DevSecOps-model. Ledere skal balancere hastighed, risikostyring og driftseffektivitet uden at skabe problemer på tværs af teams.

Balancering af hurtig levering med stærke sikkerhedsstandarder er stadig en af de mest almindelige udfordringer. Udviklingsteams måles i udgivelseshastighed, mens sikkerhedsteams fokuserer på reduktion af risici. Uden delte mål og automatiserede rækværk kan disse prioriteter være i konflikt.

Værktøjsredskab og integrationskompleksitet skaber også friktion. Mange organisationer akkumulerer scannings-, overvågnings- og overholdelsesværktøjer, der fungerer isoleret. Fragmenterede værktøjer øger underretningstræthed, komplicerer rapportering og gør det svært at opretholde konsekvent håndhævelse af politikker på tværs af pipelines og cloudplatforme.

Huller i færdigheder mellem udviklings- og sikkerhedsteams kan gøre fremskridt langsommere. Færdigheder inden for cloudengineering omfatter ikke altid sikker kodning eller ekspertise inden for identitetsstyring. Samtidig kan sikkerhedsteams mangle indgående kendskab til CI/CD-arbejdsprocesser og infrastruktur som kode.

Vedligeholdelse af overholdelse på tværs af hybrid- og multicloudmiljøer tilføjer endnu et lag af problemer. Politikafvigelser, inkonsekvente konfigurationer og decentraliserede teams gør det sværere at demonstrere overvågningsparathed. Organisationer står også over for nye udfordringer. AI-accelereret kodeoprettelse øger outputmængden og risikoen for eksponering af sikkerhedsrisici. Hemmeligheder, der er spredt på tværs af lagre, og automatiseringsscripts øger identitetsrisikoen. Politikafvigelse i flere cloudmiljøer mindsker styringskontrollerne. Definition af meningsfulde målepunkter – f.eks. middeltid til afhjælpning, tendenser for sårbarhedsforældelse og reduktion af eksponering – kræver justering på tværs af teams.

DevSecOps med Microsoft Security

Håndter almindelige udfordringer i forbindelse med indførelse af DevSecOps ved at konsolidere administration af stilling, identitetsstyring, trusselsintelligens og sikre udviklingskontroller i Microsoft Security.

Værktøjsudvidelse og fragmenteret synlighed gør ofte DevSecOps-modenhed langsom. Microsoft Defender for Cloud samler administration af cloudsikkerhedstilstand, DevOps-sikkerhed og kørselsbeskyttelse i en enkelt CNAPP. Dette reducerer integrationskompleksiteten og giver en centraliseret visning af risici på tværs af kode, infrastruktur, objektbeholdere og multicloudarbejdsbelastninger.

Justering af leveringshastigheden med stærke sikkerhedsstandarder kræver automatiserede rækværk. Integrerede DevOps-sikkerhedsfunktioner udvides til lagre og CI/CD-pipelines, hvilket hjælper teams med at registrere sikkerhedsrisici, eksponerede hemmeligheder og usikre konfigurationer før udrulning. Håndhævelse af politikker og kontroller af overholdelse af angivne standarder fungerer løbende, hvilket reducerer manuelle flaskehalse ved gennemgang, samtidig med at justeringen af styringen bevares.

Identitetsrisiko på tværs af pipelines og tjenestekonti kan være en vedvarende udfordring. Microsoft Security-løsninger anvender identitetsorienterede kontrolelementer, adgang med færrest mulige rettigheder og løbende tilladelsesovervågning på tværs af cloudressourcer. Denne fremgangsmåde understøtter Zero Trust-principper i udviklingsarbejdsprocesser og begrænser mulighederne for tværgående bevægelser.

Nye risici – f.eks. AI-accelereret kodeoprettelse, modelintegritet i forsyningskæden og politikafvigelse i flere cloudmiljøer – kræver konsekvent overblik og en fleksibel tilgang. Centraliseret politikadministration og intelligensdrevet prioritering hjælper sikkerhedsteams med at fokusere på de mest effektfulde eksponeringer, samtidig med at multicloudsikkerheden udvides på tværs af Azure-, Amazon Web Services- og Google Cloud Platform-miljøer.

DevSecOps bliver mere bæredygtig, når stilling, identitet, trusselsbeskyttelse og overholdelse fungerer som et tilsluttet system i stedet for frakoblede værktøjer. Microsoft Security leverer et integreret fundament, der justerer den tekniske hastighed med risikostyring på virksomhedsniveau.

Ofte stillede spørgsmål

  • DevSecOps står for udvikling, sikkerhed og drift. Det er en tilgang, der integrerer sikkerhed i alle faser af livscyklussen for softwareudvikling. I stedet for at behandle sikkerhed som en sidste gennemgang integrerer DevSecOps automatiseret test, håndhævelse af politikker og overholdelseskontroller i planlægning, kodning, bygning, udrulning og overvågning.
  • DevOps fokuserer på at forbedre samarbejdet mellem udvikling og drift for at sætte skub i leveringen af software. DevSecOps bygger videre på denne model ved at tilføje løbende kontrolelementer til sikkerhed og overholdelse af angivne standarder i de samme arbejdsprocesser. Det sikrer, at hurtig levering ikke introducerer ikke-administreret risiko på tværs af kode, pipelines og cloudmiljøer.
  • DevSecOps er en del af en bredere strategi for cybersikkerhed. Den anvender specifikt sikkerhedspraksis i forbindelse med softwareudvikling og cloudhandlinger. Selvom cybersikkerhed dækker domæner som netværkssikkerhed og slutpunktsbeskyttelse, fokuserer DevSecOps på at sikre kode, pipelines, infrastruktur og arbejdsbelastninger i hele udviklingslivscyklussen.
  • DevSecOps-strukturen integrerer sikkerhedskontroller i hver fase af livscyklussen for softwareudvikling. Det omfatter test af vagter til venstre, automatiseret scanning af sikkerhedsrisici, politik som kode, identitetsstyring, løbende overvågning af overholdelse af angivne standarder og kørselsbeskyttelse. Strukturen justerer udviklingshastigheden med konsistent risikostyring og revisionsparathed.
  • DevSecOps fungerer ved at integrere automatiseret sikkerhedstest og håndhævelse af politikker i pipelines med løbende integration og levering (CI/CD). Teams scanner kode og afhængigheder under udvikling, validerer infrastruktur før udrulning, gennemtvinger adgang med færrest rettigheder og overvåger løbende arbejdsbelastninger i produktionen for at registrere trusler og fejlkonfigurationer.

Følg Microsoft Security

Dansk (Danmark) Beskyttelse af personlige oplysninger om forbrugernes sundhed Kontakt Microsoft Beskyttelse af personlige oplysninger Administrer cookies Copyright & rettigheder Varemærker Om vores annoncer EU Compliance DoCs