Utiliser un bucket privé compatible avec Amazon S3 comme origine

Cette page explique comment connecter Media CDN à des réseaux privés les buckets compatibles avec Amazon S3 via Amazon Simple Storage Service (Amazon S3) et AWS Signature version 4. Media CDN n'est pas compatible avec la version 4a d'AWS Signature.

Media CDN est compatible avec AWS Signature version 4 pour authentifier les requêtes d'origine. Vous pouvez utiliser cette fonctionnalité pour connecter Media CDN vers vos buckets privés compatibles avec Amazon S3 assurez-vous que votre contenu n'est partagé qu'avec Media CDN. Vous pouvez également activer l'authentification client pour plus de défense en profondeur. Pour en savoir plus, consultez la page Utiliser des requêtes signées.

Avant de commencer

Vérifiez que vous disposez des ressources suivantes:

  • Un bucket Amazon S3 privé

  • Un compte utilisateur AWS IAM dédié pour accéder à l'instance privée précédente Bucket Amazon S3. Assurez-vous que le bucket accorde l'autorisation s3:getObject l'autorisation d'accès au compte utilisateur AWS IAM. Pour en savoir plus sur configuration de l'accès à votre bucket Amazon S3, consultez Gestion de l'authentification et des accès dans Amazon S3

  • ID de clé d'accès AWS et clé d'accès secrète AWS pour le compte utilisateur AWS IAM dédié. Pour en savoir plus, consultez Gérer les clés d'accès pour les utilisateurs IAM

  • Si vous n'avez pas encore utilisé Secret Manager, configurez Secret Manager.

Créer un agent de service pour Media CDN

Pour créer un agent de service pour Media CDN, utilisez la Commande gcloud beta services identity create

gcloud

gcloud beta services identity create \
    --project PROJECT_ID \
    --service=networkservices.googleapis.com

Remplacez PROJECT_ID par l'ID du projet.

Pour en savoir plus, consultez la section Déclencher la création d'un agent de service.

Stocker les clés d'accès dans Secret Manager

Suivez ces étapes pour créer un secret dans Secret Manager.

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur Créer un secret.

  3. Dans la section Informations sur le secret, procédez comme suit:

    1. Dans le champ Nom, saisissez le nom secret, par exemple aws-access-key-id.

    2. Dans la section Valeur du secret, ignorez le champ Importer un fichier.

    3. Dans le champ Valeur du secret, saisissez la clé d'accès secrète AWS.

  4. Ignorez les sections restantes.

  5. Cliquez sur Créer un secret.

gcloud

Assurez-vous d'utiliser la version 402.0.0 ou ultérieure de la Google Cloud CLI. Sur Compute Engine ou Google Kubernetes Engine (GKE), vous devez s'authentifier avec le champ d'application Cloud Platform.

gcloud secrets create SECRET_NAME \
    --replication-policy="automatic" \
    --data-file="PATH_TO_AWS_SECRET_ACCESS_KEY"

Remplacez les éléments suivants :

  • SECRET_NAME: nom de votre secret, tel que aws-access-key-id
  • PATH_TO_AWS_SECRET_ACCESS_KEY: chemin d'accès à la valeur de votre clé d'accès secrète AWS

Pour en savoir plus sur l'ajout de versions de secret, consultez Ajoutez une version de secret.

Attribuer le rôle d'accès Secret Manager

Procédez comme suit pour accorder au Rôle d'accesseur de secrets Secret Manager (roles/secretmanager.secretAccessor) au service Media CDN Google Cloud.

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Sélectionnez le secret.
  3. Sélectionnez Autorisations, puis Accorder l'accès. La La boîte de dialogue Accorder l'accès s'affiche.
  4. Dans la section Ajouter des comptes principaux, saisissez le compte de service Media CDN dans Nouveau champ "Comptes principaux" comme suit:
    service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

    Remplacez PROJECT_NUMBER par votre numéro de projet.

  5. Dans la section Attribuer des rôles, sous Sélectionnez un rôle, sélectionnez Secret Manager, puis sélectionnez Accesseur de secrets Secret Manager
  6. Cliquez sur Enregistrer.

gcloud

gcloud secrets add-iam-policy-binding \
projects/PROJECT_NUMBER/secrets/SECRET_NAME \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

Remplacez les éléments suivants :

  • PROJECT_NUMBER : votre numéro de projet
  • SECRET_NAME: nom de votre secret

