116 lines
4.9 KiB
Typst
116 lines
4.9 KiB
Typst
#import "/metadata.typ": *
|
|
#import "/tail/bibliography.typ": *
|
|
#import "/tail/glossary.typ": *
|
|
#import "/main/architecture/description.typ": *
|
|
|
|
#import "/resources/slides.typ": *
|
|
|
|
#let c-dark = rgb("#0F172A")
|
|
#let c-teal = rgb("#0EA5E9")
|
|
#let c-text = rgb("#1E293B")
|
|
#let c-muted = rgb("#64748B")
|
|
#let c-white = rgb("#FFFFFF")
|
|
#let c-border = rgb("#E2E8F0")
|
|
|
|
---
|
|
|
|
─────────────────────────────────────────────────────────────────────────────
|
|
// SLIDE 2 — Cycle DevSecOps
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
#let slide-devsecops() = {
|
|
// Header custom (subtitle à droite)
|
|
block(width: 100%, height: 43.9pt, fill: c-dark, inset: 0pt)[
|
|
#pad(x: 25.5pt)[
|
|
#align(horizon)[
|
|
#grid(columns: (1fr, auto),
|
|
align(left + horizon)[
|
|
#text(size: 16pt, weight: "bold", fill: rgb("#FFFFFF"))[Cycle DevSecOps - PI E2EEDA]
|
|
],
|
|
align(right + horizon)[
|
|
#text(size: 8pt, fill: rgb("#94A3B8"))[Shift-left · Security by design]
|
|
],
|
|
)
|
|
]
|
|
]
|
|
]
|
|
|
|
pad(x: 17pt, top: 11pt, bottom: 9pt)[
|
|
#grid(columns: (1fr, 1fr, 1fr, 1fr), gutter: 10pt,
|
|
|
|
// ① Code & PR Gate
|
|
// image10 = TypeScript (TS logo), image11 = Angular (grisé)
|
|
// image19 = GitHub Actions (GHCR/GitHub logo)
|
|
devsec-col("① Code & PR Gate", (
|
|
(icon: "../../resources/img/ui_images/images/image10.png", bg: rgb("#3178C6"), name: "TypeScript",
|
|
extra: [#text(size: 7pt, fill: c-muted)[tsc / ESLint]]),
|
|
(icon: "../../resources/img/ui_images/images/image11.png", bg: rgb("#DD0031"), name: "Angular CI",
|
|
extra: [#text(size: 7pt, fill: c-muted)[Build check]]),
|
|
)),
|
|
|
|
// ② SAST · SCA
|
|
// image13 = GitHub octocat (SpotBugs hébergé GitHub), image13 aussi CodeQL (GitHub)
|
|
// image14 = checklist hexagone (Dep. Check / OWASP DC)
|
|
devsec-col("② SAST · SCA", (
|
|
(icon: "../../resources/img/ui_images/images/image13.png", bg: rgb("#1F2328"), name: "SpotBugs",
|
|
extra: [#badge("BLOCKING")]),
|
|
(icon: "../../resources/img/ui_images/images/image13.png", bg: rgb("#1F2328"), name: "CodeQL",
|
|
extra: [#badge("BLOCKING")]),
|
|
(icon: "../../resources/img/ui_images/images/image14.png", bg: rgb("#F97316"), name: "Dep. Check",
|
|
extra: [#badge("NON-BLOCK", fill: rgb("#F97316"))]),
|
|
)),
|
|
|
|
// ③ DAST · Tests
|
|
// image15 = libellule OWASP ZAP, image16 = Karma/Jasmine, image17 = Tux Linux
|
|
devsec-col("③ DAST · Tests", (
|
|
(icon: "../../resources/img/ui_images/images/image15.png", bg: rgb("#00549E"), name: "OWASP ZAP",
|
|
extra: [#badge("BLOCKING")]),
|
|
(icon: "../../resources/img/ui_images/images/image16.png", bg: rgb("#DD0031"), name: "Karma Tests",
|
|
extra: [#badge("BLOCKING")]),
|
|
(icon: "../../resources/img/ui_images/images/image17.png", bg: rgb("#64748B"), name: "Runtime check",
|
|
extra: [#text(size: 7pt, fill: c-muted)[HTTP headers]]),
|
|
)),
|
|
|
|
// ④ Build · Deploy
|
|
// image18 = Docker, image19 = GHCR, image17 = Tux Linux (SSH)
|
|
devsec-col("④ Build · Deploy", (
|
|
(icon: "../../resources/img/ui_images/images/image18.png", bg: rgb("#0DB7ED"), name: "Docker",
|
|
extra: [#text(size: 7pt, fill: c-muted)[SHA-tagged]]),
|
|
(icon: "../../resources/img/ui_images/images/image19.png", bg: rgb("#1F2328"), name: "GHCR Push",
|
|
extra: [#text(size: 7pt, fill: c-muted)[main only]]),
|
|
(icon: "../../resources/img/ui_images/images/image17.png", bg: rgb("#10B981"), name: "SSH Deploy",
|
|
extra: [#text(size: 7pt, fill: c-muted)[cert-auth]]),
|
|
)),
|
|
)
|
|
|
|
#v(9pt)
|
|
|
|
// Barre résumé
|
|
#rect(width: 100%, height: 30pt, fill: c-dark, radius: 5pt, inset: 0pt)[
|
|
#pad(x: 30pt)[
|
|
#align(horizon)[
|
|
#grid(columns: (1fr, 1fr, 1fr),
|
|
align(center + horizon)[#text(size: 9pt, fill: rgb("#FFFFFF"))[🔐 #h(3pt) Shift-left security]],
|
|
align(center + horizon)[#text(size: 9pt, fill: rgb("#FFFFFF"))[🔑 #h(3pt) Zero secret in code]],
|
|
align(center + horizon)[#text(size: 9pt, fill: rgb("#FFFFFF"))[🔄 #h(3pt) Automated Deployment]],
|
|
)
|
|
]
|
|
]
|
|
]
|
|
|
|
#v(8pt)
|
|
|
|
// GitHub Actions — image19 (GitHub/GHCR logo)
|
|
#align(center)[
|
|
#grid(columns: (auto, auto, auto), gutter: 7pt,
|
|
align(horizon)[#icon-circle("../../resources/img/ui_images/images/image19.png", size: 24pt, bg: rgb("#1F2328"))],
|
|
align(horizon)[#text(size: 8.5pt, weight: "bold", fill: c-text)[GitHub Actions]],
|
|
align(horizon)[#text(size: 8.5pt, fill: c-muted)[Coverage]],
|
|
)
|
|
]
|
|
]
|
|
|
|
v(1fr)
|
|
|
|
}
|
|
|
|
// |