Kubernetes Secrets Management

Kubernetes Secrets Management
L'environnement Kubernetes, comme de nombreux autres systèmes informatiques, nécessite l'utilisation de données sensibles. Les secrets se rapportent aux données sensibles d'un groupe (telles que les mots de passe, les clés SSH et les jetons de sécurité). Nous examinerons les capacités de Kubernetes et d'autres systèmes de gestion secrète dans cet article et comment créer et gérer des secrets dans votre environnement Kubernetes.

Quels sont les secrets à Kubernetes?

Un secret est un élément d'informations privées telles qu'un mot de passe, une clé ou un jeton. Ces informations peuvent également être présentées dans une image de conteneur ou une spécification POD. Si vous utilisez un secret, vous n'avez pas à inclure des données secrètes dans votre code d'application.

Parce que les secrets peuvent être installés indépendamment des gousses qui les utilisent, il peut y avoir beaucoup moins de menace que le secret (et ses informations) en cours de découverte dans le flux de travail de génération, d'examen et de changement de gousses. Kubernetes et les applications qui s'exécutent pour votre cluster utilisent également des secrets et des techniques pour prendre de plus grandes précautions, notamment en déclenchant des informations confidentielles à un stockage non volatile.

Types de secrets

Kubernetes fournit de nombreux types intégrés pour certains scénarios d'utilisation courants. Les validations accomplies et les restrictions appliquées par Kubernetes diffèrent entre ces catégories.

Secrets opaques

Le type secret par défaut est utilisé lorsqu'il n'y a pas de fichier de configuration secrète. Lors de la création d'un secret par Kubectl, utilisez la sous-commande générique pour spécifier ce type.

Secrets de token de compte de service

Ce secret stocke un jeton avec un compte de service. Vous devez définir les Kubernetes.IO / service de service.nom annotation à un nom de compte de service en cours pendant l'utilisation de ce type secret.

Secrets de configuration de Docker

Ce type est pour stocker un sérialisé /.fichier dockercfg. C'est le format traditionnel pour configurer la ligne de commande Docker. Tout d'abord, vérifiez que le champ des données secrètes a un.clé dockercfg, et sa valeur est le contenu de l'A /.fichier dockercfg codé au format Base64 lors de l'utilisation de ce type secret.

Secret d'authentification de base

Ce type est utilisé pour stocker les références d'authentification fondamentales. Lors de l'utilisation de ce type secret, l'une des deux clés (nom d'utilisateur et mot de passe) doit être présente dans le champ de données du secret:

Les valeurs de ces clés sont toutes deux des chaînes codées Base64. Vous pouvez utiliser le StringData pour la génération secrète si vous souhaitez fournir un contenu de texte clair.

Secrets d'authentification SSH

Ceci est utilisé pour gérer les données d'authentification de SSH. L'identification SSH doit être acceptée comme une paire de valeurs de clé SSH-Privatekey avec le sujet des données (ou stringData) tout en appliquant ce type secret.

Secrets TLS

Kubernetes a un type secret intégré Kubernetes.IO / TLS qui peut stocker un certificat et sa clé correspondante, qui est couramment utilisée pour TLS. Ces informations sont utilisées avec la terminaison TLS. Mais il pourrait en outre être utilisé avec différents actifs ou sans retard via une charge de travail. Lorsque vous imposez ce genre de secret, le TLS.clé et TLS.Les clés CRT doivent être fournies dans la zone de données (ou stringData) de la configuration secrète, même si le serveur d'API n'examine plus simplement les valeurs de chaque clé.

Secrets de jetons bootstrap

Cette forme de secret peut être créée en allant à Bootstrap.kubernetes.IO / Token et choisissant le type secret. Ce type de secret vise à stocker des jetons. Ces jetons sont principalement utilisés pendant la procédure de bootstrap de nœud. Il garde une trace des jetons de signature pour des configmaps bien connus.

Un token Secrets Bootstrap est souvent créé sous l'espace de noms du système Kube et nommé bootstrap-token-token-id>, où token-id> est une chaîne à six caractères représentant l'ID de jeton.

Comment créer un secret à Kubernetes?

Un secret peut être utilisé pour contenir les informations d'identification des utilisateurs. Les pods utilisent ces informations d'identification pour accéder à une base de données. Un id (nom d'utilisateur) plus le mot de passe, par exemple, constituer une chaîne de connexion de base de données. Vous pouvez enregistrer le nom d'utilisateur dans./nom d'utilisateur.txt et le mot de passe en./mot de passe.txt sur votre PC local.

$ echo -n 'alex'> ./nom d'utilisateur.SMS
$ echo -n '01trfg02'> ./mot de passe.SMS

Le morceau de code ci-dessous montre comment vous pouvez créer un secret avec la commande Create.

$ kubectl Créer un secret générique secret-mbps \
--de fichier =./nom d'utilisateur.SMS \
--de fichier =./mot de passe.SMS

Ci-dessous, le secret (nommé secret-MBPS) est créé avec succès ci-dessous.

Comme mentionné ci-dessus, le paramètre -N dans les commandes garantit qu'il n'y a pas de caractère Newline supplémentaire à la fin du contenu dans les fichiers de sortie. Ceci est significatif car le caractère supplémentaire de Newline est codé lorsque Kubectl lit un fichier et le convertit en une chaîne Base64.

Comment modifier un secret?

La commande suivante est utilisée pour apporter des modifications dans un secret existant:

$ kubectl edit secrets secrets-mbps

Cela ouvrira l'éditeur avec la configuration par défaut. Il vous permettra d'ajuster les valeurs secrètes codées du champ de données: le champ de données:

Comment vérifier si un secret existe?

Afin de vérifier un secret, tapez le commandement de Get Secret.

$ kubectl obtenir des secrets

La capture d'écran ci-jointe montre les détails du secret spécifié.

Comment décoder le secret?

Pour décoder le secret, vous pouvez utiliser la commande mentionnée ci-dessous.

$ kubectl get secret secret-mbps -o jsonpath = '.données'

Ci-dessous, vous pouvez voir la capture d'écran de sortie.

Vous pouvez désormais décoder les données du mot de passe comme suit:

$ echo 'mwyyzdflmmu2n2rm' | Base64 - Decode

Voici le résultat.

Vous pouvez utiliser la commande (comme vous pouvez le voir ci-dessous) si vous voulez ne pas stocker une valeur codée secrète dans l'historique de votre coquille:

$ kubectl get secret secret-mbps -o jsonpath = '.données.mot de passe '| Base64 -Decode

Cette commande produira les mêmes résultats que le précédent.

Comment supprimer le secret?

Afin de supprimer le secret, vous pouvez utiliser la commande de suppression et mentionner le nom précis du secret.

$ kubectl Supprimer le secret-mbps secret-mbps

Ici, vous pouvez observer que le secret spécifié est supprimé avec succès.

Conclusion:

Les secrets sont des identités numériques qui permettent aux utilisateurs de vérifier leur identité et d'accès à des comptes, des applications et des services privilégiés en authentification en authentifiant leurs identités. Nous avons mentionné en détail Kubernetes Secrets Management dans cet article.