Comment accéder aux secrets de l'API à l'aide d'AWS Lambda ?

Comment Acceder Aux Secrets De L Api A L Aide D Aws Lambda



Les meilleures pratiques des services AWS impliquent deux actions, à savoir Store-Retrieve et Audit-Rotate. En combinant ces deux pratiques en une seule, AWS a lancé Secret Manager qui aide l'utilisateur à protéger les informations secrètes de ses applications. AWS Secret Manager est largement utilisé pour créer, stockage , modification , réplication et la rotation des informations d'identification de la base de données, des clés API, des jetons OAuth, etc.

Aperçu rapide

Cet article couvre les aspects suivants :

Qu'est-ce qu'AWS Lambda ?

AWS Lambda est un service informatique permettant d'exécuter des codes dans plusieurs environnements et langues sans fournir ni gérer les serveurs. De plus, AWS Lambda peut être déclenché par plusieurs services différents d'AWS tels que le compartiment S3, les passerelles API, etc. Ce service met automatiquement à l'échelle l'application et exécute efficacement le code sans obliger l'utilisateur à installer des dépendances supplémentaires.







Pour en savoir plus sur le service Lambda, consultez cet article ici : « Démarrer avec AWS Lambda » .



Qu'est-ce qu'AWS Secret Manager ?

AWS Secret Manager permet aux utilisateurs de sécuriser et de chiffrer les information confidentielle d'applications telles que les jetons OAuth, les informations d'identification de base de données, les API, etc. Ces informations confidentielles sont appelées 'secrète' . Ces secrets ne sont accessibles qu'aux organismes autorisés et peuvent être alternés afin de renforcer la sécurité.



Apprenez-en davantage sur le stockage des informations d’identification RDS dans Secret Manager en vous référant à cet article : « Comment stocker les informations d'identification Amazon RDS à l'aide de Secret Manager ? »





Comment accéder aux secrets d'API dans AWS à l'aide d'AWS Lambda ?

Lambda fournit une prise en charge intégrée pour plusieurs services, par ex. Compartiment S3, API Gateway et Secret Manager. Les fonctions Lambda peuvent être utilisées pour obtenir la valeur des secrets configurés. En utilisant les secrets d'API dans AWS Lambda Functions, les utilisateurs peuvent interagir avec plusieurs services d'AWS. Ces secrets d'API sont également importants pour autoriser les fonctions lambda.

Pour accéder aux clés API dans AWS Secret Manager à l'aide d'AWS Lambda, suivez les étapes mentionnées ci-dessous :



  • Étape 1 : Créer un secret API
  • Étape 2 : Créer une stratégie IAM
  • Étape 3 : Créer un rôle IAM
  • Étape 4 : Créer un rôle Lambda

Étape 1 : Créer un secret API

Avant d'accéder à une clé API dans AWS Secret Manager, nous allons d'abord apprendre à créer un secret API . Pour cela, accédez au « Gestionnaire secret » service du Console de gestion AWS :

Sur le Console principale de l'AWS Secret Manager, cliquez sur le « Garder un nouveau secret » bouton:

Dans le « Type secret » bloquer, choisissez le « Autre type de secret » option parmi les différentes options affichées :

Faites défiler jusqu'à « Paires clé/valeur » section et fournir un paire clé-valeur unique pour votre secret API. À ajouter plus paires clé-valeur , clique sur le 'Ajouter une rangée' bouton:

Vient ensuite le 'Clé de cryptage' section. AWS fournit un clé de chiffrement par défaut pour le secret. Cependant, l'utilisateur peut également fournir un nom personnalisé pour la clé. En gardant la valeur par défaut, cliquez sur le bouton « Suivant ' bouton:

Sur cette interface, l'utilisateur doit fournir un nom unique pour leur secret et un description qui est facultative champ ici :

En gardant le paramètres inchangés , continuez en cliquant sur le bouton « Suivant ' bouton:

Vient ensuite le Section de révision. Pour confirmer tous les information à condition est correct , clique sur le ' Magasin Bouton » situé en bas de l’interface :

Le secret a été créé avec succès . Clique sur le ' Recharger ' pour afficher le nom du secret sur le Tableau de bord :

Étape 2 : Créer une stratégie IAM

