8000 [deploy] ADR 0007 — rotation automatique des clés Scaleway (buckets et ci-deploy) · Issue #306 · arnakoff/api · GitHub
[go: up one dir, main page]

Skip to content

[deploy] ADR 0007 — rotation automatique des clés Scaleway (buckets et ci-deploy) #306

Closed

Description

@EnO33

Partie de #309.

Contexte

Les clés API Scaleway durent au plus 90 jours (réglage de l'organisation, relevé le 04/11/2026). Les clés des buckets de api et sync sont aujourd'hui créées par OpenTofu et renouvelées à la main (#254), ce qui coupe l'accès au bucket entre le tofu apply et le déploiement. Le propriétaire veut une rotation sans aucune action manuelle (décision du 05/11/2026).

Ce qui est vérifié :

  • Scaleway ne propose pas d'identité de charge de travail sans clé pour Serverless Containers, ni de fédération OIDC pour GitHub Actions ([deploy] Rotation de la clé Scaleway de la CI avant son expiration #238).
  • Le plus petit droit qui crée les clés d'une application est IAMApplicationManager (« Full access to IAM applications, including management of applications API keys »), de portée organization : il ne se restreint pas à quelques applications (scw iam permission-set list, relevé le 05/11/2026). Le détenteur peut donc créer une clé pour n'importe quelle application de l'organisation, ci-deploy comprise.
  • Les jobs Serverless lisent leurs secrets dans Secret Manager (secret_reference, deploy/tofu/compute.tf). Le conteneur API reçoit les siens en secret-environment-variables au déploiement (.github/workflows/deploy.yml) ; scw container container update 2.65.2 ne montre pas de référence à Secret Manager.

Décision à écrire (ADR 0007)

Un job Serverless rotate, privé, planifié (proposition : tous les 30 jours, clés valables 89 jours, donc deux échecs tolérés) :

  1. crée une nouvelle clé pour api et pour sync ;
  2. écrit celle de sync dans Secret Manager (disable-previous), met à jour les secrets du conteneur API et attend qu'il soit prêt ;
  3. vérifie, puis supprime les anciennes clés (aucune coupure, contrairement à la rotation par OpenTofu) ;
  4. fait tourner sa propre clé, lue dans Secret Manager, et supprime l'ancienne en dernier.

L'ADR consigne l'exception au moindre privilège (IAMApplicationManager sur l'organisation, droit d'écriture sur les conteneurs du projet) et ses garde-fous : image construite par la CI et déployée par empreinte, aucun point d'accès entrant, liste fermée d'identifiants d'application dans le code, journaux sans secret, alerte Cockpit sur l'échec du job, revue de l'Audit Trail.

À vérifier avant d'écrire l'ADR

  • scw container container update secret-environment-variables.X=… remplace-t-il toute la liste ou seulement les clés passées ? (le déploiement et le rotateur ne doivent pas s'effacer mutuellement)
  • Le conteneur API peut-il référencer Secret Manager ; sinon, la mise à jour des secrets redéploie-t-elle sans coupure ?
  • Droits exacts du rotateur sur Secret Manager et Serverless Containers (noms des permission sets, portée projet).
  • Le SDK Go de Scaleway (github.com/scaleway/scaleway-sdk-go) : licence, activité, govulncheck, et s'il accepte le client HTTP de platform (liste d'hôtes, délais, taille).
  • L'Audit Trail permet-il une alerte sur la création de clé par le rotateur pour une autre application ?

Clé de ci-deploy par une GitHub App (décision du propriétaire, 05/11/2026)

Le rotateur fait aussi tourner la clé de ci-deploy (30 jours, #238) et l'écrit dans les secrets SCW_ACCESS_KEY et SCW_SECRET_KEY de l'environnement GitHub production, par une GitHub App installée sur arnakoff/api seul. L'ADR consigne l'échange : une clé privée d'App, de longue durée, gardée dans Secret Manager, contre plus aucune rotation manuelle.

  • Permission minimale de l'App pour écrire un secret d'environnement (« Secrets », « Environments » ?) et point d'accès exact (PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}).
  • Durée de vie d'une clé privée d'App et possibilité d'en avoir deux pendant une rotation ; durée du jeton d'installation.
  • Chiffrement exigé par GitHub (boîte scellée libsodium avec la clé publique de l'environnement) et bibliothèque Go vérifiée (golang.org/x/crypto/nacl/box, SealAnonymous ?).
  • Hôtes à ajouter à la liste du client HTTP de platform (api.github.com).

Liens

Activity

  1. changed the title [-][deploy] ADR 0007 — rotation automatique des clés Scaleway[/-] [+][deploy] ADR 0007 — rotation automatique des clés Scaleway (buckets et ci-deploy)[/+] on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    0