Agence web » Actualités du digital » Ne laissez pas de mots de passe dans votre code; Utilisez plutôt Secrets Manager d'AWS

Ne laissez pas de mots de passe dans votre code; Utilisez plutôt Secrets Manager d'AWS

ne-laissez-pas-de-mots-de-passe-dans-votre-code-8164327

AWS Secrets Manager facilite l'utilisation des clés d'accès (comme les informations d'identification de base de données) en les stockant à distance et en contrôlant leur accès derrière les autorisations IAM. Cela vous permet de faire pivoter en douceur les clés d'accès et de récupérer la dernière en cas de besoin.

Que fait Secrets Manager?

Voici un exemple. Supposons que vous créez un script de construction pour vos serveurs qui automatisera votre processus d'installation, généralement pour utiliser Auto Scaling et le déploiement automatisé. Vous devez connecter WordPress à un serveur MySQL externe.

La solution la plus simple serait de stocker le mot de passe MySQL en texte brut dans le cadre du script de construction. Il ne s’agit évidemment pas des meilleures pratiques en matière de sécurité et ne s’étend pas bien au-delà d’une seule instance gérée par un seul employé. De plus, si vous séparez vos environnements de développement et de production, ce secret doit être mis à jour pour chaque environnement, ce qui est un problème.

La meilleure solution est Secrets Manager. Au lieu de stocker le mot de passe MySQL en texte brut, vous le stockez dans Secrets Manager et lorsque vous devez l'utiliser, vous effectuez un appel API à Secrets Manager, qui renvoie le secret. Cela vous permet de sécuriser l'accès à vos secrets à l'aide de rôles et d'autorisations IAM, qui est un bien meilleur système, et que vous utilisez déjà si votre entreprise est sur AWS.

De plus, comme Secrets Manager agit comme un magasin de données unique faisant autorité, il facilite la rotation des secrets, ce qui est un élément important de la sécurité continue.

Pour être clair, Secrets Manager ne simplifie pas automatiquement la gestion des secrets importants. En fin de compte, vous demandez toujours des informations sensibles qui seront stockées sur disque ou en mémoire sur votre serveur. Quiconque peut accéder au serveur pourra toujours accéder au secret, et vous devrez disposer de bonnes politiques d'autorisations IAM pour verrouiller l'accès. Cependant, sans Secrets Manager, vous ne seriez pas du tout en mesure de contrôler cet accès à l'aide d'IAM, et vous auriez potentiellement des clés importantes stockées à d'autres endroits, comme des dépôts Git facilement accessibles.

Secrets Manager peut être utilisé pour stocker tout type de clé, y compris JSON. Cependant, il est couramment utilisé pour stocker les informations d'identification de la base de données et, en tant que tel, dispose d'une intégration intégrée pour RDS qui peut configurer et faire pivoter automatiquement les informations d'identification pour vous.

Comment utiliser Secrets Manager

Rendez-vous sur la console Secrets Manager et cliquez sur "Stocker un nouveau secret".

1596128336_524_ne-laissez-pas-de-mots-de-passe-dans-votre-code-4981174

Si vous configurez un secret pour stocker les informations d'identification pour RDS, ou l'un des autres services DB d'AWS, vous pouvez le sélectionner comme type, saisir le nom d'utilisateur et le mot de passe, puis sélectionner la base de données que vous souhaitez utiliser avec ce secret.

1596128336_894_ne-laissez-pas-de-mots-de-passe-dans-votre-code-2763094

Si vous stockez autre chose, vous devrez sélectionner "Autre type de secret". Si vous stockez une série de paires clé-valeur, vous pouvez les saisir ici, mais si vous avez un schéma JSON plus complexe, vous pouvez saisir le tout en texte brut sous l'onglet "Texte en clair".

1596128336_987_ne-laissez-pas-de-mots-de-passe-dans-votre-code-1363721

Cliquez sur "Suivant", donnez-lui un nom et toutes les balises que vous souhaitez ajouter à des fins d'organisation.

Sur l'écran suivant, vous avez la possibilité de configurer la rotation automatique. Cela appellera une fonction Lambda de votre choix tous les mois environ, et fera pivoter la clé pour une nouvelle valeur. Vous souhaiterez probablement configurer votre fonction Lambda pour vider les caches de vos applications clientes, de sorte qu'elles doivent toutes récupérer le nouveau secret.

1596128336_170_ne-laissez-pas-de-mots-de-passe-dans-votre-code-9506454

Cliquez sur "Suivant", puis sur "Stocker" pour créer le secret.

Accéder au secret est assez facile. À condition que l'AWS CLI soit installée et configurée avec un utilisateur ou un rôle autorisé à récupérer le secret, vous pouvez y accéder en utilisant secretsmanager get-secrete-value. Cela renvoie la sortie JSON, vous voudrez donc probablement la diriger vers jq pour traitement.

aws secretsmanager get-secret-value --secret-id Confidential_Info | jq

1596128336_224_ne-laissez-pas-de-mots-de-passe-dans-votre-code-1464375

Cela renvoie des métadonnées sur votre chaîne ainsi que la chaîne elle-même dans le SecretString paramètre. Il est codé dans une seule chaîne, mais vous pouvez utiliser jq«S fromjson directive pour renvoyer la valeur JSON réelle de la chaîne.

| jq '.SecretString | fromjson'

1596128336_790_ne-laissez-pas-de-mots-de-passe-dans-votre-code-9927412

Si vous récupérez des secrets très souvent (au moment de l'exécution), vous souhaiterez utiliser un cache côté client afin de ne pas envoyer des milliers de requêtes d'API chaque seconde. AWS fournit quelques bibliothèques côté client pour travailler avec Secrets Manager, mais vous pouvez toujours l'implémenter vous-même dans la langue de votre choix.

Si vous souhaitez automatiser la création de secrets, vous pouvez le faire avec create-secret:

aws secretsmanager create-secret --name  --secret-string 

Configuration de l'accès IAM

Vous souhaiterez configurer des stratégies IAM personnalisées pour accorder un accès en lecture à des secrets individuels en fonction de l'Amazon Resource Name (ARN). Depuis la console de gestion IAM, créez un nouveau rôle (ou modifiez celui existant de votre instance EC2) et ajoutez un accès en lecture pour Secrets Manager.

1596128336_314_ne-laissez-pas-de-mots-de-passe-dans-votre-code-5733864

Ci-dessous, vous souhaiterez ajouter un ARN pour restreindre l'accès. Saisissez l'identifiant secret et cliquez sur "Ajouter".

1596128336_221_ne-laissez-pas-de-mots-de-passe-dans-votre-code-3748651

Créez la nouvelle stratégie, associez le rôle à votre instance EC2 si nécessaire et testez pour vérifier que vous ne pouvez accéder qu'au secret attribué à la stratégie.

★★★★★