SEC02-BP03 Stocker et utiliser les secrets en toute sécurité - AWS Framework Well-Architected

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SEC02-BP03 Stocker et utiliser les secrets en toute sécurité

Une charge de travail nécessite une capacité automatisée pour prouver son identité aux bases de données, aux ressources et aux services tiers. Cela se fait à l'aide d'identifiants d'accès secrets, tels que des clés API d'accès, des mots de passe et OAuth des jetons. L’utilisation d’un service spécialement conçu pour stocker, gérer et faire tourner ces informations d’identification permet de réduire les risques de compromission de ces informations d’identification.

Résultat escompté : mise en œuvre d’un mécanisme de gestion sécurisée des informations d’identification des applications permettant d’atteindre les objectifs suivants :

  • Identification des secrets nécessaires pour la charge de travail.

  • Réduction du nombre d’informations d’identification à long terme requis, en les remplaçant par des informations d’identification à court terme dans la mesure du possible.

  • Établissement d’un stockage sécurisé et d’une rotation automatisée des informations d’identification à long terme restantes.

  • Audit de l’accès aux secrets qui existent dans la charge de travail.

  • Surveillance continue pour vérifier qu’aucun secret n’est intégré dans le code source pendant le processus de développement.

  • Réduction des risques de divulgation des informations d’identification par inadvertance.

Anti-modèles courants :

  • Aucune rotation des informations d’identification.

  • Stockage des informations d’identification à long terme dans le code source ou les fichiers de configuration.

  • Stockage des informations d’identification au repos non chiffrées.

Avantages liés au respect de cette bonne pratique :

  • Les secrets sont chiffrés au repos et en transit.

  • L'accès aux informations d'identification est bloqué par un API (considérez-le comme un distributeur automatique d'informations d'identification).

  • L’accès à une information d’identification (en lecture et en écriture) est audité et consigné.

  • Séparation des préoccupations : la rotation des informations d’identification est effectuée par un composant distinct, qui peut être séparé du reste de l’architecture.

  • Les secrets sont distribués automatiquement à la demande aux composants logiciels et la rotation se produit dans un emplacement central.

  • L’accès aux informations d’identification peut être contrôlé de façon précise.

Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : élevé

Directives d’implémentation

Dans le passé, les informations d'identification utilisées pour s'authentifier auprès de bases de donnéesAPIs, de tiers, de jetons et d'autres secrets pouvaient avoir été intégrées dans le code source ou dans des fichiers d'environnement. AWS fournit plusieurs mécanismes pour stocker ces informations d'identification en toute sécurité, les faire pivoter automatiquement et vérifier leur utilisation.

Pour gérer les secrets de façon optimale, la meilleure solution consiste à suivre les directives de suppression, de remplacement et de rotation. Les informations d’identification les plus sûres sont celles que vous n’avez pas à stocker, gérer ou manipuler. Certaines informations d’identification qui ne sont plus nécessaires au fonctionnement de la charge de travail peuvent être supprimées en toute sécurité.

Pour les informations d’identification qui restent nécessaires au bon fonctionnement de la charge de travail, il peut être possible d’opter pour une solution temporaire ou à court terme au lieu d’utiliser des informations d’identification à long terme. Par exemple, au lieu de coder en dur une clé d'accès AWS secrète, envisagez de remplacer cet identifiant à long terme par un identifiant temporaire utilisant des rôles. IAM

Certains secrets de longue durée ne peuvent pas être supprimés ni remplacés. Ces secrets peuvent être stockés dans un service tel que AWS Secrets Manager, où ils peuvent être stockés, gérés et subir une rotation de manière centralisée et régulière.

Un audit du code source de la charge de travail et des fichiers de configuration peut révéler de nombreux types d’informations d’identification. Le tableau suivant résume les stratégies de traitement des types courants d’informations d’identification :

Type d’informations d’identification Description Stratégie suggérée
IAMclés d'accès AWS IAMclés d'accès et clés secrètes utilisées pour assumer IAM des rôles au sein d'une charge de travail Remplacer : utilisez plutôt les IAMrôles assignés aux instances de calcul (comme Amazon EC2 ou AWS Lambda). Pour l'interopérabilité avec des tiers qui ont besoin d'accéder aux ressources de votre ordinateur Compte AWS, demandez-leur s'ils proposent l'accès AWS entre comptes. Pour les applications mobiles, pensez à utiliser des informations d’identification temporaires via les groupes d’identités Amazon Cognito (identités fédérées). Pour les charges de travail exécutées en dehors de AWS, pensez à IAMRoles Anywhere ou à AWS Systems Manager Hybrid Activations.
SSHclés Clés privées Secure Shell utilisées pour se connecter aux EC2 instances Linux, manuellement ou dans le cadre d'un processus automatisé Remplacer : utilisez AWS Systems Manager ou EC2Instance Connect pour fournir un accès programmatique et humain aux EC2 instances à l'aide de IAM rôles.
Informations d’identification d’application et base de données Mots de passe — chaîne de texte brut Rotation : stockez les informations d’identification dans AWS Secrets Manager et établissez une rotation automatique si possible.
Informations d'identification RDS des bases de données d'administration Amazon et Aurora Mots de passe — chaîne de texte brut Remplacer : utilisez l'intégration de Secrets Manager avec Amazon RDS ou Amazon Aurora. En outre, certains types RDS de bases de données peuvent utiliser IAM des rôles plutôt que des mots de passe dans certains cas d'utilisation (pour plus de détails, voir Authentification IAM de base de données).
OAuthjetons Jetons secrets — chaîne de texte brut Rotation : stockez les jetons dans AWS Secrets Manager et configurez la rotation automatique.
APIjetons et clés Jetons secrets — chaîne de texte brut Rotation : stockez dans AWS Secrets Manager et établissez une rotation automatique si possible.

