J'ai un pod qui exécute des conteneurs qui nécessitent l'accès à des informations sensibles telles que les clés API et les mots de passe DB. En ce moment, ces valeurs sensibles sont intégrées dans les définitions de contrôleur comme ceci:Remplissage de conteneurs Docker avec des informations sensibles à l'aide de kubernetes
env:
- name: DB_PASSWORD
value: password
qui sont alors disponibles à l'intérieur du conteneur Docker comme la variable d'environnement $DB_PASSWORD
. Tout est assez facile. Mais en lisant leur documentation sur Secrets, ils disent explicitement que mettre des valeurs de configuration sensibles dans votre définition viole les meilleures pratiques et est potentiellement un problème de sécurité. La seule autre stratégie que je peux penser est la suivante:
- créer une clé OpenPGP par la communauté des utilisateurs ou espace de noms
- utilisation crypt pour définir la valeur de configuration dans ETCD (qui est crypté avec la clé privée)
- créer un secret Kubernetes contenant la clé privée, like so
- associé ce secret avec le conteneur (ce qui signifie que la clé privée sera accessible en tant que volume de montage), like so
- lorsque le récipient i s lancé, il accédera au fichier à l'intérieur du montage de volume pour la clé privée, et l'utilisera pour décrypter les valeurs de conf retournées par etcd
- cela peut alors être incorporé dans confd, qui remplit les fichiers locaux selon une définition de modèle (tel comme fichiers de configuration Apache ou WordPress)
Cela semble assez compliqué, mais plus sûr et flexible, car les valeurs ne seront plus statiques et stockées en clair.
Donc, ma question, et je sais que ce n'est pas entièrement objectif, est de savoir si c'est absolument nécessaire ou non? Seuls les administrateurs seront en mesure d'afficher et d'exécuter les définitions RC en premier lieu; donc si quelqu'un a violé le maître des kubernetes, vous avez d'autres problèmes à vous inquiéter. Le seul avantage que je vois est qu'il n'y a aucun danger que des secrets soient commis dans le système de fichiers en texte clair ...
Existe-t-il d'autres façons de remplir de manière sécurisée les conteneurs Docker avec des informations secrètes?
@larsks Mais le fichier de définition du secret ne stockerait-il pas les informations d'identification en texte clair? Ou en base64, ce qui pourrait être facilement décodé. – hohner
Oui, et j'ai mal interprété le fait que vous utilisiez déjà cette API. Donc, peu importe ... – larsks
Si je comprends bien, Secrets est le moyen de transmettre des informations sensibles, mais il a ses limites. Pourtant, il vaut mieux que de transmettre directement des informations sensibles dans les variables ENV. – MrE