Enfin, vous êtes tellement amoureux de Docker que vous souhaitez transférer vos systèmes de production stratégiques en ligne avec des données clients sensibles vers un Docker Swarm. Certains pourraient même l'avoir déjà fait. L’autre organisation ne peut se permettre une politique interdisant aux processus de production de s’exécuter en mode racine.
Que pourrait être une liste de contrôle des blocs de construction à prendre en compte pour un environnement de production Docker? On n'a pas besoin de tous, mais tous devraient être importants pour être évalués.
Clause de non-responsabilité: Je sais qu'il existe une politique SE visant à éviter les "listes interminables sans fin", mais je pense que cette liste de contrôle ne peut être très longue ... et sans fin.
Alors, quels sont ces blocs de bâtiments?
- Si ce n’est pas déjà fait, envisagez d’exécuter un système hôte Linux avec des paramètres de sécurité avancés - noyau renforcé, SELinux, etc.
- Pensez à utiliser une petite image de base Docker, telle que alpine, busybox ou même scratch, par exemple, commencez par une image de base vide.
- Utiliser un paramètre USER autre que root
- Évaluez soigneusement pour réduire davantage l'ensemble des capacités du noyau déjà réduites accordées au conteneur
- Envisagez de n’avoir qu’un seul binaire exécutable par conteneur pour lancer votre processus, idéalement lié statiquement.
- Ceux qui veulent casser votre système pour obtenir un accès à un shell peuvent se demander s'ils ont découvert que votre conteneur a tous les shells désactivés
- Monter des volumes en lecture seule où seulement possible
Question: quoi d'autre?
devsecops
?Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base image
améliore la sécurité?Réponses:
L'hôte sur lequel les conteneurs s'exécutent
Exécutez le banc de sécurité de docker sur chaque nœud qui exécute des conteneurs de docker https://github.com/docker/docker-bench-security
Exécution de la commande suivante sur un noeud qui exécute des conteneurs Docker:
renvoie une liste de chèques:
Citation du fichier README du référentiel:
Certains des problèmes signalés par le banc de sécurité pourraient être résolus en lisant l'article officiel sur la sécurité des dockers et en le comparant aux puces définies dans la question, les éléments suivants sont également importants:
DOCKER_CONTENT_TRUST
variablela source
Docker est encore en développement.
Comme avec tous les autres bogues de développement de logiciel, des fonctionnalités non sécurisées peuvent être ajoutées, des failles architecturales pouvant conduire à des failles de sécurité. Ne sous-estimez pas cela! Votre système est peut-être complètement sûr aujourd'hui, mais avec le correctif de la semaine prochaine, quelqu'un trouve un bogue, écrit un exploit et, tout à coup, votre système est complètement ouvert.
Sauf si vous devez, ne mettez pas à jour à la dernière version. Utilisez plutôt la dernière version bien testée.
Docker n'est pas une virtualisation
Si quelqu'un s'échappe d'un conteneur Docker, cet attaquant se trouve immédiatement sur la vraie machine. Il n'y a pas de deuxième porte comme la virtualisation qui empêcherait une violation.
Traitez un conteneur Docker comme n'importe quel autre programme. Exécutez avec les droits d'utilisateur les plus bas possibles, bloquez tout le trafic réseau non requis, virtualisez l'intégralité de l'hôte Docker si les performances le permettent.
Docker n'est pas une protection
Quel que soit le code utilisé dans les conteneurs Docker, Docker le fait sans poser de question. Tout attaquant peut simplement installer son logiciel dans le conteneur, et Docker l’exécutera comme tout autre code.
Outre les éléments que vous avez mentionnés dans la question, envisagez d'utiliser des mesures et des alertes pour être averti si une image Docker fait des choses étranges. Y a-t-il un pic soudain et continu du processeur? Le programme balaye-t-il soudainement les ports réseau? Y a-t-il un accès suspect au disque? Vous devriez recevoir une notification si cela se produit. Il existe de nombreux outils disponibles pour mesurer ces choses, vous devriez les utiliser.
la source
Docker se représente
Une option supplémentaire consiste à utiliser Clair .
la source
En plus des points dans ce fil; ce qui suit serait ma recommandation:
la source
Si vous remplissez votre point d’entrée dans le menu fixe avec des
sed
commandes, suivez cette pratique:Confd lira les données de nombreux magasins de clés-valeurs pris en charge et rendra les modèles de configuration de manière dynamique.
la source
On pourrait utiliser A2D pour créer une application dans une image de menu fixe tout en tenant compte de certains éléments, par exemple les autorisations non root, les autorisations, l'emplacement de l'application:
résultats:
la source