Sécurité 13 avril 2026

2026 Mac cloud : commandes SSH forcées pour prestataires et patterns authorized_keys auditables sur Apple Silicon loué

Équipe sécurité MacLogin 13 avril 2026 ~13 min

Lorsque des prestataires partagent un Mac mini Apple Silicon loué, le fichier ~/.ssh/authorized_keys glisse souvent vers « une clé publique = shell complet ». Conclusion 2026 : empiler par clé command=, restrict et no-port-forwarding, valider par tests négatifs scriptés et journaliser chaque empreinte acceptée avec l’ID de bail CMDB. Vous trouverez une matrice wrapper contre git-shell, un scorecard à cinq colonnes, un déploiement en sept étapes pour les régions MacLogin Hong Kong, Tokyo, Séoul, Singapour et États-Unis, plus une FAQ prête pour les dossiers SOC2.

Avant d’ajouter des clés, suivez la checklist de confiance hôte SSH et, si des shells interactifs restent nécessaires, la gouvernance des sessions partagées. Les bases de connexion sont dans l’aide MacLogin, la comparaison de nœuds dans les tarifs, et le VNC uniquement pour les invites TCC que SSH ne peut pas cliquer.

Les Mac cloud se réimagent plus souvent que les postes fixes : une revue mensuelle des diffs authorized_keys réduit fortement les incidents liés à une simple erreur de guillemet. Séparez les stanzas par organisation prestataire pour limiter le rayon d’explosion lors d’une révocation.

Qui a besoin de commandes forcées sur un Mac loué

Ce n’est pas réservé aux robots CI. Quand l’achat ne peut pas offrir « un bail par prestataire » avant la fin du trimestre, la commande forcée devient le contrôle compensatoire le moins cher.

  • SaaS réglementés qui doivent prouver qu’un Git lecture seule ne devient pas un balayage de ports sur le VPC.
  • Équipes mobile release qui veulent un droit d’upload temporaire sans shell sudo.
  • Squads d’automatisation IA qui veulent une clé de déploiement limitée à un seul script d’orchestration.
  • MSP gérant des dizaines de baux MacLogin avec des commentaires traçables vers des tickets.

Signaux qu’un shell classique est trop puissant

  1. La même clé apparaît dans plus de trois groupes d’hôtes sans date de rotation.
  2. Des traces ssh -R pour un compte censé être lecture seule.
  3. Un pentest chaîne le port forwarding local vers des API d’administration internes.
  4. Les questionnaires demandent une allow-list de commandes et la réponse reste « nous utilisons des clés SSH ».
Avertissement : une erreur de guillemets dans command="..." casse l’accès pour cette clé. Éditez avec sudo -e, versionnez, testez avec une clé jetable.

Matrice : wrapper contre sous-système

ScénarioPattern préféréPourquoi l’audit l’aimePièges Mac cloud
Git lecture seule fournisseurgit-shell en commande forcéeargv documenté en amontSéparez les chemins de dépôt du home si la politique l’exige
Pull d’artefact CI uniquePetit wrapper vérifiant argv[1]Diff Git simpleÉpinglez l’interpréteur
Administration break-glass 48 hClé distincte avec commentaire datéFrontière temporelle claireNe réutilisez pas la matière de clé après expiration
Télémétrie via bastionRécepteur minimal + politique réseauSurface minimaleCouplez à la politique TCP forwarding

Scorecard des options

BundlePort forwardingPTYStyle scpAgent forwardingRisque résiduel
restrict seulSouvent bloquéSouvent bloquéChemin explicite requisBloquéFaible (vérifiez la version)
command= + options manuellesDépend de no-port-forwardingConfigurableWrapper obligatoireAjoutez no-agent-forwardingMoyen (erreurs humaines)
Clé illimitéeSouvent permisPermisPermisSouvent permisÉlevé
Métriques : capturez ssh -G sur le poste prestataire, comptez les IP sources distinctes sur 24 h (attendez moins de 5 pour une personne), mesurez la médiane des sessions interactives (> 45 minutes = enquête).

Sept étapes pour la production

  1. Inventaire : exportez les clés commentées ; rejetez sans propriétaire, échéance et ticket.
  2. Classification : humain interactif, machine lecture seule, break-glass.
  3. Brouillon : préfixez les clés machine avec restrict,command="/usr/local/bin/ci-git-bridge.sh".
  4. Preuve syntaxique : sshd -T si autorisé + utilisateur de test.
  5. Tests négatifs : RequestTTY, scp hors liste, -R doivent échouer fermés.
  6. Canari : une région (ex. Tokyo) pendant 72 heures.
  7. Preuve : diffs, transcripts, extraits de logs unifiés.

git-shell contre wrapper sur mesure

Pour du trafic Git uniquement, git-shell est rapide. Dès que defaults, Xcode ou plusieurs ACL entrent en jeu, passez à un wrapper signé journalisant argv, IP source et nom de bail.

Astuces de journalisation

Fichier en 0600 ou logger ; incluez le code région HK/JP/KR/SG/US pour simplifier les règles SIEM.

Champs d’audit réellement demandés

ArtefactRétention minimalePropriétaireNotes
Diff authorized_keys365 joursPlateformeLien ticket SSH-FRC-2026
Transcripts tests négatifs180 joursAppSecMontrez les forwards bloqués
Logs AcceptedPublicKey90 joursSOCCorrélation avec rafraîchissement roster

FAQ

Match User remplace-t-il les options par clé ? C’est grossier ; mélange CI + humain sur un même compte UNIX ⇒ préférez per-key.

Clés FIDO2 ? L’authentification matérielle ne supprime pas le besoin de filtrage de commandes.

VS Code Remote SSH ? Attendez-vous au forwarding et au PTY : classez comme une famille de clés distincte.

Pourquoi le Mac mini M4 convient aux expériences

La pile OpenSSH + launchd reflète les postes de travail, ce qui aligne les captures d’écran d’audit entre Tokyo et Singapour. La mémoire unifiée du M4 absorbe les transferts git et les validateurs Python légers. Louez par région MacLogin et utilisez le VNC pour TCC sans élargir les droits shell.

Quand la charge monte, séparez les environnements via les tarifs en conservant un seul runbook textuel partagé.

Isolez un bail pour tester les clés prestataires

Validez les commandes forcées dans une région proche de la prod avant d’éditer un authorized_keys partagé.