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.
Restreindre l'accès aux équilibreurs de charge des applications
Dans le cas d'une application Web ou d'un autre contenu diffusé par un Application Load Balancer connecté à Internet CloudFront , Elastic Load Balancing peut mettre en cache des objets et les diffuser directement aux utilisateurs (spectateurs), réduisant ainsi la charge sur votre Application Load Balancer. Un équilibreur de charge connecté à Internet a un DNS nom pouvant être résolu publiquement et achemine les demandes des clients vers des cibles via Internet.
CloudFrontpeut également contribuer à réduire la latence et même à absorber certaines attaques par déni de service distribué (DDoS).
Toutefois, si les utilisateurs peuvent contourner CloudFront et accéder directement à votre Application Load Balancer, vous ne bénéficierez pas de ces avantages. Mais vous pouvez configurer Amazon CloudFront et votre Application Load Balancer pour empêcher les utilisateurs d'accéder directement à l'Application Load Balancer. Cela permet aux utilisateurs d'accéder à l'Application Load Balancer uniquement par le biais de celui-ci CloudFront, ce qui vous permet de bénéficier des avantages de son utilisation. CloudFront
Pour empêcher les utilisateurs d'accéder directement à un Application Load Balancer et n'autoriser l'accès que par ce biais CloudFront, procédez comme suit :
-
Configurez CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes qu'il envoie à l'Application Load Balancer.
-
Configurez l'Application Load Balancer pour transférer uniquement les demandes contenant l'en-tête personnaliséHTTP.
-
(Facultatif) HTTPS Nécessite d'améliorer la sécurité de cette solution.
Pour plus d’informations, consultez les rubriques suivantes. Une fois ces étapes effectuées, les utilisateurs ne peuvent accéder à votre Application Load Balancer que via. CloudFront
Rubriques
- Configurer CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes
- Configurer un Application Load Balancer pour transférer uniquement les demandes contenant un en-tête spécifique
- (Facultatif) Améliorer la sécurité de cette solution
- (Facultatif) Limitez l'accès à l'origine en utilisant la liste de AWS préfixes -managed pour CloudFront
Configurer CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes
Vous pouvez configurer CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes qu'il envoie à votre origine (dans ce cas, un Application Load Balancer).
Important
Ce cas d'utilisation repose sur le fait de garder secrets le nom et la valeur de l'en-tête personnalisé. Si le nom et la valeur de l'en-tête ne sont pas secrets, d'autres HTTP clients peuvent potentiellement les inclure dans les demandes qu'ils envoient directement à l'Application Load Balancer. Cela peut faire en sorte que l'Application Load Balancer se comporte comme si les demandes provenaient d'une CloudFront autre source. Pour éviter cela, gardez le nom et la valeur de l'en-tête personnalisé secrets.
Vous pouvez configurer CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes d'origine à l'aide de la CloudFront console AWS CloudFormation, ou du CloudFront API.
- Pour ajouter un HTTP en-tête personnalisé (CloudFront console)
-
Dans la CloudFront console, utilisez le paramètre Origin Custom Headers dans les paramètres d'Origin. Entrez le nom de l'en-tête et sa valeur.
Note
En production, utilisez des noms et des valeurs d'en-tête générés aléatoirement. Traitez les noms et les valeurs d'en-tête comme des informations d'identification sécurisées, comme les noms d'utilisateur et les mots de passe.
Vous pouvez modifier le paramètre Origin Custom Headers lorsque vous créez ou modifiez l'origine d'une CloudFront distribution existante, et lorsque vous créez une nouvelle distribution. Pour plus d’informations, consultez Mettre à jour une distribution et Créer une distribution.
- Pour ajouter un HTTP en-tête personnalisé (AWS CloudFormation)
-
Dans un AWS CloudFormation modèle, utilisez la
OriginCustomHeaders
propriété, comme indiqué dans l'exemple suivant.Note
Le nom et la valeur de l'en-tête dans cet exemple n’existent qu'à des fins de démonstration. En production, utilisez des valeurs générées aléatoirement. Traitez le nom et la valeur de l'en-tête en tant qu’informations d'identification sécurisées, comme un nom d'utilisateur et un mot de passe.
AWSTemplateFormatVersion: '2010-09-09' Resources: TestDistribution: Type: 'AWS::CloudFront::Distribution' Properties: DistributionConfig: Origins: - DomainName: app-load-balancer.example.com Id: Example-ALB CustomOriginConfig: OriginProtocolPolicy: https-only OriginSSLProtocols: - TLSv1.2 OriginCustomHeaders: - HeaderName: X-Custom-Header HeaderValue: random-value-1234567890 Enabled: 'true' DefaultCacheBehavior: TargetOriginId: Example-ALB ViewerProtocolPolicy: allow-all CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6 PriceClass: PriceClass_All ViewerCertificate: CloudFrontDefaultCertificate: 'true'
Pour plus d'informations, consultez l'origine et les OriginCustomHeaderpropriétés dans le guide de AWS CloudFormation l'utilisateur.
- Pour ajouter un HTTP en-tête personnalisé (CloudFront API)
-
Dans le CloudFront API, utilisez l'
CustomHeaders
objet qui se trouve à l'intérieurOrigin
. Pour plus d'informations, consultez CreateDistributionet consultez UpdateDistributionla CloudFront APIréférence Amazon, ainsi que la documentation pour votre client SDK ou pour un autre API client.
Il existe certains noms d'en-tête que vous ne pouvez pas spécifier en tant qu'en-têtes personnalisés d'origine. Pour de plus amples informations, veuillez consulter En-têtes personnalisés qui ne CloudFront peuvent pas être ajoutés aux demandes d'origine.
Configurer un Application Load Balancer pour transférer uniquement les demandes contenant un en-tête spécifique
Après avoir configuré CloudFront pour ajouter un HTTP en-tête personnalisé aux demandes qu'il envoie à votre Application Load Balancer (voir la section précédente), vous pouvez configurer l'équilibreur de charge pour ne transférer que les demandes contenant cet en-tête personnalisé. Pour ce faire, ajoutez une nouvelle règle et modifiez la règle par défaut dans l’écouteur de votre équilibreur de charge.
Prérequis
Pour utiliser les procédures suivantes, vous avez besoin d'un Application Load Balancer avec au moins un écouteur. Si vous n'en avez pas encore créé, reportez-vous à la section Créer un Application Load Balancer dans le guide de l'utilisateur pour les Application Load Balancers.
Les procédures suivantes modifient un HTTPS écouteur. Vous pouvez utiliser le même processus pour modifier un HTTP écouteur.
Pour mettre à jour les règles dans un écouteur d'Application Load Balancer
-
Ajoutez une nouvelle règle. Suivez les instructions de la section Ajouter une règle, avec les modifications suivantes :
Ajoutez la règle à l'équilibreur de charge qui est à l'origine de votre CloudFront distribution.
Pour Ajouter une condition, choisissez l'en-tête HTTP. Spécifiez le nom et la valeur de l'HTTPen-tête que vous avez ajoutés en tant qu'en-tête personnalisé d'origine CloudFront.
Pour Ajouter une action, choisissez Transférer vers. Choisissez le groupe cible dans lequel vous souhaitez transférer les demandes.
-
Modifiez la règle par défaut dans l'écouteur de votre équilibreur de charge. Suivez les instructions de la section Modifier une règle, avec les modifications suivantes :
Modifiez la règle par défaut de l'équilibreur de charge qui est à l'origine de votre CloudFront distribution.
Supprimez l'action par défaut, puis pour Ajouter une action, choisissez Renvoyer une réponse fixe.
Pour le Code de réponse, saisissez
403
.Pour Corps de réponse, saisissez
Access denied
.
Une fois ces étapes terminées, votre écouteur d'équilibreur de charge applique deux règles. Une règle transmet les demandes contenant l'HTTPen-tête (demandes provenant de CloudFront). L'autre règle envoie une réponse fixe à toutes les autres demandes (demandes qui ne proviennent pas de CloudFront).
Vous pouvez vérifier que la solution fonctionne en envoyant une demande à votre CloudFront distribution et une autre à votre Application Load Balancer. La demande de CloudFront renvoi de votre application Web ou de votre contenu, et celle envoyée directement à votre Application Load Balancer, renvoient une 403
réponse avec le message en texte brut. Access denied
(Facultatif) Améliorer la sécurité de cette solution
Pour améliorer la sécurité de cette solution, vous pouvez configurer votre CloudFront distribution pour qu'elle soit toujours utilisée HTTPS lors de l'envoi de requêtes à votre Application Load Balancer. N'oubliez pas que cette solution ne fonctionne que si vous gardez le nom et la valeur de l'en-tête personnalisé secrètes. Son utilisation HTTPS peut aider à empêcher un espion de découvrir le nom et la valeur de l'en-tête. Nous vous recommandons également de faire changer périodiquement le nom et la valeur de l'en-tête.
Utilisation HTTPS pour les demandes d'origine
Pour configurer CloudFront l'utilisation HTTPS pour les demandes d'origine, définissez le paramètre Origin Protocol Policy sur HTTPSUniquement. Ce paramètre est disponible dans la CloudFront console AWS CloudFormation, et dans le CloudFront API. Pour de plus amples informations, veuillez consulter Protocole (origines personnalisées uniquement).
Ce qui suit s'applique également lorsque vous configurez CloudFront pour les utiliser HTTPS pour les demandes d'origine :
-
Vous devez configurer CloudFront pour transmettre l'
Host
en-tête à l'origine avec la politique de demande d'origine. Vous pouvez utiliser la politique de AllViewer gestion des demandes d'origine. -
Assurez-vous que votre Application Load Balancer possède un HTTPS écouteur (comme indiqué dans la section précédente). Pour plus d'informations, voir Création d'un HTTPS écouteur dans le Guide de l'utilisateur pour les équilibreurs de charge d'application. L'utilisation d'un HTTPS écouteur nécessite que vous disposiez d'un TLS certificatSSL/correspondant au nom de domaine acheminé vers votre Application Load Balancer.
-
SSL/les TLS certificats pour ne CloudFront peuvent être demandés (ou importés) que dans le
us-east-1
Région AWS fichier in AWS Certificate Manager (ACM). Comme il CloudFront s'agit d'un service mondial, il distribue automatiquement le certificat de laus-east-1
région à toutes les régions associées à votre CloudFront distribution.-
Par exemple, si vous avez un Application Load Balancer (ALB) dans la
ap-southeast-2
région, vous devez configurer les TLS certificatsSSL/à la fois dans laap-southeast-2
région (pour utiliser HTTPS entre CloudFront et l'ALBorigine) et dans laus-east-1
région (pour une utilisation HTTPS entre les visualiseurs et CloudFront). Les deux certificats doivent correspondre au nom de domaine qui est acheminé vers votre Application Load Balancer. Pour de plus amples informations, veuillez consulter Région AWS pour AWS Certificate Manager.
-
-
Si les utilisateurs finaux (également appelés spectateurs ou clients) de votre application Web peuvent l'utiliserHTTPS, vous pouvez également configurer CloudFront pour préférer (ou même exiger) des HTTPS connexions de la part des utilisateurs finaux. Pour ce faire, utilisez le paramètre Stratégie de protocole d'utilisateur. Vous pouvez le configurer pour rediriger les utilisateurs finaux de HTTP vers HTTPS ou pour rejeter les demandes qui utilisentHTTP. Ce paramètre est disponible dans la CloudFront console AWS CloudFormation, et dans le CloudFront API. Pour de plus amples informations, veuillez consulter Viewer Protocol Policy.
Changer le nom et la valeur de l'en-tête
En plus de l'utiliserHTTPS, nous vous recommandons également de faire pivoter régulièrement le nom et la valeur de l'en-tête. Les étapes de haut niveau pour ce faire sont les suivantes :
-
Configurez CloudFront pour ajouter un HTTP en-tête personnalisé supplémentaire aux demandes qu'il envoie à l'Application Load Balancer.
-
Mettez à jour la règle d'écoute Application Load Balancer pour transférer les demandes contenant cet en-tête personnalisé supplémentaire. HTTP
-
Configurez CloudFront pour arrêter d'ajouter l'HTTPen-tête personnalisé d'origine aux demandes qu'il envoie à l'Application Load Balancer.
-
Mettez à jour la règle d'écoute Application Load Balancer pour arrêter de transférer les demandes contenant l'en-tête personnalisé d'origine. HTTP
Pour plus d'informations sur la réalisation de ces étapes, consultez les sections précédentes.
(Facultatif) Limitez l'accès à l'origine en utilisant la liste de AWS préfixes -managed pour CloudFront
Pour restreindre davantage l'accès à votre Application Load Balancer, vous pouvez configurer le groupe de sécurité associé à l'Application Load Balancer de manière à ce qu'il n'accepte que le trafic CloudFront provenant de pays où le service utilise AWS une liste de préfixes gérée. Cela empêche le trafic qui ne CloudFront provient pas d'atteindre votre Application Load Balancer au niveau de la couche réseau (couche 3) ou de la couche transport (couche 4).
Pour plus d'informations, consultez le billet de CloudFront blog « Limiter l'accès à vos origines à l'aide de la liste de préfixes AWS-managed » pour Amazon