Comment copier des fichiers en tant qu'action «post-build» de Jenkins si je n'ai pas les privilèges sur le répertoire de destination

1

J'ai les utilisateurs suivants "architecture":

  1. l'accès root est désactivé.
  2. L'administrateur n'a accès qu'à son répertoire personnel.
  3. Apache s'exécute en tant que service racine (root est le seul à avoir accès aux fichiers du serveur Web)
  4. J'ai installé jenkins CI qui construit mon projet avec les privilèges "admin".

Je voudrais copier les derniers fichiers de construction sur mon emplacement de serveur Web en tant qu'action post-génération. Comment puis-je accomplir cela si seulement l'utilisateur "root" a accès à mon répertoire de destination? peut-être que mon "architecture utilisateur" est tout faux en premier lieu?

Prix ​​Ori
la source

Réponses:

4

Peut-être que mon "architecture utilisateur" est tout à fait fausse?

Oui. Je déteste te le dire, mais ça y est. Voici comment vous devriez le changer:

  1. Exécutez Apache en tant que son propre utilisateur, de préférence dans un chroot. C'est ce qu'on appelle le principe de privilège minimal. L'idée est de limiter les dommages pouvant être causés si quelque chose était compromis. On suppose que quelque chose va se compromettre, et de travailler à partir de là. Il n'y a aucune raison pour que vous exécutiez Apache en tant qu'utilisateur privilégié.
  2. Exécutez Jenkins CI en tant que son propre utilisateur. Le même principe s'applique.
  3. Fournissez un moyen pour les fichiers d'accéder au répertoire du serveur Web. Par exemple, vous pouvez ajouter l'utilisateur Jenkins au groupe Apache. Cela devrait donner au serveur de génération Jenkins un accès au répertoire du serveur Web. Un moyen encore plus sûr serait d'exécuter un travail cron ou une minuterie systemd en tant qu'utilisateur Apache et de l'utiliser pour copier les fichiers. Pourquoi est-ce plus sûr? Si Jenkins est compromis, l'attaquant n'aura pas accès aux répertoires de votre serveur Web.
combattant
la source