Usar un segmento privado compatible con Amazon S3 como origen

En esta página se describe cómo conectar Media CDN a segmentos privados compatibles con Amazon S3 mediante Amazon Simple Storage Service (Amazon S3) y AWS Signature Version 4. Media CDN no admite la versión 4a de la firma de AWS.

Media CDN admite la versión 4 de la firma de AWS para autenticar las solicitudes de origen. Puedes usar esta función para conectar Media CDN a tus segmentos privados compatibles con Amazon S3 y asegurarte de que tu contenido se comparte solo con Media CDN. También puedes habilitar la autenticación de cliente para reforzar la defensa en profundidad. Para obtener más información, consulta Usar solicitudes firmadas.

Antes de empezar

Comprueba que tienes los siguientes recursos:

  • Un segmento de Amazon S3 privado que cumpla las reglas de nomenclatura.

  • Una cuenta de usuario de AWS IAM específica para acceder al segmento de Amazon S3 privado anterior. Asegúrate de que el bucket conceda el permiso s3:getObject a la cuenta de usuario de AWS IAM. Para obtener más información sobre cómo configurar el acceso a tu segmento de Amazon S3, consulta Gestión de identidades y accesos en Amazon S3.

  • El ID de clave de acceso de AWS y la clave de acceso secreta de AWS de la cuenta de usuario de IAM de AWS dedicada. Para obtener más información, consulta Gestionar claves de acceso de usuarios de IAM.

  • Si no has usado Secret Manager antes, configura Secret Manager.

Crear un agente de servicio para Media CDN

Para crear un agente de servicio para Media CDN, usa el comando gcloud beta services identity create.

gcloud

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

Sustituye PROJECT_ID por el ID del proyecto.

Para obtener más información, consulta Activar la creación de agentes de servicio.

Almacenar claves de acceso en Secret Manager

Sigue estos pasos para crear un secreto en Secret Manager.

Consola

  1. En la Google Cloud consola, ve a la página Secret Manager.

    Ir a Secret Manager

  2. En la página Secret Manager, haz clic en Crear secreto.

  3. En la sección Detalles del secreto, haz lo siguiente:

    1. En el campo Nombre, introduce un nombre para el secreto (por ejemplo, aws-access-key-id).

    2. En la sección Valor del secreto, omite el campo Subir archivo.

    3. En el campo Valor secreto, introduce la clave de acceso secreta de AWS.

  4. Sáltate las secciones restantes.

  5. Haz clic en Crear secreto.

gcloud

Asegúrate de que estás usando la versión 402.0.0 o una posterior de Google Cloud CLI. En Compute Engine o Google Kubernetes Engine (GKE), debes autenticarte con el ámbito cloud-platform.

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

Haz los cambios siguientes:

  • SECRET_NAME: el nombre de tu secreto, como aws-access-key-id
  • PATH_TO_AWS_SECRET_ACCESS_KEY: la ruta al valor de tu clave de acceso secreta de AWS

Para obtener información sobre cómo añadir versiones de secretos, consulta Añadir una versión de secreto.

Conceder el rol de acceso a Secret Manager

Sigue estos pasos para asignar el rol Permiso para acceder a los recursos de Secret Manager (roles/secretmanager.secretAccessor) a la cuenta de servicio de Media CDN.

Consola

  1. En la Google Cloud consola, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Selecciona el secreto.
  3. Selecciona Permisos y, a continuación, Conceder acceso. Aparecerá el cuadro de diálogo Dar acceso.
  4. En la sección Añadir principales, introduce la cuenta de servicio de Media CDN en el campo Principales nuevos de la siguiente manera:
    service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

    Sustituye PROJECT_NUMBER por el número de tu proyecto.

  5. En la sección Asignar roles, en Selecciona un rol, elige Secret Manager y, a continuación, selecciona Permiso para acceder a los recursos de Secret Manager.
  6. Haz clic en Guardar.

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"

Haz los cambios siguientes:

  • PROJECT_NUMBER: tu número de proyecto
  • SECRET_NAME: el nombre del secreto

Configurar Media CDN para autenticar el acceso a tu bucket de origen externo

Consola

  1. En la Google Cloud consola, ve a la página Media CDN.

    Ir a Media CDN

  2. Haga clic en la pestaña Orígenes.

  3. Haga clic en el nombre del origen que quiera configurar.

    Se abrirá la página Detalles del origen de almacenamiento en caché perimetral.

  4. Haz clic en el botón Edit (Editar).

  5. En Dirección de origen, elija Especificar un FQDN o una dirección IP y, a continuación, introduzca el FQDN o la dirección IP.

  6. En la sección Autenticación de origen privado, seleccione Autenticar la solicitud de Media CDN a este origen con la versión 4 de la firma de AWS.

  7. Especifica la siguiente información:

    • ID de clave: ID de clave de acceso de AWS con permisos de lectura en tu origen.
    • Referencia a un secreto: el ID de tu clave de acceso en Secret Manager y su versión. Puede seleccionar un ID que ya tenga, introducirlo manualmente o crear uno y seleccionarlo.
    • Región: la región en la que se encuentra tu segmento de Amazon S3, como us-east-1
  8. En Protocolo, selecciona HTTPS.

  9. Haz clic en Actualizar origen.

gcloud

  1. Para exportar la configuración actual de tu servicio a un archivo YAML, ejecuta el comando gcloud edge-cache services export:

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

    Haz los cambios siguientes:

    • SERVICE_NAME: el nombre del servicio de Media CDN
    • FILENAME: el nombre del archivo YAML
  2. En Cloud Shell, usa un editor de texto para editar el archivo YAML.

  3. Actualiza el archivo YAML para que tenga las siguientes líneas:

    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"
    

    Haz los cambios siguientes:

    • ORIGIN_NAME: un nombre que hayas asignado a este origen
    • S3_BUCKET_NAME: el nombre de tu segmento de Amazon S3
    • S3_REGION: la región en la que se encuentra tu segmento de Amazon S3, como us-east-1
    • AWS_ACCESS_KEY_ID: el ID de tu clave de acceso de AWS con permisos de lectura en tu origen
    • PROJECT_NUMBER: tu número de proyecto
    • SECRET_NAME: el ID de tu clave de acceso en Secret Manager
    • SECRET_VERSION: la versión del secreto que se va a usar
  4. Configura la reescritura de host y ruta para las solicitudes a tu origen. Por ejemplo, para asignar todas las solicitudes con el prefijo de ruta /vod/, configura un hostRewrite que corresponda al originAddress que aparece en el archivo YAML de tu EdgeCacheService. En el siguiente código de ejemplo se muestra cómo usar 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
    

    Sustituye SERVICE_NAME por el nombre de tu EdgeCacheService.

    Para obtener más información, consulta Usar back-ends de almacenamiento de terceros.

  5. Guarda el archivo YAML.

  6. Para actualizar la configuración, importa el archivo YAML.

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

Una vez que haya configurado Media CDN para que se autentique en su contenedor externo, Media CDN generará un encabezado de autorización HTTP para todas las solicitudes a su encabezado. Todos los parámetros de consulta se eliminan del cálculo de la firma y de la solicitud a tu origen.

Es posible que tu origen añada encabezados adicionales a tus respuestas. Para quitar los encabezados de respuesta antes de enviarlos a los clientes, consulta Definir encabezados personalizados. Para obtener más información sobre cómo configurar orígenes, consulta Conectividad y protección del origen.