Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Partage de secrets dans AWS Parameter Store

By Tyler WengerdJun 17, 20245 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Introduction

Le 22 février 2024, Amazon Web Services (AWS) a annoncé la possibilité de partager les paramètres de Systems Manager Parameter Store entre plusieurs comptes.

C'est une nouveauté pour Parameter Store, mais AWS Secrets Manager a toujours pris en charge le partage de secrets entre comptes. Maintenant que les paramètres de Parameter Store peuvent être partagés, faut-il privilégier Parameter Store plutôt que Secrets Manager pour stocker et partager des secrets ?

Cet article présente les différences entre Secrets Manager et Parameter Store, puis détaille les étapes nécessaires pour créer et partager un paramètre secret entre comptes AWS.

Secrets Manager vs Parameter Store chiffré

Fonctionnalités et limites de Secrets Manager

Fonctionnalités et limites de Parameter Store

Secrets Manager comme Parameter Store sont compatibles avec doitintl/secrets-init — un outil open source qui simplifie l'intégration des services de gestion de secrets aux workloads exécutés sur des clusters Kubernetes. Pour en savoir plus, consultez notre article de blog dédié.

Lequel choisir ?

Secrets Manager reste le premier service à envisager pour stocker des secrets. Conçu dès l'origine pour cet usage, il bénéficie d'une large compatibilité avec les services AWS et propose des fonctionnalités telles que la rotation automatique et une taille de secret supérieure à celle des paramètres de Parameter Store.

Vous pouvez toutefois envisager Parameter Store pour partager des secrets dans les cas suivants :

  • Vous gérez un très grand nombre de secrets et les économies réalisées seraient significatives (0,05 $ contre 0,40 $ par secret et par mois)
  • Vous disposez déjà de paramètres secrets dans Parameter Store et n'avez pas besoin des fonctionnalités supplémentaires offertes par Secrets Manager

Créer et partager un paramètre secret chiffré

La documentation Parameter Store inclut un guide pas à pas pour créer et partager un paramètre. La création et le partage d'un paramètre SecureString suit un processus similaire, à ceci près qu'il faut également partager la clé KMS utilisée pour chiffrer le paramètre.

1. Créer une clé dans KMS

Commencez par créer une clé KMS symétrique dans AWS, qui servira à chiffrer le paramètre. La documentation complète d'AWS pour cette procédure est disponible ici.

Capture d'écran de l'étape 2 du processus de création de la clé KMS

Capture d'écran du processus de création de la clé KMS. La création d'un alias est facultative mais recommandée.

Dans la politique de cette clé, ajoutez une condition autorisant son utilisation par les autres comptes. Pour partager cette clé et ce paramètre avec l'ensemble de votre organisation AWS, vous pouvez recourir à une Condition dans la politique, comme expliqué dans cet article AWS re:Post.

Capture d'écran de l'écran de récapitulatif du processus de création de la clé KMS

Capture d'écran du récapitulatif final du processus de création de la clé KMS

2. Créer un paramètre avancé dans Parameter Store

Une fois la clé KMS créée, créez le paramètre dans Parameter Store comme indiqué dans la documentation AWS.

Choisissez le niveau de paramètre Advanced, le type SecureString, puis sélectionnez la clé KMS que vous venez de créer.

Capture d'écran du processus de création du paramètre

Seuls les paramètres avancés peuvent être stockés ! Si vous choisissez par erreur un paramètre standard, pas d'inquiétude : vous pourrez le modifier ensuite.

3. Partager le paramètre via Resource Access Manager (RAM)

Une fois le paramètre créé, ouvrez Resource Access Manager et créez un nouveau Resource Share pour le paramètre, comme indiqué dans la documentation AWS.

Utilisez la politique AWSRAMDefaultPermissionsSSMParameterReadOnly à l'étape Associate managed permissions, puis indiquez les comptes autorisés à accéder au paramètre (ou l'ensemble de votre organisation AWS si vous le préférez) à l'étape Grant access to principals.

Capture d'écran du partage du paramètre dans Resource Access Manager — section Specify Resource Share Details

Notez que les tags associés au resource share ne modifient pas ceux du paramètre lui-même

Capture d'écran du partage du paramètre dans Resource Access Manager — section Managed Permissions

L'autorisation AWSRAMDefaultPermissionsSSMParameterReadOnly suffit si un accès en lecture seule est souhaité

Capture d'écran du partage du paramètre dans Resource Access Manager — section Grant access to principals

Dans cet exemple, seul le compte 123456789012 aura accès au paramètre partagé. N'ajoutez pas le compte où le paramètre existe déjà.

Capture d'écran du partage du paramètre dans Resource Access Manager — écran de récapitulatif final

La dernière étape est un simple écran de récapitulatif

4. Accepter le partage de ressource

Une fois le resource share créé, les comptes externes peuvent avoir à accepter l'invitation.

Si les comptes concernés font partie de votre organisation AWS et que le partage de ressources au sein de l'organisation est activé, l'acceptation est automatique.

Pour les comptes hors de votre organisation, ou si le partage de ressources au sein de l'organisation n'est pas activé, le resource share devra être accepté par chaque compte.

5. Vérifier l'accès au paramètre partagé

Une fois le paramètre créé et partagé, place aux tests !

Pour tester rapidement l'accès au paramètre depuis un compte externe, utilisez l'AWS CLI (depuis un terminal local ou via AWS CloudShell) :

 aws ssm get-parameter --name <ARN complet du paramètre> --with-decryption

Voici un exemple de sortie affichant la valeur déchiffrée du paramètre :

Capture d'écran d'AWS CloudShell montrant la commande de lecture du paramètre chiffré et la sortie réussie

Si vous préférez ne pas afficher la valeur du paramètre secret, omettez simplement le flag with-decryption

Références

Pouvoir partager des paramètres Parameter Store est un excellent ajout, en particulier pour diffuser des paramètres non sensibles depuis un compte central vers l'ensemble d'une organisation AWS. Pour la gestion des secrets, en revanche, Secrets Manager doit rester le premier choix.

Exemple de code

Envie d'essayer en Infrastructure-as-Code ? Ce gist GitHub fournit un exemple de code Terraform pour créer un paramètre chiffré partagé au sein de votre organisation AWS.

Pour aller plus loin

Chez DoiT International, nous mettons notre expertise au service de Secrets Manager, Parameter Store et de nombreux autres services cloud. Pour en savoir plus sur nos prestations de conseil, rendez-vous sur https://www.doit.com/services/.