Cette page présente l'authentification d'origine privée et explique comment l'utiliser avec Cloud CDN.
L'authentification d'origine privée permet à Cloud CDN d'accéder à long terme aux ressources des buckets Amazon S3 privés ou d'autres stores d'objets compatibles. L'utilisation d'origines privées empêche les clients de contourner Cloud CDN et d'accéder directement à votre origine.
Cette fonctionnalité est compatible avec Cloud CDN, que vous utilisiez un équilibreur de charge d'application externe global ou un équilibreur de charge d'application classique.
L'authentification de l'origine privée est orientée origine, tandis que les URL signées et les cookies signés sont orientés client. Vous pouvez activer les deux pour un même contenu. L'authentification de l'origine privée limite l'accès non-CDN à vos origines et à votre contenu. Les URL et les cookies signés contrôlent quels utilisateurs sont autorisés à accéder à Cloud CDN.
Avant de commencer
Créez une clé HMAC (Hash-based Message Authentication Code) pour authentifier les requêtes et associez-la à un compte de service. Notez la clé d'accès et le secret.
Consultez Accéder à AWS à l'aide de vos identifiants AWS : accès programmatique dans la documentation AWS.
Configurez un équilibreur de charge avec le backend externe.
Si votre store d'objets attend une valeur particulière pour l'en-tête
Host
de la requête HTTP, assurez-vous qu'il est configuré dans le service de backend. Si vous ne configurez pas d'en-tête de requête personnalisé, le service de backend conserve l'en-têteHost
utilisé par le client pour se connecter à l'équilibreur de charge d'application externe.Pour connaître les étapes de configuration, consultez Utiliser des en-têtes de requêtes personnalisés. Pour obtenir un exemple spécifique, consultez la page Configurer un équilibreur de charge avec un backend externe.
Si nécessaire, installez la dernière version de la Google Cloud CLI :
gcloud components update
Configurer l'authentification pour les origines privées
Pour configurer l'authentification d'origine privée, suivez les instructions ci-dessous :
Console
Dans la console Google Cloud , accédez à la page Cloud CDN.
Cliquez sur le nom de l'origine que vous souhaitez configurer. L'origine doit être de type Origine personnalisée.
Sur la page Détails de l'origine, cliquez sur le bouton Modifier.
Pour accéder à la section Règles d'hôte et de chemin d'accès, cliquez sur Suivant.
Pour accéder à la section Performances du cache, cliquez sur Suivant.
Dans la section Authentification de l'origine privée, sélectionnez Authentifier les requêtes auprès de cette origine avec la version 4 d'AWS Signature. Indiquez ensuite les informations suivantes :
- ID de clé : clé d'accès à votre bucket Amazon S3 ou à tout autre store d'objets compatible.
- Clé : clé secrète utilisée pour l'authentification auprès du store d'objets. Si vous utilisez un bucket Cloud Storage privé, spécifiez la clé HMAC.
- Version de la clé : nom unique représentant la version de la clé.
- Région : région dans laquelle se trouve votre store d'objets (par exemple,
us-east-1
).
Cliquez sur OK.
gcloud
Exportez la configuration du backend pour votre origine privée dans un fichier YAML à l'aide de la commande
gcloud compute backend-services export
:gcloud compute backend-services export BACKEND_SERVICE_NAME \ [--destination=DESTINATION]
Remplacez
DESTINATION
par le nom du fichier YAML, par exemplemy-private-origin.yaml
.Pour authentifier vos requêtes de backend à l'aide de la clé HMAC, spécifiez ces options de configuration supplémentaires dans la section
securitySettings
debackendServices
:securitySettings: awsV4Authentication: accessKeyId: ACCESS_KEY_ID accessKey: ACCESS_KEY [accessKeyVersion: ACCESS_KEY_VERSION] originRegion: REGION …]
Remplacez les éléments suivants :
ACCESS_KEY_ID
: ID de la clé d'accès HMACACCESS_KEY
: clé d'accès HMACACCESS_KEY_VERSION
(facultatif) : nom unique que vous pouvez définir pour représenter la version de cléREGION
: région valide pour votre fournisseur de stockage Pour Amazon S3, la valeur n'est pas une région Google Cloud.
L'extrait suivant montre le contenu d'un exemple de fichier
my-private-origin.yaml
:name: shopping-cart-services backends: - description: cart-backend-1 group: 'https://www.googleapis.com/compute/v1/projects/my-project-id/global/networkEndpointGroups/my-network-origin-group' securitySettings: awsV4Authentication: accessKeyId: AKIDEXAMPLE accessKey: c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9 accessKeyVersion: prod-access-key-v1.2 originRegion: us-east-2
Pour mettre à jour votre origine privée, importez la configuration dans votre service de backend à l'aide de la commande
gcloud compute backend-services import
:gcloud compute backend-services import BACKEND_SERVICE_NAME \ [--source=SOURCE]
Remplacez
SOURCE
par le nom du fichier YAML.
API
Pour authentifier vos requêtes de backend à l'aide de la clé HMAC, spécifiez ces options de configuration supplémentaires dans la section securitySettings
de backendServices
.
Utilisez l'appel d'API Method: backendServices.insert
ou Method: backendServices.update
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
Ajoutez l'extrait suivant au corps de la requête JSON :
securitySettings: { awsV4Authentication: { accessKeyId: ACCESS_KEY_ID, accessKey: ACCESS_KEY, [accessKeyVersion: ACCESS_KEY_VERSION], originRegion: REGION } }
Remplacez les éléments suivants :
ACCESS_KEY_ID
: ID de la clé d'accès HMACACCESS_KEY
: clé d'accès HMACACCESS_KEY_VERSION
(facultatif) : nom unique que vous pouvez définir pour représenter la version de cléREGION
: région valide pour votre fournisseur de stockage Pour Amazon S3, la valeur n'est pas une région Google Cloud.
L'extrait suivant montre le contenu d'un exemple de corps de requête JSON :
securitySettings: { awsV4Authentication: { accessKeyId: "AKIDEXAMPLE", accessKey: "c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9", accessKeyVersion: "prod-access-key-v1.2", originRegion: "us-east-2" } }
Le nom du service est automatiquement défini sur s3
pour créer la signature.
Une fois ces configurations en place, Cloud CDN génère un en-tête d'autorisation HTTP pour toutes les requêtes envoyées à votre origine.
Mettre en cache les réponses authentifiées de manière privée
Nous vous conseillons de vous assurer que le contenu authentifié de manière privée est mis en cache par Cloud CDN.
Pour ce faire, définissez le mode de cache sur Forcer la mise en cache de tous les contenus et spécifiez une valeur TTL afin que tout le contenu diffusé à partir de l'origine soit mis en cache.
Si vous ne souhaitez pas forcer la mise en cache de tout le contenu de la même manière, définissez le mode de cache sur Utiliser les paramètres d'origine basés sur les en-têtes Cache-Control ou Mettre en cache le contenu statique, et assurez-vous que l'en-tête Cache-Control
est correctement défini sur le contenu diffusé depuis votre origine.