-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathportfolio-security.html
224 lines (212 loc) · 8.99 KB
/
portfolio-security.html
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<!doctype html>
<html lang="en">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TFWLX6ZP');</script>
<!-- End Google Tag Manager -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="keywords" content="">
<title>DevHop!</title>
<!-- Favicon -->
<link href="assets/images/favicon.png" rel="shortcut icon">
<!-- CSS -->
<link href="assets/plugins/bootstrap/bootstrap.min.css" rel="stylesheet">
<link href="assets/plugins/glightbox/glightbox.min.css" rel="stylesheet">
<link href="assets/plugins/swiper/swiper-bundle.min.css" rel="stylesheet">
<link href="assets/css/theme.css" rel="stylesheet">
<!-- Fonts/Icons -->
<link href="assets/plugins/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="assets/plugins/fontawesome/css/all.css" rel="stylesheet">
</head>
<body class="theme-dark" data-preloader="true">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TFWLX6ZP"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Header -->
<div class="header-wrapper">
<div class="container">
<div class="header-nav">
<!-- Toggle Menu Button (for Desktop) -->
<button class="toggle-menu-btn">
<span></span>
</button>
<!-- Toggle Menu (for Desktop) -->
<div class="toggle-menu">
<h6 class="mb-0">Téléphone :</h6>
<a href="tel:+33 6 95 05 78 66">+33 6 95 05 78 66</a>
<div class="mt-3">
<h6 class="mb-0">Email:</h6>
<a href="mailto:[email protected]">[email protected]</a>
</div>
<ul class="list-inline mt-3">
<li>
<a href="https://www.linkedin.com/in/paul-lesur-261596bb/"><i
class="bi bi-linkedin"></i></a>
</li>
<li>
<a href="https://www.instagram.com/paullesur/"><i class="bi bi-instagram"></i></a>
</li>
<li>
<a href="https://unsplash.com/fr/@homonculus"><i class="fa-brands fa-unsplash"></i></a>
</li>
</ul>
</div>
<!-- Nav Toggle (for Mobile) -->
<button class="nav-toggle">
<span></span>
</button>
<!-- Nav -->
<ul class="nav-list">
<li class="nav-list-item"><a href="index.html">À propos</a></li>
<li class="nav-list-item"><a href="index.html#resume">CV</a></li>
<li class="nav-list-item"><a href="portfolio-dark.html">Portfolio</a></li>
</ul>
</div>
<!-- Header Logo -->
<div class="header-logo">
<h3 class="fw-semi-bold uppercase">DevHop!</h3>
<!--
<img src="assets/images/header-logo.png" alt="">
-->
</div>
</div>
</div>
<!-- end Header -->
<!-- Project Introduction -->
<div class="section-spacing">
<div class="container">
<div class="row g-5">
<div class="col-12 col-xl-8">
<h1 class="display-2 fw-medium">Sécurisation et bonnes pratiques Kubernetes</h1>
<h2 class="fw-medium">Contexte du projet</h2>
<!-- Paragraph -->
<p>Le client, une entreprise proposant une plateforme web, souhaitait renforcer la sécurité de son
infrastructure déployée sur Kubernetes. Leur besoin principal était de protéger l'accès à
l'application, de sécuriser les communications inter-services et d'appliquer des politiques de
sécurité robustes afin de réduire les risques liés aux vulnérabilités et aux cyberattaques. En
tant que SRE, j'ai été chargé de concevoir et d'implémenter une stratégie de sécurité complète
pour leur besoin.</p>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium uppercase mt-3">
<span>Client: Startup tech ayant des applications web</span>
</div>
</div>
<div class="col-12 col-xl-4">
<div class="bg-lighter border-radius p-4 p-md-5 box-shadow">
<div class="row g-3 g-md-4">
<div class="col-12 col-md-6 col-xl-12">
<h5 class="fw-medium mb-0">Nature du projet :</h5>
<p>Sécurisation d'une infrastructure d'application web sous Kubernetes</p>
</div>
<div class="col-12 col-md-6 col-xl-12">
<h5 class="fw-medium mb-0">Stack technique :</h5>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-brands fa-docker"></i> Docker</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-solid fa-cube"></i> Kubernetes</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-solid fa-gear"></i> Helm</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-brands fa-aws"></i> AWS Secret Manager</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-solid fa-fire"></i> Prometheus</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-solid fa-chart-simple"></i> Grafana</span>
</div>
<div class="d-inline-block dashed-box font-small font-family-secondary fw-medium mt-1">
<span><i class="fa-regular fa-file-lines"></i> Loki</span>
</div>
</div>
</div><!-- end row(inner) -->
</div>
</div>
</div><!-- end row -->
</div><!-- end container -->
</div>
<!-- end Project Introduction -->
<!-- Project details -->
<div class="section-spacing pt-0">
<div class="container">
<!-- Lightbox Images -->
<div class="row g-4">
<div class="col-12 col-md-6">
<div class="img-link-box border-radius">
<img src="assets/images/containers.png" alt="">
</div>
</div>
<div class="col-12 col-md-6">
<div class="img-link-box border-radius">
<img src="assets/images/homeserver.png" alt="">
</div>
</div>
</div>
<!-- Heading -->
<div class="mt-4 mt-lg-5">
<!-- Heading -->
<h2 class="fw-medium">Défis rencontrés</h2>
<ul>
<li><b>Sécurisation des accès au cluster :</b> Gestion des permissions utilisateurs et services, et
mise en place d'authentifications robustes.</li>
<li><b>Gestion des secrets : </b> Sécuriser la gestion des secrets d'application</li>
<li><b>Monitoring et observabilité :</b> Pouvoir observer son infrastructure et réagir en cas de
problème. </li>
</ul>
</div>
<div class="mt-4 mt-lg-5"></div>
<!-- Heading -->
<h2 class="fw-medium">Solutions apportées</h2>
<ul>
<li><b>Gestion des accès et des permissions :</b> J'ai mis en place un contrôle d'accès basé sur les
rôles (RBAC) strict afin de limiter les accès au cluster Kubernetes. Chaque utilisateur et service
disposait uniquement des permissions nécessaires à ses tâches spécifiques, minimisant ainsi les
risques d'élévation de privilèges.</li>
<li><b>Gestion sécurisée des secrets avec AWS Secret Manager et cert-manager :</b> La gestion des
secrets (clés API, mots de passe, certificats) a été centralisée et sécurisée avec AWS Secrets
Manager. Pour les certificats, j'ai utilisé cert-manager pour automatiser l'approvisionnement et le
renouvellement des certificats, garantissant que les communications externes étaient également
sécurisées.</li>
<li><b>Monitoring et détection des anomalies :</b> J'ai configuré des outils de monitoring pour détecter
des comportements anormaux dans l'usage de l'application.</li>
<li><b>Scalabilité et haute disponibilité</b> Grace à Kubernetes j'ai fait en sorte que les applications
web du client soient disponibles même en cas d'incident d'un des serveurs.</li>
</ul>
</div>
</div><!-- end container -->
</div>
<!-- end Project details -->
<!-- Footer -->
<div class="container">
<div class="section-spacing bg-charcoal p-4 p-md-5 box-shadow border-radius-top">
<div class="row g-2 align-items-center">
<div class="col-12 col-md-6 text-center text-md-start">
<p>© 2024 DevHop! All rights reserved.</p>
</div>
<div class="col-12 col-md-6 text-center text-md-end">
<ul class="list-inline-dash">
<li><a class="link-hover-line" href="#">Remonter</a></li>
</ul>
</div>
</div><!-- end row -->
</div>
</div>
<!-- end Footer -->
<!-- Cursor Gradient -->
<div class="cursor-gradient"></div>
<!-- end Cursor Gradient -->
<!-- JavaScripts -->
<script src="assets/plugins/jquery.min.js"></script>
<script src="assets/plugins/plugins.js"></script>
<script src="assets/js/functions.js"></script>
</body>
</html>