Comment ne pas être dans le secret des dieux ?
Ep. 03

Comment ne pas être dans le secret des dieux ?

Episode description

Comment déployer une infrastructure dont les Ops ne connaîtraient aucun secret ? Idée saugrenue ? Viens en apprendre plus dans ce troisième épisode ! On y parle d’Ansible Vault, des outils Hashicorp Terraform et Vault, de SSH et de Let’s Encrypt ! Et même de trucs dont tu n’as jamais entendu parler (je prends le pari) ! En parlant de ça, voici le lien vers un outil de négociation de secrets dont je parle dans l’épisode : https://git.broken-by-design.fr/fmaury/get_secrets

Download transcript (.srt)
0:00

Les ops règnent-ils en divinité sur leur système d'information ?

0:04

Doivent-ils et elles pouvoir tout faire et tout connaitre ?

0:08

Avec la généralisation du chiffrement de bout en bout,

0:11

l'omniscience en a déjà pris un coup. Mais est-il nécessaire que

0:15

les ops aient accès à un seul secret sur l’ensemble de leur

0:19

système d’information ?

0:21

Peut-on imaginer un système d'information sans que le

0:24

moindre secret soit connu des ops ? Est-ce souhaitable ou même

0:28

possible ?

0:30

Je vais vous démontrer que cette approche est effectivement

0:32

possible, automatisable, pragmatique et désirable.

0:36

Bienvenue dans ce troisième épisode du podcast Yakafokon !

0:39