À créer une politique IAM, accéder au Service GIA depuis la console de gestion AWS :

Du barre latérale de l'IAM service, cliquez sur le « Stratégies ' option:

Sur le Console de stratégie , clique sur le « Créer une politique » bouton:

Apprenez-en davantage sur la stratégie AWS IAM en vous référant à cet article : « Exemples de politiques AWS IAM »

Vient ensuite le 'Spécifier les autorisations' section. Recherchez et sélectionnez le « Gestionnaire secret » service:

Faites défiler jusqu'à 'Actions autorisées' bloc. Ici, à partir des différents niveaux d'accès, appuyez sur le bouton ' Lire ' option. Sélectionnez le 'Toutes les actions de lecture' possibilité de activer toutes les fonctions de lecture services pour cette politique :

Défiler vers le bas au ' Ressources » et cliquez sur le 'Ajouter un ARN' option:

Revenez au Tableau de bord AWS Secret Manager et cliquez sur le nom du secret. Copiez le ' ARN ' du secret en dessous du ' ARN secret » depuis l'interface affichée :

Sur le Consolez maintenant , collez l'ARN copié dans le champ ' ARN ' champ:

Avant de cliquer sur le 'Ajouter des ARN' bouton, cliquez sur le 'Ce compte' bouton pour confirmer que les secrets existent dans le même compte. Après avoir configuré les paramètres, cliquez sur le 'Ajouter des ARN' bouton:

Après configuration tous les paramètres de la police, cliquez sur le bouton « Suivant ' bouton:

Dans le Sections relatives aux détails de la politique , indiquez le nom de la stratégie dans le champ « Nom de la politique ' champ:

Clique sur le ' Créer une politique ' bouton:

Le politique a été créé avec succès :

Étape 3 : Créer un rôle IAM

Dans cette section, créez un rôle IAM contenant les autorisations requises pour que les fonctions Lambda accèdent aux secrets. A cet effet, cliquez sur le « Les rôles ' dans la barre latérale du rôle IAM, puis appuyez sur l'option 'Créer un rôle' bouton de l'interface :

Après avoir cliqué sur le 'Créer un rôle' bouton, l’interface suivante s’affichera. Sélectionnez le « Service AWS » option parmi les options suivantes car nous le joindrons Rôle IAM avec la fonction lambda :

Dans le 'Cas d'utilisation' section, recherchez le Service Lambda et sélectionnez-le. Appuyez sur le ' Suivant ' en bas de l'interface pour continuer :

Sur le interface suivante , recherchez le nom du Nom de la politique que nous avons configuré plus tôt. Parmi les résultats affichés, sélectionnez le Nom de la politique:

Clique le ' Suivant ' bouton en bas du interface pour continuer :

Fournir un identifiant unique pour votre Rôle IAM dans le champ en surbrillance suivant :

Garder le reste des paramètres par défaut , clique sur le 'Créer un rôle' en faisant défiler vers le bas de l'interface :

Le rôle a été avec succès créé:

Pour en savoir plus sur la création d'un rôle IAM dans AWS, consultez cet article : « Comment créer des rôles IAM dans AWS » .

Étape 4 : Créer une fonction Lambda

L'étape suivante consiste à créer la fonction Lambda. Cette fonction lambda contiendra le rôle IAM et obtiendra la valeur des secrets une fois exécutée. Pour accéder au service Lambda, recherchez « Lambda » dans la barre de recherche du Console de gestion AWS . Cliquez sur le nom du service dans le résultat pour visiter la console :

Sur l'interface initiale du service Lambda, cliquez sur l'icône 'Créer une fonction' bouton:

Cela affichera le 'Créer une fonction' interface. Sélectionnez le «Auteur à partir de zéro» option et continuez en fournissant le nom du Fonction Lambda dans le champ en surbrillance :

Dans le Champ d'exécution , sélectionnez le ' Python3.9 ' environnement:

Sous le Section d'exécution , Il y a un 'Modifier le rôle d'exécution par défaut' section. Sélectionnez le 'Utiliser un rôle existant' option, puis spécifiez le rôle dans le « Rôle existant » champ:

Sur la même interface, appuyez sur le 'Créer une fonction' bouton en bas de l'interface :

