Comment interdire l'accès aux composants internes du conteneur Docker?

14

Je souhaite livrer mon application aux clients sous forme d'image docker. Mais il est essentiel de s'assurer que l'utilisateur final ne modifie rien à l'intérieur du conteneur. L'utilisateur ne doit pouvoir exécuter / arrêter le conteneur et interagir avec le conteneur que via le réseau.

Est-il possible d'interdire l'accès aux internes du conteneur? Est-il possible de vérifier l'intégrité de l'image à partir de laquelle le conteneur est fabriqué?

Victor Mezrin
la source
2
À moins que vous ne gériez l'hôte docker, je pense que vous ne pouvez pas. Quel problème êtes-vous prêt à résoudre en empêchant cet accès?
Tensibai
Comme le mentionne Tensibai, cela dépend. Si vous devez savoir que le conteneur n'est pas modifié pour des raisons de sécurité, vous devez essentiellement l'exécuter sur vos propres serveurs. Si vous voulez simplement décourager les gens de le modifier pour ne pas casser les choses, il y a probablement des façons de le faire. Décrire votre cas d'utilisation vous aidera ici.
Aurora0001

Réponses:

11

En bref, vous ne pouvez pas empêcher vos clients de modifier les conteneurs qu'ils exécutent dans leur propre infrastructure. Les conteneurs ne sont pas comme des binaires qui peuvent être obscurcis; ce sont des environnements d'exécution. Cependant, le code que vous distribuez à l'intérieur du conteneur peut être obscurci.

Votre question fait allusion à un problème de support tiers: les clients modifiant les logiciels qu'ils exécutent dans leurs propres environnements. Si vous fournissez des outils pour faire fonctionner les conteneurs que vous fournissez (par exemple, surveillance et journalisation), les clients doivent accepter (dans le cadre d'une licence logicielle) de ne pas y apporter de modifications non autorisées. Cela s'applique à tous les types de logiciels tiers, pas seulement aux conteneurs.

Selon votre situation, vous pouvez également avoir la possibilité de fournir votre application en tant que logiciel en tant que service (SaaS) exécuté dans une infrastructure cloud.

Si votre client exige que vos conteneurs soient exécutés sur son infrastructure et refuse de respecter les restrictions de modification, vous ne voudrez probablement pas essayer de prendre en charge son utilisation de votre logiciel.

Dave Swersky
la source
6

Docker ne fournit aucun moyen d'empêcher l'accès des utilisateurs au conteneur, mais en tant que développeur d'images, vous pouvez suivre quelques stratégies

  • Obscurcissez vos logiciels (rubis, python et etc.)
  • Créez votre image à partir d'une image de base qui n'a pas de shell et d'autres fichiers binaires que l'utilisateur peut utiliser pour piétiner l'image.

Bien sûr, ils peuvent toujours exporter le conteneur et le reconditionner, mais ce sont des mesures extrêmes ...

Jeeva
la source
Pourquoi Ruby et Python sont-ils donnés comme exemples d'obscurcissement de code? Le code dans ces langues est généralement conservé sous forme de fichiers source en texte clair sur le système d'exploitation en cours d'exécution. Ne serait-il pas préférable d'utiliser un langage compilé comme C ++, C #, Java ou un langage "minifié" comme JS?
AjaxLeung
5

Vous pouvez supprimer les utilisateurs du groupe Docker et créer des sudos pour les docker startet docker stop.

user2590
la source
3
seulement possible / efficace si vous possédez ces serveurs ...
Dan Cornilescu
5

Si votre client est prêt à investir de l'argent, vous devriez opter pour Docker Enterprise Edition. Dans Docker EE, vous avez un outil qui est UCP(Universal Control Plane) UCP . Par UCP, vous pouvez créer des rôles et des droits d'accès et restreindre l'utilisateur à changer / modifier des conteneurs.

Si vous voulez tester UCP que DDC (Docker Data Center) ayant une licence d'essai d'un mois qui vous aidera à élaborer les choses selon vos besoins.

J'espère que cela vous aidera!

Je vous remercie!

chintan thakar
la source
1
En tant que solution concernant les groupes de dockers, cela fonctionne si vous ne gérez que le système hôte de docker, OP ressemble plus à la distribution d'une image ...
Tensibai
2

Donnez votre livraison via des scripts ansible. Gardez toutes sortes de restrictions et de contrôles dans le script ansible.

lakshayk
la source
2
Comment cela empêcherait-il l'accès au conteneur? Essayez d'expliquer comment votre proposition résoudrait réellement le problème d'OP.
Michael Le Barbier Grünewald