Comment empêcher un utilisateur de mon conteneur Docker prédéfini d'accéder à un shell dans une instance en cours d'exécution de ce conteneur? J'ai googlé et lu tous les messages qui sont liés à ce scénario et sont venus sans solution de travail. J'essaie d'empêcher l'accès à une ressource donnée dans le conteneur, pour cette enquête, disons que c'est un numéro de série dans un fichier de configuration. Je m'appuie sur l' image java: 7 qui est basée sur une image ubuntu .
Pour tester votre solution, procédez comme suit:
Créez et exécutez votre conteneur Docker
Exportez votre conteneur
exportation de docker [nom du conteneur] | gzip -c> mycontainer.tar.gz
Importez votre conteneur sur un système externe
gzip -dc mycontainer.tar.gz | importation de docker - [nom du conteneur]
Exécutez le conteneur
Shell dans le conteneur en cours d'exécution en utilisant l'une / toutes les méthodes suivantes:
docker exec -it [nom du conteneur] bash
docker attach [nom du conteneur]
docker run -ti --entrypoint = / bin / bash [nom du conteneur]
[nom du conteneur] est le nom de votre conteneur
bash, dash et sh sont tous des shells valides
Réponses:
Pour la
bash
commande en particulier, j'ai ajouté dans le fichier .bashrc la commandeexit
à la fin du fichier, afin que l'utilisateur se connecte et finalement expulsé, mais les utilisateurs peuvent toujours utiliser lash
commande.la source
Pour compléter la réponse de Jose, une autre solution consiste à ...
Cela se débarrasse de sh et de toute commande utile bin sous linux. Je ne sais pas ce que vous feriez pour entrer dans le conteneur à ce moment-là. Bien que je sache que vous pourriez être en mesure d'utiliser un débogueur de mémoire pour obtenir les variables d'environnement du conteneur en cours d'exécution, mais cela le rend beaucoup plus ennuyeux ... Je me demande s'il y a un moyen de verrouiller cette mémoire dans l'anneau 0 et d'enlever accès ssh complètement à l'hôte.
Si quelqu'un sait comment résoudre ce problème, je serais intéressé de savoir comment.
ÉDITER
Vous souhaitez utiliser les secrets de docker si vous protégez des informations sensibles. Check-out:
https://docs.docker.com/engine/swarm/secrets/
la source
docker exec -it 'container-id' /bin/rm -R /bin/*
Docker version 18.09.6, build 481bc77156
. L' approche par@ty01
donne ce message d'erreur/bin/rm: cannot remove '/bin/<filename>': No such file or directory
pour tous lesfilename
s dans/bin
. La réponse par@Dr. Knowitall
retourneError: No such container: :id
. Même si je le remplaceid
par leCONTAINER_ID
fromdocker ps
, il donne toujours le même message d'erreur.Si les informations que vous souhaitez protéger sont un numéro de série, le cryptage de ces informations est le seul moyen sûr de les protéger. Vous pouvez choisir différentes façons de crypter les données secrètes, assurez-vous que vous utilisez une clé forte. Vous pouvez également faire en sorte que votre application envoie des données secrètes à votre serveur pour identifier leur validité et en fonction des réponses de votre serveur, les applications peuvent continuer à fonctionner ou s'arrêter et afficher des messages.
En bref, supposez toujours que votre application peut être disséquée complètement et complètement. Cryptez toujours toutes les données secrètes et importantes à l'aide d'une clé forte, de sorte que le craquage de la clé prendra très longtemps (supposez que l'algorithme de cryptage est accessible au public ou bien connu).
Empêcher l'accès seul, même si vous trouvez un moyen de le faire, ne fera que donner un faux sentiment de sécurité.
la source