9 000 euros en une nuit
Une jeune entreprise de Toulouse publie son code sur internet. Par erreur, une clé d’accès est restée dans un fichier.
Cette clé avait tous les droits. Dans la nuit, un inconnu l’utilise pour lancer 40 grosses machines.
Le matin, la facture atteint 9 000 €. Une clé limitée aux factures n’aurait rien pu lancer.
À la fin de cette leçon
Remarque
Je peux donner à un service seulement les droits dont il a besoin.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Identité | qui fait la demande : une personne ou un service | |
| Permission | une action autorisée | stockage:lire |
| Moindre privilège | donner seulement les droits nécessaires | |
| Rôle | un ensemble de permissions donné à une identité | |
| Alerte de budget | un message envoyé quand la dépense dépasse un seuil | |
| Étiquette | un mot attaché à une ressource pour savoir à qui elle sert | projet:site |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Chaque service reçoit le strict nécessaire
Dans le cloud, chaque demande vient d’une identité : une personne ou un service. Le fournisseur vérifie ses permissions avant d’agir.
La règle du moindre privilège dit : donnez seulement les droits nécessaires. Le service des factures lit et écrit dans un bucket, et envoie des courriels. Il ne crée pas de machines.
Si sa clé fuit, le voleur ne peut faire que cela.
Essayez : contrôler une demande
# Les permissions du service qui envoie les factures.
permissions = ["stockage:lire", "stockage:ecrire", "courriel:envoyer"]
def autorise(action):
if action in permissions:
return "autorisé"
return "refusé"
# Le service tente quatre actions.
print("stockage:lire ->", autorise("stockage:lire"))
print("courriel:envoyer ->", autorise("courriel:envoyer"))
print("machine:creer ->", autorise("machine:creer"))
print("base:supprimer ->", autorise("base:supprimer"))
# Retirez "stockage:ecrire" de la liste.
# Ajoutez un essai de cette action. Que répond le contrôle ?
L’astérisque donne beaucoup de droits
Une permission peut finir par un astérisque. stockage:* autorise toutes les actions du stockage, suppression comprise.
On regroupe les permissions dans un rôle, puis on donne ce rôle à une identité. Écrivez le rôle action par action. Gardez l’astérisque pour les rares cas où toutes les actions servent vraiment.
Exemple travaillé : un rôle par service
| Service | Permissions utiles | Ce qu’il ne reçoit pas |
|---|---|---|
| Envoi des factures | stockage:lire, stockage:ecrire, courriel:envoyer | machine:creer |
| Site vitrine | stockage:lire | stockage:ecrire |
| Rapport mensuel | base:lire | base:supprimer |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent qu’il est plus simple de donner tous les droits, puis de réduire plus tard. Plus tard n’arrive presque jamais, et une clé qui fuit garde tous ses droits. Partez de zéro et ajoutez une permission à chaque refus justifié.
Trois gestes tiennent la facture
Posez une alerte de budget : un courriel part dès que la dépense du mois dépasse un seuil.
Éteignez ce qui ne sert pas. Une machine de test n’a pas besoin de tourner la nuit ni le week-end.
Mettez une étiquette sur chaque ressource, avec le projet et la personne responsable. Une ressource sans étiquette, que personne ne réclame, peut souvent être supprimée.
Exemple travaillé : une machine de test
| Horaire, à 0,40 € l’heure | Heures par mois | Coût par mois |
|---|---|---|
| Allumée jour et nuit | 720 | 288 € |
| De 8 h à 19 h, 22 jours ouvrés | 242 | 96,80 € |
| Économie | 478 | 191,20 € |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.