[Musique d'introduction]

0:51

Nombreux sont les outils du DevOps qui permettent la

0:54

manipulation des secrets.

0:56

Il y a bien sûr les gestionnaires de secrets, comme

0:58

Hashicorp Vault, OpenBao, Conjur,

1:01

ou Bitwarden Secret Manager.

1:04

Les secrets peuvent également être stockés dans la

1:06

configuration, avec Ansible Vault

1:09

ou autres databags chiffrés.

1:12

Les plus téméraires peuvent même les stocker dans l'état

1:15

d'outils, tels que Terraform ou OpenTofu.

1:18

Pourtant, aucune de ces solutions n'est satisfaisante.

1:22

Toutes impliquent directement ou indirectement que des ops aient

1:27

accès à des secrets.

1:28

Or, l'accès aux secrets devrait être accordé aux seuls acteurs

1:33

en ayant le besoin fonctionnel.

1:35

C'est ce qu'on appelle le besoin d'en connaitre.

1:39

Dans un système d'information, ce sont les logiciels qui ont le

1:42

besoin fonctionnel de ces secrets ; pour s'authentifier,

1:45

pour signer des documents,

1:46

pour déchiffrer des communications, etc.

1:49

La problématique est donc de réussir à fournir aux logiciels

1:53

les secrets dont ils ont besoin sans pour autant que les ops

1:56

les connaissent.

1:58

Ce n'est pas seulement le respect d'un principe de

2:00

sécurité que de chercher à ce que les ops n'aient pas accès

2:03

aux secrets. C'est aussi un problème très pragmatique lié à

2:07

la gestion du cycle de vie des secrets.

2:09

Lorsqu’un ou une ops perd son rôle, que ce soit par démission,

2:13

changement d’équipe ou tout autre événement, il est

2:16

nécessaire de révoquer et de remplacer tous les secrets en

2:19

cours d’usage auxquels cette personne a pu avoir accès.

2:23

Cela veut dire qu'il faut être en mesure de lister les secrets

2:25

concernés, et de les changer, sans perturber la production !

2:30

En théorie, c’est une chose facile à faire, ou en tout cas

2:33

automatisable, grâce aux outils d’infrastructure codifiée

2:35

ou aux gestionnaires de secrets.

2:37

Ces solutions présentent cependant toutes des problèmes,

2:40

que nous allons étudier un à un.

2:43

Pour commencer, parlons d’outils de configuration codifiée, comme

2:46

Ansible Vault et Chef. Si vous ne les utilisez pas, c'est le

2:50

moment de rappeler que ce podcast est chapitré ; vous

2:53

pouvez sauter à la section suivante !

2:54

Ansible Vault et Chef utilisent tous deux des clés

2:57

cryptographiques symétriques pour chiffrer les données

3:00

sensibles. Pour Ansible Vault, le secret symétrique est calculé

3:03

à partir d'un mot de passe. Pour simplifier, à partir de

3:05

maintenant, je parlerai juste de clé symétrique, même pour les

3:08

mots de passe.

3:09

L'ops qui connait cette clé symétrique a donc accès à

3:12

l'ensemble des données sensibles chiffrées par cette clé. Lors de

3:15

son départ, il est donc nécessaire de renouveler non

3:18

seulement cette clé symétrique, mais aussi toutes les données

3:21

sensibles chiffrées avec cette clé.

3:23

Le remplacement de toutes ces données sensibles peut être

3:25

fastidieux, mais surtout, cela peut perturber la production !

3:28

Que se passe-t-il si je change le mot de passe permettant

3:31

à mon application web de se connecter à la base de données ?

3:34

Que se passe-t-il si je change la clé privée associée au

3:36

certificat TLS protégeant un serveur web ?

3:39

Dans tous ces cas, il va falloir préparer une fenêtre de

3:41

maintenance, et la mise en production du nouveau secret.

3:44

Avec de la chance, ça se passera bien... ou pas.

3:47

Mais bon, l'auditoire fidèle se souviendra que, dans le premier

3:50

épisode de ce podcast, on avait déjà écarté Ansible pour des

3:53

raisons de sécurité.

3:55

Si les outils de configuration codifiée ne sont pas terribles,

3:57

peut-être que les outils d'infrastructure codifiée sont

3:59

meilleurs ?

4:00

En infrastructure codifiée, je vais essentiellement parler de

4:03

Terraform et d'OpenTofu.

4:06

Je ne parle pas d'OpenTofu uniquement pour des histoires de

4:08

licence libre. Certes, les deux ont des bases très communes,

4:12

mais OpenTofu a réellement une approche différente de celle de

4:15

Terraform.

4:16

Terraform et OpenTofu sont tous deux des outils fonctionnant sur

4:19

le principe d'une machine à états. Chaque donnée, chaque

4:22

ressource qu'ils manipulent sont stockées dans une base de

4:25

données qu'on appelle l'état.

4:28

Lorsque des changements sont codés dans la configuration de

4:30

ces outils, ces changements sont comparés avec les informations

4:33

de l'état, et des opérations sont entreprises afin de

4:36

réconcilier la configuration et l'état.

4:39

Terraform et OpenTofu peuvent manipuler des secrets. Par

4:43

exemple, ils peuvent être utilisés pour créer des clés

4:45

TLS, des clés SSH, des mots de passe temporaire, etc.

4:49

Ces secrets finissent dans l'état, et l'état est stocké

4:52

clair sur le disque dur ou dans une base de données distante.

4:56

Parfois, cette base de données est chiffrée par le serveur ;

4:59

parfois pas. Comme c'est fait côté serveur, on n'en sait

5:02

réellement rien.

5:03

Donc, pour le dire plus directement, quand on manipule

5:06

des ressources ou des sources de données sensibles avec

5:08

Terraform, on stocke des secrets en clair, à poil, sans

5:12

protection. Aie !

5:14

Mais, j'ai dit "avec Terraform". C'est différent avec OpenTofu ?

5:18

Eh bien, oui ! Et c'est probablement l'une des premières

5:21

fonctionnalités vraiment importantes qui diffère entre

5:24

Terraform et OpenTofu !

5:26

OpenTofu a introduit la possibilité de chiffrer l'état

5:29

côté client avant le stockage sur disque dur ou dans une base

5:32

de données distante.

5:34

Pour chiffrer, on utilise une clé dérivée d'un mot de passe.

5:37

Ce mot de passe est demandé à chaque exécution d'OpenTofu pour

5:41

déchiffrer l'état, le modifier et le rechiffrer.

5:44

À première vue, cela semble formidable de pouvoir enfin

5:47

chiffrer l'état. Mais, en réalité, c'est le même problème

5:50

qu'avec les outils de configuration codifiés qu'on

5:52

vient juste de discuter.

5:54

Une personne connaissant le mot de passe a accès à tous les

5:57

secrets contenus dans l'état. Lorsque cette personne perd le

6:00

besoin de connaitre ces secrets, il faut changer tous les

6:02

secrets, et rechiffrer l'état avec un nouveau mot de passe.

6:06

Hashicorp a bien identifié ce problème et a toujours refusé

6:08

d'implémenter ce type de chiffrement. Néanmoins, une

6:11

révolution a eu lieu avec la sortie de Terraform v1.10.

6:15

Terraform v1.10 introduit la notion de ressources et de

6:19

variables éphémères.

6:21

Les ressources éphémères sont des ressources qui ne sont pas

6:24

stockées dans l'état. Elles ont un cycle de vie différent des

6:27

autres ressources, et les opérations qui peuvent être

6:29

effectuées sur ces dernières sont plus limitées.

6:32

Les valeurs des ressources éphémères ne peuvent notamment

6:35

être utilisées que dans d'autres ressources éphémères

6:38

ou dans des provisionneurs.

6:40

Avec ces ressources, il est possible de générer et manipuler

6:42

des secrets sans que l'état les stocke et que les ops ne

6:46

puissent les apprendre.

6:48

AWS, GCP et Azure ont tous déjà implémenté des ressources

6:52

éphémères pour leurs KMS ou Key Management System.

6:56

Il ne reste plus que la problématique de la diffusion de

6:58

ces secrets aux logiciels ayant le besoin d'en connaitre !

7:01

Les diffuser par un provisionneur SSH est possible,

7:04

mais... Dans une infrastructure immuable, se connecter en SSH

7:07

aux machines est un contresens, comme discuté dans l'épisode 2

7:10

de ce podcast.

7:12

De surcroit, la connexion d'un provisionneur à une machine via

7:16

SSH n'est pas sécurisée, car l'empreinte de la clé SSH du

7:19

serveur n'est généralement pas vérifiée ou obtenue de façon

7:22

intègre. Sans cela, difficile de dire si la clé n'a pas été

7:25

compromise lors de son transfert !

7:28

Bon, en vrai, on peut imaginer quelques moyens de faire cette

7:30

connexion SSH en toute sécurité, à l'aide de l'hyperviseur et de

7:33

sockets de type AF_VSOCK, mais c'est un sujet assez avancé ; on

7:38

pourra en reparler dans un futur épisode !

7:40

Diffuser les secrets par Cloud-init ou Ignition n'est pas

7:43

non plus une bonne idée.

7:45

Ignition, déjà présenté dans l'épisode sur l'infrastructure

7:48

immuable, n'est pas censé contenir de secrets, comme le

7:51

dit sa spécification, et rien n'est donc fait pour préserver

7:54

la confidentialité des données qu'on met dans sa configuration.

7:57

Mais au moins, avec Ignition, les choses sont claires.

8:01

On ne peut pas en dire autant de Cloud-Init, qui ne dit rien à ce

8:04

sujet et pousse donc clairement au crime.

8:08

En réalité, et pour apporter un peu de nuances, le niveau de

8:11

sécurité de Cloud-Init varie grandement en fonction des

8:13

sources de données de Cloud-Init.

8:16

Par exemple, la source de données « NoCloud », qui

8:18

consiste à fournir les données par le biais de fichiers stockés

8:21

sur un disque nommé CIDATA, expose toutes les données de

8:24

configuration Cloud-Init à tous les processus du système !

8:28

Cloud-Init, en effet, impose que le disque CIDATA soit formaté

8:32

soit en vfat, soit en ISO9660, et il le monte sans options de

8:36

montage particulières. Le disque se retrouve donc monté avec les

8:39

droits 755 et 644, donc en lecture par tous. OK, on peut

8:44

améliorer ça avec AppArmor, mais de vous à moi, qui fait ça ?

8:48

Ce n'est cependant pas la seule source de données peu sécurisée.

8:51

Autre exemple : la source de données Amazon EC2. Celle-ci

8:55

expose les données de configuration sur un service web

8:58

accessible par une requête HTTP sur une adresse IP APIPA :

9:02

l'adresse IP 169.254.169.254.

9:07

N'importe quel processus de la machine peut donc effectuer une

9:09

requête HTTP sur cette adresse pour obtenir la configuration !

9:14

Même en établissant une règle de pare-feu Netfilter pour

9:17

n’autoriser l’accès à cette adresse IP que depuis un

9:20

processus fonctionnant sous l’UID 0, on permet toujours à

9:23

tous les processus root d’obtenir cette information.

9:26

Or, cela va à l'encontre des travaux effectués ces quinze

9:30

dernières années à désarmer root, avec les capabilities, les

9:33

namespaces, seccomp-bpf, et les Linux Security Modules. Tous les

9:38

processus tournant en root n'ont pas forcément le besoin de

9:40

connaitre tous les secrets de chaque serveur ! Ici aussi, on

9:44

peut améliorer ça avec SELinux, mais qui fait ça ?

9:49

Après, je n'ai pas étudié l'ensemble des sources de

9:51

données de Cloud-Init. Peut-être que certaines sont plus fiables

9:54

que d'autres, mais cela élimine déjà pas mal de clouds pour

9:57

lesquels il faudra une méthode alternative !

9:59

En parlant d'alternative, une a déjà été évoquée : les

10:04

gestionnaires de secrets ou KMS, comme ceux proposés par certains

10:07

fournisseurs de Cloud, ou auto-hébergeables, comme

10:10

HashiCorp Vault ou OpenBao.

10:13

Les gestionnaires de secrets permettent aux ops de stocker

10:16

des secrets dans un logiciel. Celui-ci les distribuera ensuite

10:20

aux autres logiciels ayant le besoin d'en connaitre.

10:22

Immédiatement, deux problèmes sautent aux yeux. D'une part,

10:26

les ops manipulent les secrets, et d'autre part, les logiciels

10:29

ayant le besoin d'en connaitre doivent pouvoir s'authentifier

10:32

auprès du gestionnaire de secrets pour avoir accès aux

10:35

seuls secrets dont ils ont le besoin.

10:38

Or, pour s'authentifier auprès du gestionnaire de secrets, il

10:41

faut connaitre un secret : celui qui permet au logiciel de

10:44

prouver qui il est ! On a donc un problème de poule et d'œuf :

10:47

pour distribuer des secrets, il faut avoir déjà distribué un

10:50

secret !

10:51

Ces deux problèmes sont contournables, mais ce n'est pas

10:53

forcément trivial à faire.

10:55

Pour le problème des ops manipulant les secrets, cela

10:57

dépend de la nature du secret manipulé.

11:00

Si c'est un secret symétrique utilisé par deux logiciels

11:03

connectés au même gestionnaire de secrets, comme c'est le cas

11:06

avec une application web qui se connecte à sa base de données,

11:09

alors le gestionnaire de secrets peut aider. Il suffit au

11:12

gestionnaire de générer lui-même le secret, et de le distribuer

11:15

aux deux applications.

11:17

Si c'est un secret symétrique, mais qu'un seul des logiciels

11:20

est connecté au gestionnaire de secrets, alors il n'y a pas de

11:23

bonne solution. Le secret passe forcément par les mains des ops.

11:27

C'est un scénario qu'on veut absolument éviter, et la vraie

11:30

bonne solution est de ne pas avoir recours à ce type de

11:32

secrets.

11:34

À la place, on peut utiliser des secrets asymétriques.

11:37

Avec ce type de secrets, seules les clés publiques ont besoin

11:41

d'être manipulées par les ops. Les clés privées sont générées

11:44

directement par les logiciels ayant le besoin d'en connaitre,

11:47

ou par les gestionnaires de secrets auxquels ils ont accès.

11:50

Ce qui est intéressant, c'est que c'est une méthode de

11:52

fonctionnement déjà très déployée.

11:55

Tous les serveurs SSH fonctionnent ainsi. Quand on

11:58

installe le package, les clés d'hôte sont générées directement

12:01

par la machine qui fait tourner le serveur SSH. Les ops

12:04

manipulent seulement les clés publiques d'hôtes afin de les

12:07

mettre dans un fichier known_hosts ou dans un

12:10

enregistrement DNS de type SSHFP.

12:13

Un autre exemple très répandu est Let's Encrypt. Ou plus

12:16

précisément le protocole ACME utilisé par Let's Encrypt, et

12:20

toutes les autres autorités de certification qui font de la

12:21

vérification en ligne automatisée en vue d'émettre des

12:24

certificats.

12:26

Quand on demande un certificat avec le protocole ACME, la clé

12:29

privée est directement générée sur la machine qui demande le

12:31

certificat. Le serveur ACME fait ensuite des vérifications pour

12:35

s'assurer qu'il ne délivre pas un certificat à un attaquant.

12:39

Pour cela, il s'assure que la machine qui demande le

12:41

certificat contrôle bien le nom de domaine, ou l'adresse IP

12:44

pointée par le nom de domaine, demandé dans le certificat.

12:49

Après cette vérification, le serveur ACME délivre le

12:51

certificat à la machine.

12:53

À aucun moment dans ce processus la clé privée n'a été exposée

12:56

aux ops ni à qui que ce soit qui n'a pas le besoin

12:59

d'en connaitre !

13:00

Le protocole ACME permet donc d'obtenir un certificat qui

13:03

associe cryptographiquement une clé publique à une identité.

13:06

Avec ça, on peut s'authentifier auprès du gestionnaire de

13:09

secrets. On peut même l'utiliser pour s'authentifier auprès

13:11

de n'importe quel serveur, pour peu qu'il fasse confiance à

13:13

l'autorité de certification qui a émis le certificat !

13:17

Grâce au protocole ACME, tout semble ainsi réuni pour

13:19

permettre la distribution de secrets. Les secrets sont dans

13:22

le gestionnaire de secrets. Le gestionnaire de secrets

13:25

s'authentifie auprès des applications avec un certificat

13:28

obtenu par ACME. Les applications s'authentifient

13:31

elles aussi auprès du gestionnaire de secrets avec des

13:33

certificats obtenus par ACME.

13:35

Mais...

13:36

Oui, il y a un mais. Sinon, ça ne serait pas drôle. Dans le cas

13:39

de Hashicorp Vault et d'Openbao, son équivalent vraiment libre,

13:43

il y a besoin d'un secret pour déverrouiller le gestionnaire de

13:46

secrets, notamment lors de son démarrage ! En effet, à moins de

13:50

pouvoir profiter d'un KMS préexistant, généralement fourni

13:54

par la cloud faisant tourner nos applications, il va falloir

13:56

desceller, c'est-à-dire déchiffrer, la base de données

13:59

du gestionnaire de secrets.

14:01

Et pour faire ce déchiffrement, il faut que les ops manipulent

14:04

un secret symétrique ou des parts de secrets symétriques !

14:07

Retour à la case départ.

14:10

Certes, il n'y a maintenant plus qu'un seul secret qui est

14:12

manipulé sur toute l'infrastructure... et certes,

14:16

c'est uniquement dans le cas où le fournisseur de cloud

14:18

n'offrirait pas de KMS utilisable par le gestionnaire

14:20

de secrets... mais... une personne qui a accès à ce secret

14:25

a en réalité accès à tous les secrets de l'infrastructure !

14:28

C'est donc toujours tous les secrets de l'infrastructure

14:31

qu'il faudra remplacer en cas de changement dans l'équipe ops !

14:34

Alors, est-ce qu'on peut faire mieux ? Est-ce qu'on peut faire

14:38

une infrastructure complètement sécurisée, sans que le moindre

14:41

ops manipule de secrets ?

14:43

En réalité, on a déjà évoqué plus tôt dans cet épisode la

14:46

voie que je propose de suivre : celle des serveurs SSH et des

14:50

serveurs ACME.

14:51

L'idée est de générer directement sur les serveurs

14:54

l'ensemble des secrets dont ils ont besoin, et d'effectuer

14:57

l'ensemble des authentifications à l'aide de certificats

15:00

émis par ACME.

15:02

Pour un certain nombre de services, cette approche demande

15:04

quelques modifications de la configuration. Par exemple,

15:07

l'authentification à la base de données se fera avec une

15:09

authentification mTLS, c'est-à-dire avec un certificat

15:13

client et un certificat serveur.

15:15

Le déploiement de l'ensemble des certificats nécessaires à ces

15:18

authentifications peut être entièrement automatisé avec un

15:20

serveur ACME local. Personnellement, j'utilise Caddy

15:24

à cette fin dans de nombreux systèmes d'information.

15:27

Pour les services ne prenant pas en charge mTLS, et devant

15:30

absolument utiliser des secrets symétriques,

15:32

cela se complexifie un petit peu.

15:34

Pour la génération des secrets symétriques, il y a plusieurs

15:37

possibilités. J’en vois au moins une qui n’a besoin d’aucune

15:41

infrastructure et une autre qui nécessite le déploiement de

15:43

serveurs pour distribuer ces secrets.

15:46

Pour permettre le partage d'un secret symétrique, par exemple

15:49

entre un serveur d'application et un serveur de base de données

15:51

ne prenant pas en charge mTLS ou entre deux pairs WireGuard

15:55

utilisant une clé prépartagée, on peut utiliser TLS.

15:59

L'idée est ici d'utiliser TLS non pas pour sécuriser une

16:03

communication, mais pour établir un secret partagé ! C'est

16:06

d'ailleurs ce qui est fait à chaque ouverture d'une nouvelle

16:09

session TLS.

16:11

Pour faire cela, il faut déployer un petit programme sur

16:14

une des deux machines devant connaitre le secret partagé

16:16

qui jouera le rôle de serveur TLS, et un autre petit programme

16:20

sur l'autre machine qui jouera le rôle de client TLS. Lorsque

16:25

le client TLS se connectera au serveur TLS, ils feront une

16:28

poignée de main (ou handshake), et génèreront un secret qu'il

16:32

est possible d'exporter selon la procédure de la RFC5705 ou de la

16:37

section 7.5 de la RFC8446. Et boom ! On a un secret partagé

16:43

entre les deux machines !

16:45

Ces programmes jouant le rôle de clients et serveurs TLS peuvent

16:48

être développés en moins de 300 lignes de Go. Vous pourrez

16:52

retrouver un lien vers un exemple d'implémentation dans

16:54

les notes de ce podcast.

16:56

L'autre solution pour le partage de secrets symétriques entre

16:59

deux machines ou plus nécessite une infrastructure de

17:01

distribution de clés et de secrets.

17:04

Cette infrastructure consiste en une grappe de serveurs etcd.

17:09

Etcd est un serveur de base de données de type clé/valeur avec

17:12

un dispositif de contrôle d'accès par clé (ou chemin de

17:15

clé). L'authentification entre les membres de la grappe etcd,

