

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.

# Simplifiez l'authentification des applications avec le protocole TLS mutuel dans Amazon ECS en utilisant Application Load Balancer
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs"></a>

*Olawale Olaleye et Shamanth Devagari, Amazon Web Services*

## Résumé
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-summary"></a>

[Ce modèle vous permet de simplifier l'authentification de vos applications et de vous décharger des charges liées à la sécurité grâce au protocole TLS mutuel dans Amazon Elastic Container Service (Amazon ECS) en utilisant Application Load Balancer (ALB).](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html) Avec ALB, vous pouvez authentifier les certificats client X.509 auprès de. AWS Autorité de certification privée Cette puissante combinaison permet de sécuriser les communications entre vos services, réduisant ainsi le besoin de mécanismes d'authentification complexes au sein de vos applications. En outre, le modèle utilise Amazon Elastic Container Registry (Amazon ECR) pour stocker les images des conteneurs.

L'exemple de ce modèle utilise des images Docker provenant d'une galerie publique pour créer initialement les exemples de charges de travail. Par la suite, de nouvelles images Docker sont créées pour être stockées dans Amazon ECR. Pour la source, considérez un système basé sur Git tel que GitHub GitLab, ou Bitbucket, ou utilisez Amazon Simple Storage Service Amazon S3 (Amazon S3). Pour créer les images Docker, pensez à AWS CodeBuild les utiliser pour les images suivantes.

## Conditions préalables et limitations
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS ayant accès aux AWS CloudFormation piles de déploiement. Assurez-vous que vous disposez des [autorisations d'utilisateur ou de rôle Gestion des identités et des accès AWS (IAM) nécessaires](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html) au déploiement CloudFormation.
+ AWS Command Line Interface (AWS CLI) [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). [Configurez](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) vos AWS informations d'identification sur votre machine locale ou dans votre environnement en utilisant AWS CLI ou en définissant les variables d'environnement dans le `~/.aws/credentials` fichier.
+ [OpenSSL](https://www.openssl.org/) installé.
+ Docker [installé.](https://www.docker.com/get-started/)
+ Connaissance de ce qui est Services AWS décrit dans la section [Outils](#simplify-application-authentication-with-mutual-tls-in-amazon-ecs-tools).
+ Connaissance de Docker et de NGINX.

**Limites**
+ Le protocole TLS mutuel pour Application Load Balancer ne prend en charge que les certificats clients X.509v3. Les certificats client X.509v1 ne sont pas pris en charge.
+ Le CloudFormation modèle fourni dans le référentiel de code de ce modèle n'inclut pas le provisionnement d'un CodeBuild projet dans le cadre de la pile.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Docker version 27.3.1 ou ultérieure
+ AWS CLI version 2.14.5 ou ultérieure

## Architecture
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-architecture"></a>

Le schéma suivant montre les composants de l'architecture de ce modèle.

![\[Flux de travail pour s'authentifier avec le protocole TLS mutuel à l'aide d'Application Load Balancer.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a343fa4e-097f-416b-9c83-01a28eb57dc3/images/e1371297-b987-4487-9b13-8120933c921f.png)


 Le schéma suivant illustre le flux de travail suivant :

1. Créez un dépôt Git et validez le code de l'application dans le référentiel.

1. Créez une autorité de certification (CA) privée dans AWS CA privée.

1. Créez un CodeBuild projet. Déclenché par les modifications de validation, crée l'image Docker et publie l'image créée sur Amazon ECR. CodeBuildproject 

1. Copiez la chaîne de certificats et le corps du certificat depuis l'autorité de certification, puis téléchargez le bundle de certificats sur Amazon S3.

1. Créez un trust store avec le bundle CA que vous avez chargé sur Amazon S3. Associez le trust store aux écouteurs TLS mutuels sur l'Application Load Balancer (ALB).

1. Utilisez l'autorité de certification privée pour émettre des certificats clients pour les charges de travail des conteneurs. Créez également un certificat TLS privé à l'aide AWS CA privée de.

1. Importez le certificat TLS privé dans AWS Certificate Manager (ACM) et utilisez-le avec l'ALB.

1. La charge de travail du conteneur dans `ServiceTwo` utilise le certificat client émis pour s'authentifier auprès de l'ALB lorsqu'il communique avec la charge de travail du conteneur dans. `ServiceOne`

1. La charge de travail du conteneur dans `ServiceOne` utilise le certificat client émis pour s'authentifier auprès de l'ALB lorsqu'il communique avec la charge de travail du conteneur dans. `ServiceTwo`

**Automatisation et mise à l'échelle**

Ce modèle peut être entièrement automatisé en utilisant ou CloudFormation en utilisant AWS Cloud Development Kit (AWS CDK) les opérations d'API d'un SDK pour provisionner les AWS ressources.

Vous pouvez l'utiliser AWS CodePipeline pour implémenter un pipeline d'intégration et de déploiement continus (CI/CD) CodeBuild afin d'automatiser le processus de création d'images de conteneur et de déployer de nouvelles versions sur les services de cluster Amazon ECS.

## Outils
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-tools"></a>

**Services AWS **
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) vous aide à créer, à stocker et à renouveler des certificats et clés SSL/TLS X.509 publics et privés qui protègent vos AWS sites Web et vos applications.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)est un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs rapide et hautement évolutif permettant d'exécuter, d'arrêter et de gérer des conteneurs sur un cluster. Vous pouvez exécuter vos tâches et services sur une infrastructure sans serveur gérée par AWS Fargate. Pour mieux contrôler votre infrastructure, vous pouvez également exécuter vos tâches et services sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez.
+ [Amazon ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) vous permet d'interagir directement avec les conteneurs sans avoir à interagir au préalable avec le système d'exploitation du conteneur hôte, à ouvrir les ports entrants ou à gérer les clés SSH. Vous pouvez utiliser ECS Exec pour exécuter des commandes ou envoyer un shell à un conteneur exécuté sur une EC2 instance Amazon ou sur AWS Fargate.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les EC2 instances, les conteneurs et les adresses IP Amazon, dans une ou plusieurs zones de disponibilité. ELB surveille l'état de santé de ses cibles enregistrées et achemine le trafic uniquement vers les cibles saines. ELB adapte votre équilibreur de charge en fonction de l'évolution de votre trafic entrant au fil du temps. Il peut s'adapter automatiquement à la majorité des charges de travail.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html)vous permet d'exécuter des conteneurs sans avoir à gérer de serveurs ou d' EC2 instances Amazon. Fargate est compatible avec Amazon ECS et Amazon Elastic Kubernetes Service (Amazon EKS). Vous pouvez exécuter vos tâches et services Amazon ECS avec le type de lancement Fargate ou avec un fournisseur de capacité Fargate. Pour ce faire, empaquetez votre application dans des conteneurs, spécifiez les exigences en termes de processeur et de mémoire, définissez les politiques réseau et IAM, puis lancez l'application. Chaque tâche Fargate possède sa propre limite d'isolation et ne partage pas le noyau sous-jacent, les ressources du processeur, les ressources de mémoire ou l'interface elastic network avec une autre tâche.
+ [AWS Autorité de certification privée](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)permet de créer des hiérarchies d'autorités de certification (CA) privées, y compris racine et subordonnée CAs, sans les coûts d'investissement et de maintenance liés à l'exploitation d'une autorité de certification sur site.

**Autres outils******
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.
+ [GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories), [GitLab](https://docs.gitlab.com/ee/user/get_started/get_started_projects.html), et [Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/tutorial-learn-bitbucket-with-git/) font partie des systèmes de contrôle de source basés sur Git les plus couramment utilisés pour suivre les modifications du code source.
+ [NGINX Open Source](https://nginx.org/en/docs/?_ga=2.187509224.1322712425.1699399865-405102969.1699399865) est un équilibreur de charge, un cache de contenu et un serveur Web open source. Ce modèle l'utilise comme serveur Web.
+ [OpenSSL](https://www.openssl.org/) est une bibliothèque open source qui fournit des services utilisés par les implémentations OpenSSL de TLS et de CMS. 

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [MTLS-with-Application-Load-Balancer-in-Amazon-ECS](https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS).

## Bonnes pratiques
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-best-practices"></a>
+ Utilisez Amazon ECS Exec pour exécuter des commandes ou envoyer un shell à un conteneur exécuté sur Fargate. Vous pouvez également utiliser ECS Exec pour collecter des informations de diagnostic pour le débogage.
+ Utilisez des groupes de sécurité et des listes de contrôle d'accès réseau (ACLs) pour contrôler le trafic entrant et sortant entre les services. Les tâches Fargate reçoivent une adresse IP du sous-réseau configuré dans votre cloud privé virtuel (VPC).

## Épopées
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-epics"></a>

### Création du référentiel
<a name="create-the-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le code source. | Pour télécharger le code source de ce modèle, dupliquez ou clonez le référentiel GitHub [MTLS-with-Application-Load-Balancer-in-Amazon-ECS](https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS). | DevOps ingénieur | 
| Créez un dépôt Git. | Pour créer un dépôt Git contenant le Dockerfile et les `buildspec.yaml` fichiers, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)`git clone https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS.git` | DevOps ingénieur | 

### Création d'une autorité de certification et génération de certificats
<a name="create-ca-and-generate-certificates"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une autorité de certification privée dans AWS CA privée. | Pour créer une autorité de certification (CA) privée, exécutez les commandes suivantes dans votre terminal. Remplacez les valeurs des exemples de variables par vos propres valeurs. <pre>export AWS_DEFAULT_REGION="us-west-2"<br />export SERVICES_DOMAIN="www.example.com"<br /><br />export ROOT_CA_ARN=`aws acm-pca create-certificate-authority \<br />    --certificate-authority-type ROOT \<br />    --certificate-authority-configuration \<br />    "KeyAlgorithm=RSA_2048,<br />    SigningAlgorithm=SHA256WITHRSA,<br />    Subject={<br />        Country=US,<br />        State=WA,<br />        Locality=Seattle,<br />        Organization=Build on AWS,<br />        OrganizationalUnit=mTLS Amazon ECS and ALB Example,<br />        CommonName=${SERVICES_DOMAIN}}" \<br />        --query CertificateAuthorityArn --output text`</pre>Pour plus de détails, voir [Créer une autorité de certification privée AWS CA privée dans](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html) la AWS documentation. | DevOps ingénieur, AWS DevOps | 
| Créez et installez votre certificat CA privé. | Pour créer et installer un certificat pour votre autorité de certification racine privée, exécutez les commandes suivantes dans votre terminal :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html) | AWS DevOps, DevOps ingénieur | 
| Demandez un certificat géré. | Pour demander un certificat privé AWS Certificate Manager à utiliser avec votre ALB privé, utilisez la commande suivante :<pre>export TLS_CERTIFICATE_ARN=`aws acm request-certificate \<br />    --domain-name "*.${DOMAIN_DOMAIN}" \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --query CertificateArn --output text`</pre> | DevOps ingénieur, AWS DevOps | 
| Utilisez l'autorité de certification privée pour émettre un certificat client. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)`openssl req -out client_csr1.pem -new -newkey rsa:2048 -nodes -keyout client_private-key1.pem``openssl req -out client_csr2.pem -new -newkey rsa:2048 -nodes -keyout client_private-key2.pem`Cette commande renvoie le CSR et la clé privée pour les deux services. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)<pre>SERVICE_ONE_CERT_ARN=`aws acm-pca issue-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --csr fileb://client_csr1.pem \<br />    --signing-algorithm "SHA256WITHRSA" \<br />    --validity Value=5,Type="YEARS" --query CertificateArn --output text` <br /><br />echo "SERVICE_ONE_CERT_ARN: ${SERVICE_ONE_CERT_ARN}"<br /><br />aws acm-pca get-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --certificate-arn ${SERVICE_ONE_CERT_ARN} \<br />     | jq -r '.Certificate' > client_cert1.cert<br /><br />SERVICE_TWO_CERT_ARN=`aws acm-pca issue-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --csr fileb://client_csr2.pem \<br />    --signing-algorithm "SHA256WITHRSA" \<br />    --validity Value=5,Type="YEARS" --query CertificateArn --output text` <br /><br />echo "SERVICE_TWO_CERT_ARN: ${SERVICE_TWO_CERT_ARN}"<br /><br />aws acm-pca get-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --certificate-arn ${SERVICE_TWO_CERT_ARN} \<br />     | jq -r '.Certificate' > client_cert2.cert</pre>Pour plus d'informations, consultez la section [Émettre des certificats d'entité finale privés](https://docs.aws.amazon.com/privateca/latest/userguide/PcaIssueCert.html) dans la AWS documentation. | DevOps ingénieur, AWS DevOps | 

### Fournir des services AWS
<a name="provision-aws-services"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Fourniture Services AWS avec le CloudFormation modèle. | Pour configurer le cloud privé virtuel (VPC), le cluster Amazon ECS, les services Amazon ECS, Application Load Balancer et Amazon Elastic Container Registry (Amazon ECR), utilisez le modèle. CloudFormation  | DevOps ingénieur | 
| Obtenez des variables. | Vérifiez que vous disposez d'un cluster Amazon ECS avec deux services en cours d'exécution. Pour récupérer les détails des ressources et les stocker sous forme de variables, utilisez les commandes suivantes :<pre><br />export LoadBalancerDNS=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`LoadBalancerDNS`].OutputValue')<br /><br />export ECRRepositoryUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryUri`].OutputValue')<br /><br />export ECRRepositoryServiceOneUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryServiceOneUri`].OutputValue')<br /><br />export ECRRepositoryServiceTwoUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryServiceTwoUri`].OutputValue')<br /><br />export ClusterName=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ClusterName`].OutputValue')<br /><br />export BucketName=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`BucketName`].OutputValue')<br /><br />export Service1ListenerArn=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`Service1ListenerArn`].OutputValue')<br /><br />export Service2ListenerArn=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`Service2ListenerArn`].OutputValue')</pre> | DevOps ingénieur | 
| Créez un CodeBuild projet. | Pour utiliser un CodeBuild projet afin de créer les images Docker pour vos services Amazon ECS, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)Pour plus de détails, voir [Créer un projet de construction AWS CodeBuild dans](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html) la AWS documentation. | AWS DevOps, DevOps ingénieur | 
| Créez les images Docker. | Vous pouvez l'utiliser CodeBuild pour exécuter le processus de création d'image. CodeBuild a besoin d'autorisations pour interagir avec Amazon ECR et pour travailler avec Amazon S3.Dans le cadre du processus, l'image Docker est créée et envoyée au registre Amazon ECR. Pour plus de détails sur le modèle et le code, voir [Informations supplémentaires](#simplify-application-authentication-with-mutual-tls-in-amazon-ecs-additional).(Facultatif) Pour créer localement à des fins de test, utilisez la commande suivante :<pre># login to ECR<br />aws ecr get-login-password | docker login --username AWS --password-stdin $ECRRepositoryUri<br /><br /># build image for service one<br />cd /service1<br />aws s3 cp s3://$BucketName/serviceone/ service1/ --recursive<br />docker build -t $ECRRepositoryServiceOneUri .<br />docker push $ECRRepositoryServiceOneUri<br /><br /># build image for service two<br />cd ../service2<br />aws s3 cp s3://$BucketName/servicetwo/ service2/ --recursive<br />docker build -t $ECRRepositoryServiceTwoUri .<br />docker push $ECRRepositoryServiceTwoUri</pre> | DevOps ingénieur | 

### Activer le protocole TLS mutuel
<a name="enable-mutual-tls"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le certificat CA sur Amazon S3. | Pour télécharger le certificat CA dans le compartiment Amazon S3, utilisez l'exemple de commande suivant :`aws s3 cp ca-cert.pem s3://$BucketName/acm-trust-store/ ` | AWS DevOps, DevOps ingénieur | 
| Créez le trust store. | Pour créer le trust store, utilisez l'exemple de commande suivant :<pre>TrustStoreArn=`aws elbv2 create-trust-store --name acm-pca-trust-certs \<br />    --ca-certificates-bundle-s3-bucket $BucketName \<br />    --ca-certificates-bundle-s3-key acm-trust-store/ca-cert.pem --query 'TrustStores[].TrustStoreArn' --output text`</pre> | AWS DevOps, DevOps ingénieur | 
| Téléchargez les certificats clients. | Pour télécharger des certificats clients sur Amazon S3 pour des images Docker, utilisez l'exemple de commande suivant :<pre># for service one<br />aws s3 cp client_cert1.cert s3://$BucketName/serviceone/<br />aws s3 cp client_private-key1.pem s3://$BucketName/serviceone/<br /><br /># for service two<br />aws s3 cp client_cert2.cert s3://$BucketName/servicetwo/<br />aws s3 cp client_private-key2.pem s3://$BucketName/servicetwo/</pre> | AWS DevOps, DevOps ingénieur | 
| Modifiez l'écouteur. | Pour activer le protocole TLS mutuel sur l'ALB, modifiez les écouteurs HTTPS à l'aide des commandes suivantes :<pre>aws elbv2 modify-listener \<br />    --listener-arn $Service1ListenerArn \<br />    --certificates CertificateArn=$TLS_CERTIFICATE_ARN_TWO \<br />    --ssl-policy ELBSecurityPolicy-2016-08 \<br />    --protocol HTTPS \<br />    --port 8080 \<br />    --mutual-authentication Mode=verify,TrustStoreArn=$TrustStoreArn,IgnoreClientCertificateExpiry=false<br /><br />aws elbv2 modify-listener \<br />    --listener-arn $Service2ListenerArn \<br />    --certificates CertificateArn=$TLS_CERTIFICATE_ARN_TWO \<br />    --ssl-policy ELBSecurityPolicy-2016-08 \<br />    --protocol HTTPS \<br />    --port 8090 \<br />    --mutual-authentication Mode=verify,TrustStoreArn=$TrustStoreArn,IgnoreClientCertificateExpiry=false<br /></pre>Pour plus d'informations, consultez [la section Configuration du protocole TLS mutuel sur un Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/configuring-mtls-with-elb.html) Balancer dans AWS la documentation. | AWS DevOps, DevOps ingénieur | 

### Mettre à jour les services
<a name="update-the-services"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour la définition de tâche Amazon ECS. | Pour mettre à jour la définition de tâche Amazon ECS, modifiez le `image` paramètre dans la nouvelle révision.Pour obtenir les valeurs des services respectifs, mettez à jour les définitions de tâches avec le nouvel URI des images Docker que vous avez créé lors des étapes précédentes : ou `echo $ECRRepositoryServiceOneUri` `echo $ECRRepositoryServiceTwoUri`<pre><br />    "containerDefinitions": [<br />        {<br />            "name": "nginx",<br />            "image": "public.ecr.aws/nginx/nginx:latest",   # <----- change to new Uri<br />            "cpu": 0,</pre>Pour plus d'informations, consultez la section [Mise à jour d'une définition de tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html) à l'aide de la console dans la AWS documentation.  | AWS DevOps, DevOps ingénieur | 
| Mettez à jour le service Amazon ECS. | Mettez à jour le service avec la dernière définition de tâche. Cette définition de tâche est le modèle pour les images Docker nouvellement créées, et elle contient le certificat client requis pour l'authentification TLS mutuelle.  Pour mettre à jour le service, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)Répétez les étapes pour l'autre service. | Administrateur AWS, AWS DevOps, DevOps ingénieur | 

### Accédez à l'application
<a name="access-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez l'URL de l'application. | Utilisez la console Amazon ECS pour consulter la tâche. Lorsque le statut de la tâche est passé à En **cours d'exécution**, sélectionnez la tâche. Dans la section **Tâche**, copiez l'ID de la tâche. | Administrateur AWS, AWS DevOps | 
| Testez votre application. | Pour tester votre application, utilisez ECS Exec pour accéder aux tâches.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html) | Administrateur AWS, AWS DevOps | 

## Ressources connexes
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-resources"></a>

**Documentation Amazon ECS**
+ [Création d'une définition de tâche Amazon ECS à l'aide de la console](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html)
+ [Création d'une image de conteneur à utiliser sur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html)
+ [Clusters Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)
+ [Amazon ECS pour AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html#create-container-image-next-steps)
+ [Bonnes pratiques de mise en réseau d’Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-best-practices.html)
+ [Paramètres de définition du service Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html)

**Autres AWS ressources**
+ [Comment utiliser AWS une autorité de certification privée pour configurer les MTL sur l'Application Load Balancer ?](https://repost.aws/knowledge-center/elb-alb-configure-private-ca-mtls) (AWS re:Post)

## Informations supplémentaires
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-additional"></a>

**Modification du Dockerfile******

Le code suivant montre les commandes que vous modifiez dans le Dockerfile pour le service 1 :

```
FROM public.ecr.aws/nginx/nginx:latest
WORKDIR /usr/share/nginx/html
RUN echo "Returning response from Service 1: Ok" > /usr/share/nginx/html/index.html
ADD client_cert1.cert client_private-key1.pem /usr/local/share/ca-certificates/
RUN chmod -R 400 /usr/local/share/ca-certificates/
```

Le code suivant montre les commandes que vous modifiez dans le Dockerfile pour le service 2 :

```
FROM public.ecr.aws/nginx/nginx:latest
WORKDIR /usr/share/nginx/html
RUN echo "Returning response from Service 2: Ok" > /usr/share/nginx/html/index.html
ADD client_cert2.cert client_private-key2.pem /usr/local/share/ca-certificates/
RUN chmod -R 400 /usr/local/share/ca-certificates/
```

Si vous créez les images Docker avec CodeBuild, le `buildspec` fichier utilise le numéro de CodeBuild version pour identifier de manière unique les versions de l'image en tant que valeur de balise. Vous pouvez modifier le `buildspec` fichier en fonction de vos besoins, comme indiqué dans le code `buildspec ` personnalisé suivant : 

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $ECR_REPOSITORY_URI
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
        # change the S3 path depending on the service
      - aws s3 cp s3://$YOUR_S3_BUCKET_NAME/serviceone/ $CodeBuild_SRC_DIR/ --recursive 
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $ECR_REPOSITORY_URI:latest .
      - docker tag $ECR_REPOSITORY_URI:latest $ECR_REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $ECR_REPOSITORY_URI:latest
      - docker push $ECR_REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      # for ECS deployment reference
      - printf '[{"name":"%s","imageUri":"%s"}]' $CONTAINER_NAME $ECR_REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json   

artifacts:
  files:
    - imagedefinitions.json
```