Un anti-modèle courant consiste à intégrer des clés IAM d'accès dans le code source, les fichiers de configuration ou les applications mobiles. Lorsqu'une clé d'IAMaccès est requise pour communiquer avec un AWS service, utilisez des informations d'identification de sécurité temporaires (à court terme). Ces informations d'identification à court terme peuvent être fournies par le biais de IAMrôles pour les EC2 instances, de rôles d'exécution pour les fonctions Lambda, de IAMrôles Cognito pour l'accès des utilisateurs mobiles et de politiques IoT Core pour les appareils IoT. Lorsque vous interagissez avec des tiers, préférez déléguer l'accès à un IAM rôle disposant de l'accès nécessaire aux ressources de votre compte plutôt que de configurer un IAM utilisateur et d'envoyer au tiers la clé d'accès secrète de cet utilisateur.

Dans de nombreux cas, la charge de travail nécessite le stockage des secrets nécessaires à l'interopérabilité avec d'autres services et ressources. AWS Secrets Managerest spécialement conçu pour gérer en toute sécurité ces informations d'identification, ainsi que le stockage, l'utilisation et la rotation des API jetons, mots de passe et autres informations d'identification.

AWS Secrets Manager fournit cinq fonctionnalités clés pour garantir le stockage et le traitement sécurisés des informations d'identification sensibles : le chiffrement au repos, le chiffrement en transit, un audit complet, un contrôle d'accès précis et une rotation extensible des informations d'identification. D’autres services de gestion des secrets créés par des AWS partenaires ou des solutions développées localement qui offrent des capacités et des assurances similaires sont également acceptables.

Étapes d’implémentation

  1. Identifiez les chemins de code contenant des informations d'identification codées en dur à l'aide d'outils automatisés tels qu'Amazon CodeGuru.

    1. Utilisez Amazon CodeGuru pour scanner vos référentiels de code. Une fois l'examen terminé, filtrez CodeGuru pour trouver les lignes de code problématiques. Type=Secrets

  2. Identifiez les informations d’identification qui peuvent être supprimées ou remplacées.

    1. Identifiez les informations d’identification qui ne sont plus nécessaires et marquez-les en vue de leur suppression.

    2. Pour les clés AWS secrètes intégrées au code source, remplacez-les par IAM des rôles associés aux ressources nécessaires. Si une partie de votre charge de travail est externe AWS mais que vous avez besoin IAM d'informations d'identification pour accéder aux AWS ressources, pensez à IAMRoles Anywhere ou à AWS Systems Manager Hybrid Activations.

  3. Pour les autres secrets tiers de longue durée qui nécessitent l’utilisation de la stratégie de rotation, intégrez Secrets Manager dans votre code afin d’extraire les secrets tiers au moment de l’exécution.

    1. La CodeGuru console peut créer automatiquement un secret dans Secrets Manager à l'aide des informations d'identification découvertes.

    2. Intégrez l’extraction des secrets à partir de Secrets Manager dans votre code d’application.

      1. Les fonctions Lambda sans serveur peuvent utiliser une extension Lambda indépendante du langage.

      2. Pour les EC2 instances ou les conteneurs, AWS fournit un exemple de code côté client permettant de récupérer des secrets depuis Secrets Manager dans plusieurs langages de programmation courants.

  4. Examinez régulièrement votre base de code et effectuez une nouvelle analyse afin de vérifier qu’aucun nouveau secret n’a été ajouté au code.

    1. Envisagez l’utilisation d’un outil tel que git-secrets pour éviter l’ajout de nouveaux secrets à votre dépôt de code source.

  5. Surveillez l’activité de Secrets Manager pour détecter tout signe d’utilisation inattendue, d’accès secret inapproprié ou de tentative de suppression de secrets.

  6. Réduisez l’exposition humaine aux informations d’identification. Limitez l'accès à la lecture, à l'écriture et à la modification des informations d'identification à un IAM rôle dédié à cette fin, et n'accordez l'accès pour assumer ce rôle qu'à un petit sous-ensemble d'utilisateurs opérationnels.

Ressources

Bonnes pratiques associées :

Documents connexes :

Vidéos connexes :

Ateliers connexes :