J'ai une distribution Amazon CloudFront et je dois me conformer à l'obligation réglementaire de mon organisation d'utiliser Domain Name System Security Extensions (DNSSEC).
Brève description
Le domaine CloudFront par défaut cloudfront.net n'autorise pas DNSSEC. Pour activer DNSSEC pour votre domaine, vous devez d'abord créer un jeu d'enregistrements de ressources DNSKEY. Cependant, étant donné qu'AWS gère les enregistrements DNS pour les domaines CloudFront, vous ne pouvez pas configurer d'enregistrement DNSKEY. Cela signifie que vous ne pouvez pas activer directement DNSSEC pour un domaine CloudFront. Vous devez plutôt l'activer via un domaine alternatif.
Si votre organisation requiert l'utilisation de DNSSEC, bloquez d'abord l'accès à la distribution depuis le domaine CloudFront. Activez ensuite DNSSEC sur un nom de domaine alternatif ou un enregistrement de nom canonique (CNAME) associé à la distribution CloudFront.
Résolution
Bloquer l'accès depuis CloudFront
Pour bloquer toutes les requêtes dont le domaine cloudfront.net figure dans l'en-tête de l'hôte, utilisez AWS WAF ou une fonction.
Utiliser AWS WAF
Utilisez une règle AWS WAF qui bloque l'un des types de requêtes suivants :
- En-tête d'hôte qui se termine par cloudfront.net.
- Toutes les requêtes contenant le domaine de la distribution (comme d123abc.cloudfront.net) dans un en-tête unique.
Utiliser une fonction
Utilisez une fonction CloudFront ou une fonction AWS Lambda@Edge pour bloquer toutes les requêtes dont la valeur dans l'en-tête de l'hôte se termine par cloudfront.net. Il est recommandé d'utiliser une fonction CloudFront en raison de son faible coût et de ses performances plus rapides.
L'exemple de fonction CloudFront suivant bloque les requêtes dont l'en-tête d'hôte contient le domaine CloudFront cloudfront.net :
function handler(event) {
var request = event.request;
// Extract the host header value
var host = request.headers.host.value;
// Check if the host header value ends with "cloudfront.net"
if (host.endsWith('cloudfront.net')) {
// Return a response to block the request
return {
statusCode: 403,
statusDescription: 'Forbidden',
headers: {
'content-type': {
value: 'text/plain'
}
},
body: 'Access to this resource is forbidden.'
};
}
// Allow the request to proceed
return request;
}
Activer DNSSEC sur un nom de domaine alternatif
Après avoir bloqué l'accès depuis le domaine CloudFront, vous pouvez activer DNSSEC sur un nom de domaine alternatif (CNAME). Pour ce faire, suivez les étapes décrites dans section Activation de la signature DNSSEC et établissement d'une chaîne de confiance.
Tester votre domaine
Pour vérifier que le protocole DNSSEC fonctionne correctement avec votre domaine, utilisez l'analyseur DNSSEC sur le site Web de Verisign.