← Sommaire TSRS 1 · Transition J2 → J3
Cours · Console SOC

Les balises & propriétés utilisées

Le catalogue de tout ce qui sert à construire la console de sécurité, expliqué pièce par pièce.

HTML

Les balises

<header>structure sémantique

Définit l'en-tête de la page : ici l'identité de la console (titre + indicateurs). C'est une balise « sémantique » : elle donne un sens à la zone, contrairement à une simple <div>.

Dans le TP : contient le titre « SOC Security Events » et les KPI.

<main>contenu principal

La zone centrale et unique de la page. On y met le contenu le plus important. Ici, c'est elle qui porte la grille (aside + tableau).

Dans le TP : configurée en display: grid pour placer les filtres et le tableau côte à côte.

<aside>contenu latéral

Un contenu « à côté » du contenu principal : parfait pour un panneau de filtres, une barre latérale, des infos annexes.

Dans le TP : le panneau de gauche qui contient le formulaire de filtrage.

<section>bloc thématique

Regroupe un ensemble cohérent de contenu. Chaque grande partie logique d'une page peut être une section.

Dans le TP : la zone centrale qui affiche le tableau des événements.

<footer>pied de page

Le bas de la page : mentions, statut, liens de navigation.

Dans le TP : affiche le statut de conformité SecOps et le lien de retour.

<form>formulaire

Regroupe des champs de saisie. C'est le conteneur qui « collecte » ce que l'utilisateur entre, puis le soumet.

Dans le TP : encadre les champs de filtrage (IP, criticité, type).

<input type="text">champ de saisie

Un champ où l'utilisateur tape du texte libre. L'attribut type détermine le comportement (ici du texte simple).

Dans le TP : la saisie de l'adresse IP source à filtrer.

<select> / <option>menu déroulant

<select> crée une liste déroulante ; chaque <option> est un choix possible.

Dans le TP : les menus « niveau de criticité » et « type d'attaque ».

<input type="submit">bouton d'envoi

Le bouton qui valide le formulaire. Au clic, il déclenche la soumission (qu'on intercepte en JS pour filtrer sans recharger).

Dans le TP : le bouton « Appliquer les filtres ».

<label>étiquette de champ

Le texte associé à un champ. Améliore l'accessibilité (on peut cliquer sur le label pour activer le champ).

Dans le TP : « Adresse IP source », « Niveau de criticité »…

<table>, <thead>, <tbody>, <tr>, <th>, <td>tableau

La famille de balises pour construire un tableau :

<table> le conteneur · <thead> l'en-tête · <tbody> le corps · <tr> une ligne · <th> une cellule d'en-tête · <td> une cellule de données.

Dans le TP : le journal des événements SIEM (horodatage, IP, type d'attaque…).

data-*attribut personnalisé

Un attribut « libre » (ex. data-ip, data-crit) pour stocker une info sur un élément, lisible en JavaScript. Ne s'affiche pas à l'écran.

Dans le TP : chaque ligne du tableau porte son IP, sa criticité et son type → c'est ce qui permet au filtre de fonctionner.

CSS

Les propriétés

display: gridmise en page 2D

Transforme un élément en grille : on peut alors définir des colonnes et des lignes. Idéal pour la structure globale.

/* le main : filtres (300px) + tableau (reste) */
main {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 20px;
}

Dans le TP : place l'aside et le tableau côte à côte.

grid-template-columnscolonnes de la grille

Définit le nombre et la largeur des colonnes. 300px 1fr = une colonne fixe de 300px, une autre qui prend tout l'espace restant.

Dans le TP : 300px pour les filtres, 1fr pour le tableau.

1frunité fraction

Le fr représente une part de l'espace disponible. Souple, contrairement aux pixels fixes.

Dans le TP : la colonne du tableau s'étire pour occuper tout ce qui reste après les 300px.

gapespacement

L'espace entre les éléments d'une grille ou d'un flex. Plus propre que d'ajouter des marges partout.

Dans le TP : gap: 20px entre les filtres et le tableau.

display: flexalignement 1D

Aligne des éléments sur une ligne (ou une colonne). Parfait pour placer des choses côte à côte et les répartir.

/* header : titre à gauche, KPI à droite */
.soc-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

Dans le TP : l'en-tête, les indicateurs, les cellules d'action…

justify-contentrépartition horizontale

Dans un conteneur flex, gère l'espace sur l'axe principal. space-between pousse les éléments aux extrémités.

Dans le TP : sépare le titre (gauche) des KPI (droite) dans le header.

align-itemsalignement vertical

Aligne les éléments flex sur l'axe secondaire. center les centre verticalement.

Dans le TP : aligne verticalement titre et indicateurs du header.

background: linear-gradient()dégradé

Crée un fond en dégradé entre plusieurs couleurs, dans une direction donnée.

body {
  background: linear-gradient(160deg, #0f172a, #020617);
}

Dans le TP : le fond sombre « console de sécurité » (bleu nuit → noir).

box-shadowombre portée

Ajoute une ombre autour d'un élément. On peut lui donner une couleur pour un effet de « halo » (ici, façon alerte).

aside {
  box-shadow: 0 8px 30px rgba(0,0,0,.25),
              0 0 20px rgba(59,130,246,.25);
}

Dans le TP : le léger rayonnement bleu/rouge sur les blocs.

border-radiuscoins arrondis

Arrondit les angles d'un élément. À 50% sur un carré, ça donne un cercle (le bouton thème).

Dans le TP : les cartes, les champs, le bouton rond de changement de thème.

transitionanimation douce

Rend un changement (couleur, position…) progressif au lieu d'instantané. C'est ce qui donne les effets fluides au survol.

Dans le TP : le survol des lignes du tableau, des boutons, le changement de thème.

:hover / :focusétats interactifs

Des « pseudo-classes » qui appliquent un style quand on survole (:hover) ou quand un champ est sélectionné (:focus).

Dans le TP : lignes surlignées au survol, contour bleu des champs actifs.

var(--nom)variable CSS

Réutilise une valeur définie une fois (couleur, taille…). Changer la variable met à jour tout le site d'un coup — c'est ce qui permet le thème clair/sombre.

/* définition */
:root { --accent: #3b82f6; }
/* utilisation */
.btn { background: var(--accent); }

Dans le TP : toutes les couleurs passent par des variables → le bouton thème n'a qu'à les redéfinir.

@mediarequête média (responsive)

Applique des styles seulement sous certaines conditions (ex. largeur d'écran). C'est la base du responsive — et le grand sujet du Jour 3.

/* sous 760px : une seule colonne */
@media (max-width: 760px) {
  main { grid-template-columns: 1fr; }
}

Dans le TP : fait passer les filtres au-dessus du tableau sur petit écran.