Introduction
Pendant les vacances de Noël 2022, j’ai (re-)présenté Petit pas et croyez-moi, c’est une technologie très prometteuse dans ICP l’espace, cela soulage un bon nombre de problèmes complexes qui surviennent si vous gériez vous-même le ICP tout seul à partir de zéro.
L’objectif principal de cet article de blog sera de – Sécuriser les API déployées sur la passerelle d’API AWS à l’aide MTLS.
Le deuxième objectif est de savoir comment nous pouvons tirer parti Petit pas pour le ICP partie.
La troisième partie la plus importante étant l’approvisionnement d’infra utilisant Pulumi
Conditions préalables
- connaissance de base de mtls & PKI.
- connaissance supérieure à la moyenne d’AWS.
- doit posséder un domaine. achetez-le auprès d’AWS route 53 ou achetez-le ailleurs et configurez-le dans AWS route 53 à l’aide des entrées NS.
- AWS CLI installé.
- configurer les informations d’identification AWS en local, en fonction du profil.
- une certaine connaissance de Pulumi IAC.
- Pulumi CLI sur la machine locale.
- compte à Pulumi
- compte à Petit pas
- étape CLI sur la machine du développeur. (FACULTATIF)
Diagramme de pile et détails
Voici les piles importantes qui font partie de ce POC : –
-
infra pile (OBLIGATOIRE)
- gère les certificats requis pour les domaines personnalisés de la passerelle API, à l’aide du gestionnaire de certificats AWS.
- contient le compartiment s3 requis pour la chaîne de certificats du magasin de confiance.
-
les fonctions pile (OBLIGATOIRE)
- gère la ou les fonctions lambda, actuellement une fonction lambda unique très basique, et les autorisations associées, etc.
-
apis-mtls pile (OBLIGATOIRE)
- gère la configuration, les itinéraires, l’intégration, etc. liés à la passerelle API.
- il fait référence à infra pile pour extraire les ARN de certificat, etc.
- il fait référence à infra pile pour extraire le compartiment s3 et la référence ca.pem pour la passerelle API.
- il fait référence à les fonctions pile pour extraire les ARN de la fonction lambda, etc.
-
non-mtls-apis pile (FACULTATIF)
- gère la configuration, les itinéraires, l’intégration, etc. liés à la passerelle API.
- il fait référence à la pile infra pour extraire les ARN de certificat, etc.
- il fait référence à la pile de fonctions pour extraire les ARN des fonctions lambda, etc.
Détails du code
Le référentiel de code pour le POC réussi est ici
La structure des dossiers est identique à celle du diagramme de pile ci-dessus.
Les points importants:-
- La zone DNS public dans la route AWS 53 a été créée manuellement. Cela ne fait pas partie du provisionnement de la pile.
- L’ordre d’exécution de la pile est infra, functions puis mtls-apis
- Modifiez la configuration dans les fichiers pulumi yaml dans les dossiers respectifs de toutes les piles, par exemple Informations d’identification AWS, régionet domaine DNS modifications connexes
- Le ca.pem dans la pile infra doit être remplacé en fonction du propre ensemble de compte smallstep. Il est actuellement lié à mon propre compte smallstep.
créez le fichier ca trust store.
- Assurez-vous que vous avez un compte SmallStep et que vous êtes connecté à celui-ci.
-
Par défaut, intermédiaire et racine sont créés pour votre compte. Cliquez sur afficher les détails en cliquant sur trois points contre les entrées des certificats racine et intermédiaires et copiez les deux certificats dans un seul fichier.
-
Placer le ca.pem dans le dossier de la pile infra.
créer un certificat client
- Dans le petit tableau de bord aller à -> Les autorités -> Cliquez sur le autorité -> créer un certificat à l’aide de l’interface utilisateurremplissez le sujet et l’expiration, comme indiqué ci-dessous : –
-
Autoriser.
-
Télécharger la clé et le certificatla clé n’est téléchargeable qu’à l’heure actuelle, elle ne sera plus disponible ultérieurement, conservez-la en lieu sûr, sinon le point de terminaison de l’API protégée par MTLS pourrait être compromis
Tester le point de terminaison de l’API à l’aide de POSTMAN
-
Configurez le certificat client et la clé dans la section des certificats dans les paramètres de POSTMAN
-
Si le certificat client n’est pas fourni, nous obtiendrons -** Erreur : lire ECONNRESET**
-
Si le certificat client et la combinaison de clés ne sont pas corrects, nous obtiendrons 403
-
Si tout réussit, l’API répondra comme ci-dessous : –
le chemin va être https://domain.com/v1/ping
{
"ping": "pong",
"success": true,
"timestamp": 1676617772241
}
N’hésitez pas à me contacter via Linkedin ici pour d’autres questions, doutes ou suggestions.