Configurer Media CDN pour qu'il s'authentifie auprès de votre bucket d'origine externe

Console

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Cliquez sur l'onglet Origines.

  3. Cliquez sur le nom de l'origine que vous souhaitez configurer.

    La page Détails de l'origine de la mise en cache périphérique s'ouvre.

  4. Cliquez sur le bouton Modifier.

  5. Sous Adresse d'origine, sélectionnez Spécifier un nom de domaine complet ou une adresse IP, puis saisissez le nom de domaine complet ou l'adresse IP.

  6. Dans la section Authentification de l'origine privée, sélectionnez Authentifier Requête Media CDN vers cette origine avec la signature AWS 4

  7. Spécifiez les informations suivantes :

    • ID de clé: votre ID de clé d'accès AWS avec des autorisations de lecture pour votre origine
    • Référencer un secret: l'ID de votre clé d'accès Secret Manager et sa version. Vous pouvez sélectionner un ID existant, le saisir manuellement, ou créez-en un et sélectionnez-le.
    .
    • Region (Région) : région dans laquelle se trouve votre bucket Amazon S3 situées dans, par exemple, us-east-1
  8. Dans le champ Protocole, sélectionnez HTTPS.

  9. Cliquez sur Mettre à jour l'origine.

gcloud

  1. Pour exporter la configuration actuelle de votre service dans un fichier YAML, exécutez la commande gcloud edge-cache services export:

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Remplacez les éléments suivants :

    • SERVICE_NAME: nom du Service Media CDN
    • FILENAME: nom du fichier YAML
  2. Dans Cloud Shell, modifiez le fichier YAML à l'aide d'un éditeur de texte.

  3. Mettez à jour le fichier YAML de sorte qu'il comporte les lignes suivantes:

    name: ORIGIN_NAME
    originAddress: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com"
    protocol: HTTPS
    awsV4Authentication:
      accessKeyId: "AWS_ACCESS_KEY_ID"
      secretAccessKeyVersion: "projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/SECRET_VERSION"
      originRegion: "S3_REGION"
    

    Remplacez les éléments suivants :

    • ORIGIN_NAME: nom que vous définissez pour cet élément origine
    • S3_BUCKET_NAME: nom de votre Bucket Amazon S3
    • S3_REGION: région dans laquelle Le bucket Amazon S3 se trouve, par exemple, dans us-east-1
    • AWS_ACCESS_KEY_ID: votre ID de clé d'accès AWS avec des autorisations de lecture sur votre origine
    • PROJECT_NUMBER : votre numéro de projet
    • SECRET_NAME: l'ID de votre clé d'accès dans Secret Manager
    • SECRET_VERSION: version du secret à utiliser.
  4. Configurez les réécritures d'hôte et de chemin d'accès pour les requêtes adressées à votre origine. Par exemple, pour mapper toutes les requêtes avec le préfixe de chemin d'accès /vod/, configurez un élément hostRewrite correspondant à l'élément originAddress répertorié dans le fichier YAML de votre EdgeCacheService. L'exemple de code suivant montre comment utiliser hostRewrite :

    name: SERVICE_NAME
    routeRules:
      - priority: 1
      - description: ROUTE_DESCRIPTION
        origin: ORIGIN_NAME
        matchRules:
        - prefixMatch: "/vod/"
        routeAction:
          urlRewrite:
            hostRewrite: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com"
            pathPrefixRewrite: "/"
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            defaultTtl: 3600s
    

    Remplacez SERVICE_NAME par le nom de votre EdgeCacheService.

    Pour en savoir plus, consultez Utilisez des backends de stockage tiers.

  5. Enregistrez le fichier YAML.

  6. Pour mettre à jour votre configuration, importez le fichier YAML.

    gcloud edge-cache origins import ORIGIN_NAME \
        --source=FILENAME.yaml
    

Une fois que vous avez configuré Media CDN pour qu'il s'authentifie auprès de votre bucket externe, Media CDN génère un en-tête d'autorisation HTTP pour toutes les requêtes envoyées à votre en-tête. Tous les paramètres de requête sont supprimés du calcul de la signature et de la requête vers votre origine.

Votre origine peut ajouter des en-têtes supplémentaires à vos réponses. Pour supprimer le des en-têtes de réponse avant de les diffuser aux clients, consultez la section Définir des en-têtes personnalisés. Pour en savoir plus sur la configuration des origines, consultez Connectivité et blindage de l'origine.