17:19

et entre les clients etcd et les serveurs etcd se font tous en

17:23

mTLS. En conséquence, toutes les interactions peuvent être

17:26

sécurisées et authentifiées grâce à un déploiement d'un

17:29

serveur ACME local.

17:31

Grâce à cette infrastructure, un des serveurs ayant le besoin de

17:33

connaitre le secret symétrique le génère localement. Il le

17:37

chiffre ensuite à l'aide de la clé publique contenue dans les

17:39

certificats de tous les autres serveurs ayant le besoin de

17:42

connaitre ce secret. Les versions chiffrées sont ensuite

17:45

publiées sur etcd. Chaque serveur ayant le besoin d'en

17:48

connaitre pourra se connecter à etcd, récupérer la version

17:51

chiffrée du secret symétrique, le déchiffrer grâce à leur clé

17:54

privée associée à leur certificat émis par ACME. Et

17:57

boom ! Tous les serveurs connaitront le même secret.

18:00

Avec l’une ou l’autre de ces deux solutions de distribution

18:03

de clés symétriques, les ops n’ont jamais eu connaissance ni

18:06

manipulé des secrets. Lorsqu'ils ont été en transit, ils étaient

18:10

chiffrés. Seules les machines ayant le besoin de connaitre ces

18:12

secrets les ont manipulés.

