-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVues.sql
More file actions
144 lines (115 loc) · 3.79 KB
/
Vues.sql
File metadata and controls
144 lines (115 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
-- Vue offrant une vision complète pour l'administrateur
CREATE OR REPLACE VIEW V_Gestion_Totale AS
SELECT
V.CVE_Id,
V.Description AS Desc_Vuln,
V.Score_CVSS,
V.Date_pub AS Date_pub_vuln,
V.Gravite,
P.Nom AS Nom_Produit,
VP.Version,
F.Nom AS Nom_Fournisseur,
F.Siteweb AS Site_Fournisseur,
E.Id_exploit,
E.Description AS Desc_Exploit,
E.PoC,
E.Tag,
AU.Nom AS Nom_Auteur,
AU.Email
FROM VULNERABILITE V
JOIN AFFECTE A ON V.CVE_Id = A.CVE_Id
JOIN VERSION_P VP ON A.Id_version = VP.IdVP
JOIN PRODUIT P ON VP.Id_produit = P.Id_produit
JOIN FOURNISSEUR F ON P.Id_fournisseur = F.Id_fournisseur
LEFT JOIN EXPLOIT E ON V.CVE_Id = E.CVE_Id
LEFT JOIN AUTEUR AU ON E.Id_auteur = AU.Id_auteur;
-- Vue offrant tout les détails sur les produits d'un fournisseur
CREATE OR REPLACE VIEW V_vuln_fournisseur AS
SELECT
F.Nom AS Nom_Fournisseur,
F.Siteweb,
F.Description AS Fournisseur_desc,
F.NB_employer,
P.Id_produit,
P.Nom AS Nom_produit,
P.Description AS Produit_desc,
P.vuln_count,
P.Date_pub AS Date_pub_produit,
VP.IdVP,
VP.Date_pub AS Date_pub_VP,
VP.Version,
V.CVE_Id,
V.Description AS Vuln_desc,
V.Score_CVSS,
V.Date_pub AS Date_pub_vuln,
V.Date_MAJ AS Date_MAJ_vuln,
V.Gravite,
E.Id_exploit,
E.Description AS Exploit_desc,
E.PoC,
E.Tag,
E.Date_pub AS Date_pub_exploit,
E.Date_MAJ AS Date_MAJ_Exploit,
AU.Id_auteur,
AU.Nom AS Nom_auteur,
AU.Affiliation,
AU.Email
FROM Fournisseur F JOIN Produit P ON F.id_fournisseur = P.id_fournisseur
JOIN Version_P VP ON P.id_produit = VP.id_produit
LEFT JOIN Affecte A ON VP.IdVP = A.id_version
LEFT JOIN VULNERABILITE V ON A.CVE_Id = V.CVE_Id
LEFT JOIN Exploit E ON V.CVE_Id = E.CVE_Id
LEFT JOIN Auteur AU ON E.id_auteur = AU.id_auteur;
-- Vue offrant des informations internes sur les produits d'un fournisseur}~
CREATE OR REPLACE VIEW V_entretien_fournisseur AS
SELECT
F.Siteweb,
F.Nom AS Nom_fournisseur,
F.Description AS description_fournisseur,
F.NB_employer,
P.Nom AS Nom_produit,
P.Description AS desc_produit,
VP.Version
FROM Fournisseur F JOIN Produit P ON F.id_fournisseur = P.id_fournisseur
JOIN Version_P VP ON P.id_produit = VP.id_produit;
-- Vue offrant toute les informations d'un auteur
CREATE OR REPLACE VIEW V_contrib_auteur AS
SELECT
AU.Nom,
AU.Affiliation,
AU.Email,
AU.Nb_exploits,
E.Description,
E.PoC,
E.Tag,
E.Date_pub,
E.Date_MAJ,
E.CVE_Id
FROM Auteur AU JOIN Exploit E ON AU.id_auteur = E.id_auteur;
-- Vue offrant un résumé d'une vulnérabilité
CREATE OR REPLACE VIEW V_vuln_basic_info AS
SELECT
V.CVE_Id,
V.Description AS description_vuln,
Score_CVSS,
V.Date_pub,
E.Description AS description_exploit,
E.Tag,
AU.nom
FROM VULNERABILITE V
LEFT JOIN EXPLOIT E ON V.CVE_Id = E.CVE_Id
LEFT JOIN AUTEUR AU ON E.id_auteur=AU.id_auteur;
-- Vue offrant des statistiques sur les produits d'un fournisseur
CREATE OR REPLACE VIEW V_Stats_Secu_Fournisseur AS
SELECT
F.Nom AS Fournisseur,
COUNT(DISTINCT P.Id_produit) AS Nb_Produits_Total,
COUNT(V.CVE_Id) AS Total_Vulnerabilites,
ROUND(AVG(V.Score_CVSS), 2) AS Gravite_Moyenne,
MAX(V.Score_CVSS) AS Score_Pire_Vuln
FROM FOURNISSEUR F
JOIN PRODUIT P ON F.Id_fournisseur = P.Id_fournisseur
JOIN VERSION_P VP ON P.Id_produit = VP.Id_produit
JOIN AFFECTE A ON VP.IdVP = A.Id_version
JOIN VULNERABILITE V ON A.CVE_Id = V.CVE_Id
GROUP BY F.Nom;