Pour en savoir plus sur la création d'une fonction Lambda, consultez cet article : 'Comment créer une fonction Lambda avec le runtime Python' .

La fonction Lambda a été créée. L'étape suivante consiste à fournir le code à la fonction Lambda. Lorsque ce code est exécuté, il affichera les valeurs du Gestionnaire de secrets :

importer json
importer boto3
importer base64
de botocore. des exceptions importer ErreurClient

par défaut lambda_handler ( événement , contexte ) :
environnement = événement [ 'env' ]
nom_secret = 'shmaster19/%s/clé' % environnement
nom_région = 'ap-sud-est-1'

session = boto3. session . Session ( )
client = session. client (
Nom du service = 'gestionnaire de secrets' ,
nom_région = nom_région
)

essayer :
réponse_valeur_secrète = client. get_secret_value (
ID secret = nom_secret
)
sauf ClientError comme erreur :
imprimer ( erreur )
autre :
si 'Chaîne secrète' dans réponse_valeur_secrète :
secrète = json. charges ( réponse_valeur_secrète [ 'Chaîne secrète' ] )
retour secrète
autre :
décodé_binary_secret = base64. b64décoder ( secret_value_Response [ 'SecretBinaire' ] )
retour décodé_binary_secret
  • importer json : utilisé pour effectuer des opérations JSON.
  • importer boto3 : est le SDK pour la communication entre AWS et Python.
  • importer base64 : Utilisé pour exécuter des fonctions d'encodage et de décodage sur des données binaires en Base64.
  • importer ClientError : Cela permet aux utilisateurs de gérer les exceptions dans le code écrit.
  • nom_secret : Dans cette variable, indiquez le nom de votre secret. Notez que ce secret contient '%s' . C'est lorsqu'un utilisateur dispose de plusieurs clés d'un format similaire. Par exemple, si un utilisateur a créé deux secrets, par exemple : 'apikey/dév/clé' et 'apikey/prod/clé' . Puis dans le '%s' , si l'utilisateur fournit ' développeur », la fonction Lambda fournira le clé de développement (apikey/dev/key) et vice versa.
  • boto. session.Session() : permet aux utilisateurs de créer des clients de service et des réponses.
  • nom_région : Fournissez le nom de la région dans laquelle votre secret AWS est configuré.
  • Réponse_valeur_secrète : Dans cette variable, nous utilisons le « client.get_secret_value » fonction qui renverra la valeur du secret.
  • Decoded_binary_secert : Après avoir acquis la valeur du secret, celui-ci sera ensuite décodé en format base 64 .

Après avoir collé le code dans la fonction Lambda, cliquez sur le bouton « Déployer Bouton ' pour enregistrer et appliquer les modifications :

Étape 5 : tester le code

Dans cette section du blog, nous vérifierons si le code fonctionne ou non. A cet effet, cliquez sur le « Test ' Bouton après avoir déployé avec succès les modifications apportées à la fonction Lambda :

Sur l'interface suivante, fournissez le nom du test événement dans le 'Nom de l'événement' champ:

Faites défiler jusqu'à Section JSON d'événement , spécifie le ' env ' et fournissez la valeur au format JSON. Le ' valeur ' de la clé sera transmis à '%s' . Comme les secrets que nous avons précisés contiennent le « développeur ' valeur, le ' développeur La valeur ' est transmise au ' env » variables. La fonction Lambda identifiera le secret lorsque le code sera exécuté car l'identifiant du secret spécifique est fourni dans le code. Après avoir précisé les détails, cliquez sur le bouton « Sauvegarder ' bouton:

Lorsque l’événement est créé avec succès, cliquez sur le bouton « Test ' bouton:

Ici nous avons obtenu avec succès la valeur de notre secret spécifié :

C'est tout de ce guide.

Conclusion

Pour accéder aux clés API dans Secret Manager à l'aide de Lambda, créez d'abord un secret API, une stratégie IAM, un rôle et une fonction Lambda, puis exécutez le code de la fonction. Les fonctions Lambda peuvent être invoquées pour obtenir les valeurs d'AWS Secret Manager en spécifiant l'identifiant du secret lors de l'exécution du code. Cet article fournit des instructions étape par étape sur la façon d'accéder aux clés API dans AWS Secret Manager à l'aide d'AWS Lambda.