18:14

Voilà ! Dans cet épisode, je vous ai présenté un certain

18:17

nombre de solutions et de non-solutions pour permettre de

18:19

déployer des infrastructures codifiées sans que les ops ne

18:22

manipulent le moindre secret ! Grâce à cette approche, les

18:26

changements dans la composition des équipes ops n'ont aucune

18:28

incidence sur la sécurité des secrets du système

18:31

d'information.

18:32

Pour récapituler, utiliser un outil de Configuration as Code

18:36

comme Ansible, OpenTofu ou un gestionnaire de secrets comme

18:39

Hashicorp Vault sans descellement par un KMS expose à

18:43

ce qu'on appelle en anglais le secret sprawling. Cette

18:47

expression indique une divulgation mal contrôlée des

18:49

secrets, menant à leur divulgation à des acteurs

18:52

n'ayant pas le besoin fonctionnel d'en connaitre, à

18:55

commencer par les ops.

18:57

À l'inverse, en utilisant des ressources éphémères de

19:00

Terraform couplées à des sockets de type AF_VSOCK, il est

19:03

possible d'utiliser l'hyperviseur comme rebond de

19:06

confiance pour déposer des secrets générés par Terraform et

19:10

déployés par un provisionneur SSH.

19:13

Une autre solution évoquée est d'utiliser un gestionnaire de

