web-dev-qa-db-fra.com

Puis-je faire confiance aux plates-formes de version de code public lors de la création d'une plate-forme sociale?

Nous développons une sorte de plateforme sociale. Cela commence comme une version bêta fermée pour un nombre limité d'utilisateurs, mais l'objectif est d'atteindre des millions d'abonnements.

Nous sommes actuellement limités sur les ressources, à la fois l'infrastructure et par exemple DevOps. Nous utilisons donc GitLab pour versionner notre code source.

Supposons, nous le faisons et dans quelques années, le service compte des millions d'utilisateurs. Que pensez-vous de l'utilisation de GitLab pour le versionnement du code source à ce stade? Considérez-vous cela comme une menace importante pour la sécurité? Quelques raisons à considérer:

  • il n'y a aucune garantie réelle que le personnel de GitLab ne puisse pas enquêter sur la source et trouver des failles de sécurité ou une configuration sensible.
  • Le personnel de GitLab pourrait vendre le code source à un tiers
  • GitLab peut être contraint de fournir le code source à un gouvernement, sans que nous le sachions

Je sais que les points sembleront paranoïaques. Le but du réseau est complètement légal et éthique, mais je crois que tout service de ce type doit protéger la vie privée de ses utilisateurs. Le plan est de passer à nos serveurs privés plus tard, mais nous devons commencer d'une manière ou d'une autre.

Alors, pensez-vous qu'il est OK d'utiliser des référentiels GitLab ou Bitbucket privés pour la première phase du projet, ou est-ce une menace de sécurité inacceptable?

Avertissement: je ne prétends pas que GitLab ferait quoi que ce soit de décrit.

24
ooouuiii

Malheureusement, vous êtes responsable de voir si votre modèle de menace est justifié ou non. Par conséquent, nous ne pouvons pas simplement donner un "oui" définitif, que nous considérions l'utilisation de la plate-forme comme une menace pour la sécurité ou non.

Cependant, je voudrais développer deux points:

  • Vous semblez extrêmement préoccupé par le code source contenant des vulnérabilités et que sa divulgation signifierait qu'un individu ou une partie pourrait les identifier.

Personnellement, je ne me sentirais pas sûr de fournir un service aux utilisateurs lorsque sa sécurité repose sur le fait que le code source n'est pas open source. Pour moi, c'est une sorte de sécurité par l'obscurité. Dans le meilleur monde, vous voulez que votre plateforme soit aussi solide même si le code fuit. Par conséquent, je vous suggère fortement de vous associer à certains pentesters/réviseurs de code, ou au moins à certains développeurs très sensibles à la sécurité.

  • Vous mentionnez vouloir passer à des serveurs de version privés.

Faites-le tout de suite et finissez-en. Au risque de paraître brutal, je remettrais en question vos compétences techniques si cela semble être une étape compliquée ou coûteuse étant donné que vous commencez. Gitlab propose même une solution auto-hébergée; assurez-vous simplement de revoir la plate-forme et de bloquer toute communication avec leurs serveurs si cette partie vous inquiète.

Bonne chance.

69
Simon

@Simon a déjà fourni une réponse fantastique, mais je voudrais ajouter en réponse à ce point:

il n'y a aucune garantie réelle que le personnel de Gitlab ne puisse pas enquêter sur la source et trouver des failles de sécurité ou une configuration sensible

La configuration n'appartient pas au référentiel. La configuration doit être combinée avec du code au déploiement, pas avant, selon le troisième facteur douze .

Pour ce faire, demandez à votre application de lire les valeurs de configuration de l'environnement au moment de l'exécution. Dans le cas, par exemple, de Django, cela impliquerait que vous définissiez votre clé secrète en tant que telle:

import os


SECRET_KEY = os.environ['Django_SECRET_KEY']

Et avoir systemd (ou tout ce qui exécute votre projet) définit cette variable d'environnement.

Comme @Ave le note dans les commentaires ci-dessous, vous ne stockez vos secrets de production que sur l'étape de construction de votre production et sur les serveurs. Vous définiriez des secrets fallacieux ou aléatoires pour vos serveurs CI, serveurs de transfert et quoi que ce soit d'autre. Si le problème concerne la confiance de votre hôte de référentiel en ce qui concerne les secrets, vous pouvez choisir d'utiliser Chef, Spinnaker, Puppet ou tout ce que vous pouvez choisir, plutôt que le CD de l'hôte de votre référentiel.

23
Adam Barnes

Il existe plusieurs options à l'exception de Gitlab (y compris Git pur). Gitlab est un projet open-source/open code afin que vous puissiez l'installer sur votre serveur privé, afin que personne sauf votre équipe n'y ait accès.

Ce qui soulève, je crois, un problème plus important - votre personnel connaît des failles de sécurité ou une configuration sensible et pourrait vendre le code source à un tiers ou au gouvernement. Encore plus, votre personnel a accès aux données, ce qui est beaucoup plus critique et sensible que le code source. Comment comptez-vous y remédier?

5
Maxim Kuleshov

Pourquoi ne pas utiliser une instance gitlab privée, cela soulagerait toutes vos préoccupations!

Si votre plate-forme doit atteindre des millions d'utilisateurs, vous pouvez au moins disposer d'une instance cloud de 5 $ par mois pour l'exécuter.

Mais votre préoccupation vient des employés/administrateurs des plates-formes SaaS que vous utilisez ayant un accès ultime à vos plates-formes, cela serait vrai de tout fournisseur de services cloud ou même fournisseur de serveur dédié physique (en supposant que les disques ne sont pas cryptés) dans ce cas, exécutez un serveur sur site.

À ce stade, vous devez vous demander à quel point les gens seraient sensibles/susceptibles d'être intéressés par votre système.

1
user6858980