Skip to content

Secret Manager : un produit entier non routé, et le refus d'IAM ne s'y transfère pas #773

Description

@stephrobert

Secret Manager est un produit entier que cet émulateur ne route pas, et le refus
qui couvre IAM ne s'y transfère pas.

Ce qui est absent

grep -c '"secret/' internal/providers/scaleway/pack.go   -> 0
grep -c 'secret' coverage/scaleway-coverage.json          -> 0

Non routé, non scanné. Le SDK publie 23 méthodes sur secret/v1beta1.

Pourquoi le refus d'IAM ne couvre pas celui-ci

IAM est décliné ici parce qu'une politique servie ne serait appliquée par
rien
: l'émulateur accepte tout credential, donc publier une règle
d'autorisation serait publier une fiction.

protected est d'une autre nature. C'est un champ de la ressource que le store
applique lui-même, sur son propre chemin de suppression. La documentation du
SDK le dit pour ProtectSecret : « can be read and modified, but it cannot be
deleted »
.

C'est le précédent de DeletionProtection (#404) : une valeur que le client a
envoyée, que l'émulateur relit et fait respecter sur sa propre opération. Rien à
inventer, ce qui est la condition que ce dépôt pose.

Le périmètre, et ce qui en est exclu par construction

ListSecrets · GetSecret · BrowseSecrets          la posture
ListSecretVersions · GetSecretVersion            les métadonnées d'une version
UpdateSecret · UpdateSecretVersion               nom, description, étiquettes
ProtectSecret · UnprotectSecret                  le champ ci-dessus
EnableSecretVersion · DisableSecretVersion
RestoreSecret · RestoreSecretVersion

AccessSecretVersion et AccessSecretVersionByPath sont hors périmètre, et
c'est la seule décision qui compte ici : ce sont les deux opérations qui rendent
une valeur. Un émulateur qui les servirait rendrait une valeur qu'il a inventée,
et un client qui la lirait croirait tenir un secret.

Leur collection les met en generation: ignore de son côté, pour la même raison.

Le client qui le demanderait

stephrobert/collection-scaleway a décidé Secret Manager comme produit suivant
(leur #240) et cadré ce qu'elle en attend (leur #245) : la posture d'un secret,
jamais sa valeur. Les questions sont « un secret de production non protégé »,
« une version encore active alors qu'une plus récente existe », « un secret
supprimé encore restaurable ». Aucune ne demande de lire un octet.

Ce qui n'est pas mesuré ici

  • Le coût facturé du produit.
  • L'écart entre les 23 méthodes du SDK et les 19 que le portail décrit selon leur
    docs: the four Scorecard alerts, answered rather than gamed #240 : à mesurer avant de figer un périmètre.
  • Le slug portail, donc ce que tools/contract/scaleway-products.txt devrait
    porter. La règle de ce dépôt est de ne pas le deviner depuis le SDK.

Relevé par un audit croisé des deux dépôts. Contrepartie ouverte chez eux :
stephrobert/collection-scaleway#257.

Activity

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions