{"id":1956,"date":"2026-02-11T18:03:46","date_gmt":"2026-02-11T17:03:46","guid":{"rendered":"https:\/\/regulated-devsecops.com\/uncategorized\/riesgo-de-terceros-en-pipelines-ci-cd-bajo-dora-articulo-28\/"},"modified":"2026-03-26T09:26:28","modified_gmt":"2026-03-26T08:26:28","slug":"third-party-risk-in-ci-cd-pipelines-under-dora-article-28","status":"publish","type":"post","link":"https:\/\/regulated-devsecops.com\/es\/regulatory-frameworks-es\/third-party-risk-in-ci-cd-pipelines-under-dora-article-28\/","title":{"rendered":"Riesgo de Terceros en Pipelines CI\/CD bajo DORA Art\u00edculo 28"},"content":{"rendered":"\n<p>DORA Art\u00edculo 28 exige que las entidades financieras gestionen los riesgos introducidos por los <strong>proveedores de servicios ICT de terceros<\/strong>.<\/p>\n\n\n\n<p>En la entrega moderna de software, los pipelines CI\/CD son de los <strong>sistemas con mayor dependencia de terceros<\/strong> dentro de la organizaci\u00f3n.<\/p>\n\n\n\n<p>Las plataformas Git, los runners de CI, los plugins y los registros de artefactos no son simplemente opciones de herramientas \u2014 son <strong>servicios externos integrados<\/strong> que influyen directamente en la integridad del software, la disponibilidad y la resiliencia operacional.<\/p>\n\n\n\n<p>Este art\u00edculo se centra espec\u00edficamente en el <strong>riesgo de terceros dentro de los pipelines CI\/CD<\/strong>, explicando d\u00f3nde surgen estos riesgos, c\u00f3mo se aplica DORA Art\u00edculo 28 y qu\u00e9 controles esperan ver los auditores aplicados.<\/p>\n\n\n\n<!-- GeneratePress Inline SVG \u2013 Regulated DevSecOps -->\n<figure class=\"gp-rds-diagram\">\n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n     viewBox=\"0 0 1200 520\"\n     role=\"img\"\n     aria-labelledby=\"title desc\"\n     data-theme=\"light\">\n  <title id=\"title\">DORA Article 28 \u2014 Tools \u2192 Controls \u2192 Evidence<\/title>\n  <desc id=\"desc\">\n    Diagram mapping enterprise DevSecOps tooling to enforceable CI\/CD controls and resulting audit evidence,\n    with cross-cutting DORA Article 28 third-party governance requirements.\n  <\/desc>\n\n  <style>\n    :root{\n      --bg:transparent;\n      --text:#0f172a;\n      --muted:#475569;\n      --stroke:#cbd5e1;\n      --card:#ffffff;\n\n      --accent:#2563eb;\n      --accentSoft:#dbeafe;\n\n      --sec:#7c3aed;\n      --secSoft:#ede9fe;\n\n      --ev:#059669;\n      --evSoft:#d1fae5;\n\n      --warn:#b45309;\n      --warnSoft:#ffedd5;\n    }\n\n    svg[data-theme=\"dark\"]{\n      --text:#e5e7eb;\n      --muted:#9ca3af;\n      --stroke:#374151;\n      --card:#0b1220;\n\n      --accent:#60a5fa;\n      --accentSoft:#0b2a55;\n\n      --sec:#a78bfa;\n      --secSoft:#2a144d;\n\n      --ev:#34d399;\n      --evSoft:#063a2c;\n\n      --warn:#f59e0b;\n      --warnSoft:#3b2a07;\n    }\n\n    .txt{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;}\n    .title{font-weight:800;font-size:22px;fill:var(--text);}\n    .sub{font-weight:500;font-size:14px;fill:var(--muted);}\n\n    .label{font-weight:900;font-size:12px;fill:var(--text);letter-spacing:.06em;}\n    .h{font-weight:800;font-size:14px;fill:var(--text);}\n    .small{font-weight:600;font-size:12px;fill:var(--muted);}\n\n    .card{fill:var(--card);stroke:var(--stroke);stroke-width:1.5;rx:14;}\n    .panel{fill:transparent;stroke:var(--stroke);stroke-width:1.5;rx:14;stroke-dasharray:6 6;}\n\n    .chip{fill:transparent;stroke:var(--stroke);stroke-width:1.5;rx:7;}\n    .chipText{font-weight:800;font-size:12px;fill:var(--text);}\n\n    .tools .chip{stroke:var(--accent);fill:var(--accentSoft);}\n    .controls .chip{stroke:var(--sec);fill:var(--secSoft);}\n    .evidence .chip{stroke:var(--ev);fill:var(--evSoft);}\n    .warn .chip{stroke:var(--warn);fill:var(--warnSoft);}\n\n    .flow{fill:none;stroke:var(--stroke);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;}\n    .arrow{marker-end:url(#arrow);}\n    .link{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:7 7;opacity:.85;}\n\n    .band{fill:transparent;stroke:var(--stroke);stroke-width:1.5;rx:14;stroke-dasharray:6 6;}\n    .bandTitle{font-weight:900;font-size:12px;fill:var(--muted);letter-spacing:.06em;}\n  <\/style>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9.2\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto\">\n      <path d=\"M0 0 L10 5 L0 10 Z\" fill=\"var(--stroke)\"\/>\n    <\/marker>\n  <\/defs>\n\n  <!-- Header -->\n  <text class=\"txt title\" x=\"40\" y=\"48\">Tools \u2192 Controls \u2192 Evidence<\/text>\n  <text class=\"txt sub\" x=\"40\" y=\"74\">DORA Article 28 view: third-party ICT governance enforced through CI\/CD controls and provable evidence.<\/text>\n\n  <!-- Cross-cutting controls band -->\n  <g transform=\"translate(40,92)\">\n    <rect class=\"band\" x=\"0\" y=\"0\" width=\"1120\" height=\"62\"\/>\n    <text class=\"txt bandTitle\" x=\"18\" y=\"36\">CROSS-CUTTING (ARTICLE 28)<\/text>\n\n    <g class=\"warn\" transform=\"translate(320,16)\">\n      <rect class=\"chip\" x=\"0\" y=\"0\" width=\"170\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"85\" y=\"20\" text-anchor=\"middle\">Supplier governance<\/text>\n    <\/g>\n\n    <g class=\"warn\" transform=\"translate(500,16)\">\n      <rect class=\"chip\" x=\"0\" y=\"0\" width=\"150\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"75\" y=\"20\" text-anchor=\"middle\">Contract clauses<\/text>\n    <\/g>\n\n    <g class=\"warn\" transform=\"translate(660,16)\">\n      <rect class=\"chip\" x=\"0\" y=\"0\" width=\"120\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"60\" y=\"20\" text-anchor=\"middle\">Monitoring<\/text>\n    <\/g>\n\n    <g class=\"warn\" transform=\"translate(790,16)\">\n      <rect class=\"chip\" x=\"0\" y=\"0\" width=\"110\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"55\" y=\"20\" text-anchor=\"middle\">Exit plan<\/text>\n    <\/g>\n\n    <g class=\"warn\" transform=\"translate(910,16)\">\n      <rect class=\"chip\" x=\"0\" y=\"0\" width=\"190\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"95\" y=\"20\" text-anchor=\"middle\">Evidence retention<\/text>\n    <\/g>\n  <\/g>\n\n  <!-- Main panels -->\n  <g transform=\"translate(40,160)\">\n    <rect class=\"panel\" x=\"0\" y=\"0\" width=\"1120\" height=\"300\"\/>\n    <text class=\"txt label\" x=\"18\" y=\"28\">MAPPING LAYER<\/text>\n  <\/g>\n\n  <!-- Column titles -->\n  <text class=\"txt h\" x=\"120\" y=\"210\">Tools<\/text>\n  <text class=\"txt small\" x=\"120\" y=\"232\">Platforms &amp; services<\/text>\n\n  <text class=\"txt h\" x=\"520\" y=\"210\">Controls<\/text>\n  <text class=\"txt small\" x=\"520\" y=\"232\">Enforced requirements<\/text>\n\n  <text class=\"txt h\" x=\"900\" y=\"210\">Evidence<\/text>\n  <text class=\"txt small\" x=\"900\" y=\"232\">What auditors verify<\/text>\n\n  <!-- Tools cards -->\n  <g transform=\"translate(80,250)\" class=\"tools\">\n    <rect class=\"card\" width=\"300\" height=\"190\"\/>\n    <text class=\"txt label\" x=\"18\" y=\"28\">TOOLS<\/text>\n\n    <g transform=\"translate(18,48)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Git \/ Source Hosting<\/text>\n    <\/g>\n    <g transform=\"translate(18,84)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">CI\/CD Orchestrator + Runners<\/text>\n    <\/g>\n    <g transform=\"translate(18,120)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Registries + Dependencies<\/text>\n    <\/g>\n    <g transform=\"translate(18,156)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Cloud Runtime + Observability<\/text>\n    <\/g>\n  <\/g>\n\n  <!-- Controls cards -->\n  <g transform=\"translate(450,250)\" class=\"controls\">\n    <rect class=\"card\" width=\"320\" height=\"190\"\/>\n    <text class=\"txt label\" x=\"18\" y=\"28\">CONTROLS<\/text>\n\n    <g transform=\"translate(18,48)\">\n      <rect class=\"chip\" width=\"284\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"142\" y=\"20\" text-anchor=\"middle\">Access control + MFA + SoD<\/text>\n    <\/g>\n    <g transform=\"translate(18,84)\">\n      <rect class=\"chip\" width=\"284\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"142\" y=\"20\" text-anchor=\"middle\">Approvals + policy gates<\/text>\n    <\/g>\n    <g transform=\"translate(18,120)\">\n      <rect class=\"chip\" width=\"284\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"142\" y=\"20\" text-anchor=\"middle\">Integrity: SBOM + signing + provenance<\/text>\n    <\/g>\n    <g transform=\"translate(18,156)\">\n      <rect class=\"chip\" width=\"284\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"142\" y=\"20\" text-anchor=\"middle\">Monitoring + incident workflows<\/text>\n    <\/g>\n  <\/g>\n\n  <!-- Evidence cards -->\n  <g transform=\"translate(820,250)\" class=\"evidence\">\n    <rect class=\"card\" width=\"300\" height=\"190\"\/>\n    <text class=\"txt label\" x=\"18\" y=\"28\">EVIDENCE<\/text>\n\n    <g transform=\"translate(18,48)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Audit logs + access reviews<\/text>\n    <\/g>\n    <g transform=\"translate(18,84)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Approvals &amp; change traceability<\/text>\n    <\/g>\n    <g transform=\"translate(18,120)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">SBOM + attestations + signatures<\/text>\n    <\/g>\n    <g transform=\"translate(18,156)\">\n      <rect class=\"chip\" width=\"264\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"132\" y=\"20\" text-anchor=\"middle\">Monitoring data + incident records<\/text>\n    <\/g>\n  <\/g>\n\n  <!-- Main flow arrows -->\n  <path class=\"flow arrow\" d=\"M 380 360 L 450 360\"\/>\n  <path class=\"flow arrow\" d=\"M 770 360 L 820 360\"\/>\n\n  <!-- Dotted alignment links (tool -> control -> evidence rows) -->\n  <!-- Row 1 -->\n  <path class=\"link\" d=\"M 360 313 L 470 313\"\/>\n  <path class=\"link\" d=\"M 750 313 L 840 313\"\/>\n  <!-- Row 2 -->\n  <path class=\"link\" d=\"M 360 349 L 470 349\"\/>\n  <path class=\"link\" d=\"M 750 349 L 840 349\"\/>\n  <!-- Row 3 -->\n  <path class=\"link\" d=\"M 360 385 L 470 385\"\/>\n  <path class=\"link\" d=\"M 750 385 L 840 385\"\/>\n  <!-- Row 4 -->\n  <path class=\"link\" d=\"M 360 421 L 470 421\"\/>\n  <path class=\"link\" d=\"M 750 421 L 840 421\"\/>\n\n  <!-- Footer note -->\n  <text class=\"txt small\" x=\"60\" y=\"500\">\n    Tip: Under DORA Article 28, tools are acceptable only if they enforce controls and continuously produce auditable evidence.\n  <\/text>\n<\/svg>\n\n  <figcaption class=\"gp-rds-caption\">\n    Diagram mapping enterprise DevSecOps tooling to enforceable CI\/CD controls and resulting audit evidence,\n    with cross-cutting DORA Article 28 third-party governance requirements.\n<\/figure>\n\n<!-- GeneratePress Inline SVG \u2013 Regulated DevSecOps -->\n<figure class=\"gp-rds-diagram\">\n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n     viewBox=\"0 0 1200 560\"\n     role=\"img\"\n     aria-labelledby=\"title desc\"\n     data-theme=\"light\">\n  <title id=\"title_2\">CI\/CD Red Flags \u2014 DORA Article 28 (Third-Party Risk)<\/title>\n  <desc id=\"desc_2\">\n    Enterprise CI\/CD diagram highlighting common DORA Article 28 third-party risk red flags:\n    missing exit plan, shared runners, lack of sub-processor visibility, missing audit rights,\n    and missing evidence retention.\n  <\/desc>\n\n  <style>\n    :root{\n      --bg:transparent;\n      --text:#0f172a;\n      --muted:#475569;\n      --stroke:#cbd5e1;\n      --card:#ffffff;\n\n      --accent:#2563eb;\n      --accentSoft:#dbeafe;\n\n      --warn:#b91c1c;\n      --warnSoft:#fee2e2;\n\n      --ok:#059669;\n      --okSoft:#d1fae5;\n\n      --band:#0ea5e9;\n      --bandSoft:#e0f2fe;\n    }\n    svg[data-theme=\"dark\"]{\n      --text:#e5e7eb;\n      --muted:#9ca3af;\n      --stroke:#374151;\n      --card:#0b1220;\n\n      --accent:#60a5fa;\n      --accentSoft:#0b2a55;\n\n      --warn:#f87171;\n      --warnSoft:#3a0b10;\n\n      --ok:#34d399;\n      --okSoft:#063a2c;\n\n      --band:#38bdf8;\n      --bandSoft:#083047;\n    }\n\n    .txt{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;}\n    .title{font-weight:900;font-size:22px;fill:var(--text);}\n    .sub{font-weight:600;font-size:14px;fill:var(--muted);}\n\n    .label{font-weight:900;font-size:12px;fill:var(--text);letter-spacing:.06em;}\n    .h{font-weight:900;font-size:14px;fill:var(--text);}\n    .small{font-weight:700;font-size:12px;fill:var(--muted);}\n\n    .card{fill:var(--card);stroke:var(--stroke);stroke-width:1.5;rx:14;}\n    .chip{fill:transparent;stroke:var(--stroke);stroke-width:1.5;rx:7;}\n    .chipText{font-weight:900;font-size:12px;fill:var(--text);}\n\n    .flow{fill:none;stroke:var(--stroke);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;}\n    .arrow{marker-end:url(#arrow);}\n\n    .band{fill:transparent;stroke:var(--stroke);stroke-width:1.5;rx:14;stroke-dasharray:6 6;}\n    .bandTitle{font-weight:900;font-size:12px;fill:var(--muted);letter-spacing:.06em;}\n    .bandChip{fill:var(--bandSoft);stroke:var(--band);stroke-width:1.5;rx:7;}\n    .bandText{font-weight:900;font-size:12px;fill:var(--text);}\n\n    .rf .chip{stroke:var(--warn);fill:var(--warnSoft);}\n    .rftext{font-weight:900;font-size:12px;fill:var(--text);}\n\n    .ok .chip{stroke:var(--ok);fill:var(--okSoft);}\n  <\/style>\n\n  <defs>\n    <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9.2\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto\">\n      <path d=\"M0 0 L10 5 L0 10 Z\" fill=\"var(--stroke)\"\/>\n    <\/marker>\n  <\/defs>\n\n  <!-- Header -->\n  <text class=\"txt title\" x=\"40\" y=\"48\">CI\/CD Red Flags \u2014 DORA Article 28<\/text>\n  <text class=\"txt sub\" x=\"40\" y=\"74\">Third-party risk failures auditors frequently flag in Git, CI\/CD SaaS, runners, registries, and cloud runtime.<\/text>\n\n  <!-- Cross-cutting band -->\n  <g transform=\"translate(40,92)\">\n    <rect class=\"band\" x=\"0\" y=\"0\" width=\"1120\" height=\"62\"\/>\n    <text class=\"txt bandTitle\" x=\"18\" y=\"36\">CROSS-CUTTING (ARTICLE 28)<\/text>\n\n    <g transform=\"translate(330,16)\">\n      <rect class=\"bandChip\" x=\"0\" y=\"0\" width=\"180\" height=\"30\"\/>\n      <text class=\"txt bandText\" x=\"90\" y=\"20\" text-anchor=\"middle\">Supplier governance<\/text>\n    <\/g>\n    <g transform=\"translate(520,16)\">\n      <rect class=\"bandChip\" x=\"0\" y=\"0\" width=\"160\" height=\"30\"\/>\n      <text class=\"txt bandText\" x=\"80\" y=\"20\" text-anchor=\"middle\">Audit rights<\/text>\n    <\/g>\n    <g transform=\"translate(690,16)\">\n      <rect class=\"bandChip\" x=\"0\" y=\"0\" width=\"150\" height=\"30\"\/>\n      <text class=\"txt bandText\" x=\"75\" y=\"20\" text-anchor=\"middle\">Exit strategy<\/text>\n    <\/g>\n    <g transform=\"translate(850,16)\">\n      <rect class=\"bandChip\" x=\"0\" y=\"0\" width=\"220\" height=\"30\"\/>\n      <text class=\"txt bandText\" x=\"110\" y=\"20\" text-anchor=\"middle\">Evidence retention<\/text>\n    <\/g>\n  <\/g>\n\n  <!-- Pipeline row cards -->\n  <g transform=\"translate(40,175)\">\n    <!-- Git -->\n    <g transform=\"translate(0,0)\">\n      <rect class=\"card\" width=\"200\" height=\"130\"\/>\n      <text class=\"txt h\" x=\"18\" y=\"32\">Git Hosting<\/text>\n      <text class=\"txt small\" x=\"18\" y=\"54\">GitHub \/ GitLab SaaS<\/text>\n      <g class=\"rf\" transform=\"translate(18,74)\">\n        <rect class=\"chip\" width=\"164\" height=\"30\"\/>\n        <text class=\"txt rftext\" x=\"82\" y=\"20\" text-anchor=\"middle\">No audit rights<\/text>\n      <\/g>\n    <\/g>\n\n    <!-- CI\/CD SaaS -->\n    <g transform=\"translate(220,0)\">\n      <rect class=\"card\" width=\"200\" height=\"130\"\/>\n      <text class=\"txt h\" x=\"18\" y=\"32\">CI\/CD SaaS<\/text>\n      <text class=\"txt small\" x=\"18\" y=\"54\">Orchestrator<\/text>\n      <g class=\"rf\" transform=\"translate(18,74)\">\n        <rect class=\"chip\" width=\"164\" height=\"30\"\/>\n        <text class=\"txt rftext\" x=\"82\" y=\"20\" text-anchor=\"middle\">No exit plan<\/text>\n      <\/g>\n    <\/g>\n\n    <!-- Runners -->\n    <g transform=\"translate(440,0)\">\n      <rect class=\"card\" width=\"200\" height=\"130\"\/>\n      <text class=\"txt h\" x=\"18\" y=\"32\">CI Runners<\/text>\n      <text class=\"txt small\" x=\"18\" y=\"54\">Cloud execution<\/text>\n      <g class=\"rf\" transform=\"translate(18,74)\">\n        <rect class=\"chip\" width=\"164\" height=\"30\"\/>\n        <text class=\"txt rftext\" x=\"82\" y=\"20\" text-anchor=\"middle\">Shared runners<\/text>\n      <\/g>\n    <\/g>\n\n    <!-- Registries -->\n    <g transform=\"translate(660,0)\">\n      <rect class=\"card\" width=\"200\" height=\"130\"\/>\n      <text class=\"txt h\" x=\"18\" y=\"32\">Registries<\/text>\n      <text class=\"txt small\" x=\"18\" y=\"54\">Artifacts + images<\/text>\n      <g class=\"rf\" transform=\"translate(18,74)\">\n        <rect class=\"chip\" width=\"164\" height=\"30\"\/>\n        <text class=\"txt rftext\" x=\"82\" y=\"20\" text-anchor=\"middle\">No retention<\/text>\n      <\/g>\n    <\/g>\n\n    <!-- Cloud runtime -->\n    <g transform=\"translate(880,0)\">\n      <rect class=\"card\" width=\"220\" height=\"130\"\/>\n      <text class=\"txt h\" x=\"18\" y=\"32\">Cloud Runtime<\/text>\n      <text class=\"txt small\" x=\"18\" y=\"54\">Prod services<\/text>\n      <g class=\"rf\" transform=\"translate(18,74)\">\n        <rect class=\"chip\" width=\"184\" height=\"30\"\/>\n        <text class=\"txt rftext\" x=\"92\" y=\"20\" text-anchor=\"middle\">No sub-processor view<\/text>\n      <\/g>\n    <\/g>\n  <\/g>\n\n  <!-- Flow arrows between pipeline stages -->\n  <path class=\"flow arrow\" d=\"M 240 240 L 260 240\"\/>\n  <path class=\"flow arrow\" d=\"M 460 240 L 480 240\"\/>\n  <path class=\"flow arrow\" d=\"M 680 240 L 700 240\"\/>\n  <path class=\"flow arrow\" d=\"M 900 240 L 920 240\"\/>\n\n  <!-- Lower remediation hints -->\n  <g transform=\"translate(40,340)\">\n    <rect class=\"card\" width=\"1100\" height=\"170\"\/>\n    <text class=\"txt label\" x=\"18\" y=\"28\">ENGINEER REMEDIATION HINTS<\/text>\n\n    <g class=\"ok\" transform=\"translate(18,52)\">\n      <rect class=\"chip\" width=\"260\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"130\" y=\"20\" text-anchor=\"middle\">Tested exit strategy (CI\/CD)<\/text>\n    <\/g>\n    <g class=\"ok\" transform=\"translate(290,52)\">\n      <rect class=\"chip\" width=\"250\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"125\" y=\"20\" text-anchor=\"middle\">Dedicated \/ isolated runners<\/text>\n    <\/g>\n    <g class=\"ok\" transform=\"translate(550,52)\">\n      <rect class=\"chip\" width=\"270\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"135\" y=\"20\" text-anchor=\"middle\">Supplier + sub-processor map<\/text>\n    <\/g>\n    <g class=\"ok\" transform=\"translate(830,52)\">\n      <rect class=\"chip\" width=\"260\" height=\"30\"\/>\n      <text class=\"txt chipText\" x=\"130\" y=\"20\" text-anchor=\"middle\">Centralized logs + retention<\/text>\n    <\/g>\n\n    <text class=\"txt small\" x=\"18\" y=\"110\">\n      Auditor rule: if controls cannot produce time-bound evidence on demand, they are treated as ineffective under Article 28.\n    <\/text>\n    <text class=\"txt small\" x=\"18\" y=\"136\">\n      Focus areas: CI\/CD platform scope, contractual auditability, runner isolation, sub-processor governance, and evidence retention.\n    <\/text>\n  <\/g>\n<\/svg>\n  <figcaption class=\"gp-rds-caption\">\n    Enterprise CI\/CD diagram highlighting common DORA Article 28 third-party risk red flags:\n    missing exit plan, shared runners, lack of sub-processor visibility, missing audit rights,\n    and missing evidence retention.\n<\/figure>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Por qu\u00e9 los Pipelines CI\/CD son un Punto de Concentraci\u00f3n de Riesgo de Terceros<\/strong><\/h2>\n\n\n\n<p>Los pipelines CI\/CD agregan m\u00faltiples dependencias externas en un \u00fanico flujo de ejecuci\u00f3n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>el c\u00f3digo fuente est\u00e1 alojado externamente,<\/li>\n\n\n\n<li>las compilaciones a menudo se ejecutan en infraestructura compartida o gestionada,<\/li>\n\n\n\n<li>el c\u00f3digo de terceros se descarga autom\u00e1ticamente,<\/li>\n\n\n\n<li>los artefactos son almacenados y distribuidos por servicios externos.<\/li>\n<\/ul>\n\n\n\n<p>Desde la perspectiva de DORA, los pipelines CI\/CD representan:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>dependencias ICT de alto impacto<\/strong>,<\/li>\n\n\n\n<li>con <strong>acceso privilegiado<\/strong>,<\/li>\n\n\n\n<li>operando a <strong>velocidad de m\u00e1quina<\/strong>,<\/li>\n\n\n\n<li>y capaces de propagar fallos o compromisos directamente a producci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p>Como resultado, las plataformas CI\/CD deben tratarse como <strong>servicios ICT de terceros dentro del alcance<\/strong> del Art\u00edculo 28.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>DORA Art\u00edculo 28 exige gestionar los riesgos de los proveedores ICT de terceros. Los pipelines CI\/CD son puntos de concentraci\u00f3n de riesgo de terceros de alto impacto: plataformas Git, runners, plugins y registros deben gobernarse y monitorizarse como servicios ICT dentro del alcance.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135,132],"tags":[],"post_folder":[],"class_list":["post-1956","post","type-post","status-publish","format-standard","hentry","category-regulatory-frameworks-es","category-ci-cd-governance-es"],"_links":{"self":[{"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/posts\/1956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/comments?post=1956"}],"version-history":[{"count":0,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/posts\/1956\/revisions"}],"wp:attachment":[{"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/media?parent=1956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/categories?post=1956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/tags?post=1956"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/regulated-devsecops.com\/es\/wp-json\/wp\/v2\/post_folder?post=1956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}