19:16

secrets comme Hashicorp Vault, si ce dernier est descellé de

19:19

manière automatisée par un autre gestionnaire de secrets, comme

19:23

un KMS du fournisseur cloud ou une autre instance d'un

19:26

gestionnaire de secrets.

19:28

Finalement, la solution universelle, celle qui

19:31

fonctionne sans prérequis particulier, a été détaillée :

19:34

générer les secrets en local, directement sur les machines qui

19:38

en ont besoin. Idéalement, utiliser exclusivement des clés

19:42

asymétriques est préférable ; pas besoin d'infrastructure

19:44

particulière, en dehors d'un serveur ACME local. Lorsque ce

19:48

n'est pas possible, nous avons vu des solutions de partage de

19:51

secrets avec et sans infrastructure, qui sont plus

19:54

complexes à mettre en œuvre, mais qui satisfont parfaitement

19:57

au problème de confidentialité des clés.

19:59

J'espère que cet épisode vous a plu. Je ne doute pas qu'il vous

20:02

fera réagir ; n'hésitez pas à poster vos commentaires sur le

20:05

lien disponible en description.

20:07

Dans le prochain épisode, j’aborderai la sauvegarde

20:09

sécurisée des serveurs, traitant notamment des mérites respectifs

20:13

des approches « pull » et « push », et de la manière de

20:16

bénéficier des avantages des deux simultanément !

20:19

À bientôt !