Protección de recursos de Azure Content Delivery Network con la autenticación por tokens

Importante

Es una característica de Azure CDN Premium de Edgio solo. Para configurar reglas en Azure CDN de Microsoft se debe usar el motor de reglas estándar. Las reglas avanzadas no están disponibles para Azure CDN de Akamai. Para ver una comparación completa de las características de CDN, consulte Características de producto de Azure CDN.

Información general

La autenticación de tokens es un mecanismo que permite impedir que la red de entrega de contenido de Azure sirva recursos a clientes no autorizados. Normalmente esto se hace para evitar la vinculación activa de contenido, donde otro sitio web, como un panel de mensajes, usa los recursos sin permiso. La vinculación activa puede repercutir en los costos de la entrega de contenido. Al habilitar la autenticación de tokens en la red de entrega de contenido, las solicitudes se autentican mediante el servidor perimetral de red de entrega de contenido antes de que la red de entrega de contenido entregue el contenido.

Funcionamiento

La autenticación por tokens verifica que un sitio de confianza genera las solicitudes, para lo que se requiere que estas contengan un valor de token con información codificada sobre el solicitante. El contenido solo se proporciona al solicitante cuando la información codificada cumple los requisitos; de lo contrario, las solicitudes se deniegan. Puede configurar los requisitos mediante el uso de uno o varios de los siguientes parámetros:

  • País o región: permitir o denegar las solicitudes que se originan en los países o regiones especificados con su código de país o región.
  • Dirección URL: permitir solo las solicitudes que coinciden con el recurso o la ruta de acceso especificados.
  • Host: permitir o denegar las solicitudes que usan los hosts especificados en el encabezado de la solicitud.
  • Origen de referencia: permitir o denegar las solicitudes procedentes del origen de referencia especificado.
  • Dirección IP: permitir solo las solicitudes cuyo origen es una dirección IP específica o subred IP concretas.
  • Protocolo: permitir o denegar las solicitudes en función del protocolo usado para solicitar el contenido.
  • Fecha de expiración: asignar un período de fecha y hora para asegurarse de que un vínculo solo es válido durante un tiempo limitado.

Para obtener más información, vea los ejemplos de configuración detallados para cada parámetro en Configuración de la autenticación por tokens.

Importante

Si está habilitada la autorización de token en cualquier ruta de acceso de esta cuenta, el modo de caché estándar es el único modo que se puede usar para el almacenamiento en caché de la cadena de consulta. Para más información, vea Control del comportamiento del almacenamiento en caché de Azure Content Delivery Network con cadenas de consulta.

Arquitectura de referencia

En el diagrama de flujo de trabajo siguiente se describe cómo la red de entrega de contenido usa la autenticación de tokens para trabajar con la aplicación web.

Captura de pantalla del flujo de trabajo de autenticación de tokens de red de entrega de contenido.

Lógica de validación de tokens en el punto de conexión de red de entrega de contenido

En el diagrama de flujo siguiente se describe cómo Azure Content Delivery Network valida una solicitud de cliente cuando la autenticación de tokens está configurada en el punto de conexión de red de entrega de contenido.

Captura de pantalla de la lógica de validación de tokens de red de entrega de contenido.

Configuración de la autenticación por tokens

  1. En Azure Portal, vaya al perfil de red de entrega de contenido y seleccione Administrar para iniciar el portal complementario.

    Captura de pantalla del botón administrar el perfil de red de entrega de contenido.

  2. Mantenga el mouse sobre HTTP grande y después seleccione Token Auth (Autenticación por tokens) en el control flotante. Después puede configurar la clave y los parámetros de cifrado como sigue:

    1. Cree una o varias claves de cifrado. Una clave de cifrado distingue mayúsculas de minúsculas y puede contener cualquier combinación de caracteres alfanuméricos. No se permite ningún otro tipo de caracteres, incluidos espacios. La longitud máxima es de 250 caracteres. Para asegurarse de que las claves de cifrado sean aleatorias, se recomienda crearlas con la herramienta OpenSSL.

      La herramienta OpenSSL tiene la sintaxis siguiente:

      rand -hex <key length>

      Por ejemplo:

      OpenSSL> rand -hex 32

      Para evitar el tiempo de inactividad, cree un elemento principal y una clave de copia de seguridad. Una clave de copia de seguridad proporciona un acceso ininterrumpido a su contenido cuando se actualiza la clave principal.

    2. Escriba una clave de cifrado única en el cuadro Clave principal y, opcionalmente, escriba una clave de copia de seguridad en el cuadro Clave de copia de seguridad.

    3. Seleccione la versión de cifrado mínima para cada clave de la lista Minimum Encryption Version (Versión mínima de cifrado) y después seleccione Actualizar:

      • V2: indica que la clave se puede utilizar para generar tokens de versión 2.0 y 3.0. Use esta opción solo si está realizando la transición de una clave de cifrado de la versión 2.0 heredada a una clave de la versión 3.0.
      • V3: (recomendada) indica que la clave solo se puede utilizar para generar tokens de la versión 3.0.

      Captura de pantalla de la clave de configuración de autenticación del token de red de entrega de contenido.

    4. Use la herramienta de cifrado para configurar los parámetros de cifrado y generar un token. Con la herramienta de cifrado, puede permitir o denegar las solicitudes según la fecha de expiración, el país o región, el origen de referencia, el protocolo y la dirección IP del cliente (con cualquier combinación). Aunque no hay ningún límite en el número y la combinación de parámetros que se pueden combinar para formar un token, la longitud total de un token está limitada a 512 caracteres.

      Captura de pantalla de la herramienta de cifrado de red de entrega de contenido.

      Escriba los valores para uno o varios de los siguientes parámetros de cifrado en la sección Encrypt Tool (Herramienta de cifrado):

      Nombre de parámetro Descripción
      ec_expire Asigna una fecha de expiración a un token, tras la cual el token expira. Las solicitudes que se presenten después de la fecha de expiración se deniegan. Este parámetro utiliza una marca de tiempo UNIX, que se basa en el número de segundos transcurridos desde la época UNIX estándar de `1/1/1970 00:00:00 GMT`. (Puede usar herramientas en línea para la conversión entre la hora estándar y la hora UNIX).

      Por ejemplo, si desea que el token expire en la fecha 12/31/2016 12:00:00 GMT, introduzca el valor de marca de tiempo UNIX, 1483185600.

      ec_url_allow Permite adaptar tokens para un recurso o ruta de acceso concretos. Restringe el acceso a las solicitudes cuya dirección URL comience con una ruta de acceso relativa específica. Las direcciones URL distinguen mayúsculas de minúsculas. Incluya varias rutas de acceso separadas por comas y no agregue espacios. En función de los requisitos, puede configurar otros valores para proporcionar distintos niveles de acceso.

      Por ejemplo, para la dirección URL http://www.mydomain.com/pictures/city/strasbourg.png, estas solicitudes se permiten para los siguientes valores de entrada:

      • Valor de entrada `/`: se permiten todas las solicitudes.
      • Valor de entrada `/pictures`: se permiten las siguientes solicitudes:
        • `http://www.mydomain.com/pictures.png`
        • `http://www.mydomain.com/pictures/city/strasbourg.png`
        • `http://www.mydomain.com/picturesnew/city/strasbourgh.png`
      • Valor de entrada `/pictures/`: solo se permiten las solicitudes que contengan la ruta de acceso `/pictures/`. Por ejemplo, `http://www.mydomain.com/pictures/city/strasbourg.png`.
      • Valor de entrada `/pictures/city/strasbourg.png`: solo se permiten solicitudes para esta ruta de acceso y recurso específicos.
      ec_country_allow Solo permite solicitudes que se originen en uno o más países o regiones especificados. Se deniegan las solicitudes originadas en los demás países o regiones. Utilice un [código ISO 3166 de país o región](/previous-versions/azure/mt761717(v=azure.100)) de dos letras para cada país o región, sepárelos con una coma y no agregue espacios. Por ejemplo, si solo desea permitir el acceso desde Estados Unidos y Francia, escriba `US,FR`.
      ec_country_deny Deniega solicitudes que se originan en uno o más países o regiones especificados. Se permiten las solicitudes originadas en todos los demás países o regiones. La implementación es la misma que con el parámetro ec_country_allow. Si hay un código de país o región en los parámetros ec_country_allow y ec_country_deny, el parámetro ec_country_allow tiene prioridad.
      ec_ref_allow Solo se permiten solicitudes del origen de referencia especificado. Un origen de referencia identifica la dirección URL de la página web vinculada al recurso que se solicita. No incluya el protocolo en el valor del parámetro.

      Se permiten los siguientes tipos de entrada:

      • Un nombre de host o un nombre de host y una ruta de acceso.
      • Varios orígenes de referencia. Para agregar varios orígenes de referencia, sepárelos por comas y no agregue ningún espacio. Si especifica un valor para el origen de referencia, pero no se envía la información de este en la solicitud debido a alguna configuración del explorador, la solicitud se deniega de forma predeterminada.
      • Solicitudes en blanco o en las que falta información sobre el origen de referencia. De forma predeterminada, el parámetro ec_ref_allow bloquea estos tipos de solicitudes. Para permitir estas solicitudes, escriba el texto "falta" o escriba un valor en blanco (mediante el uso de una coma final).
      • Subdominios. Para permitir subdominios, escriba un asterisco (\*). Por ejemplo, para permitir todos los subdominios de `contoso.com`, escriba `*.contoso.com`.

      Por ejemplo, para permitir el acceso a las solicitudes de www.contoso.com, todos los subdominios de contoso2.com y las solicitudes sin origen de referencia o con un origen de referencia en blanco, introduzca www.contoso.com,*.contoso.com,missing.

      ec_ref_deny Deniega solicitudes del origen de referencia especificado. La implementación es la misma que con el parámetro ec_ref_allow. Si un origen de referencia está presente en los parámetros ec_ref_allow y ec_ref_deny, el parámetro ec_ref_allow tiene prioridad.
      ec_proto_allow Solo se permiten solicitudes del protocolo especificado. Los valores válidos son `http`, `https` o `http,https`.
      ec_proto_deny Deniega solicitudes del protocolo especificado. La implementación es la misma que con el parámetro ec_proto_allow. Si un protocolo está presente en los parámetros ec_proto_allow y ec_proto_deny, el parámetro ec_proto_allow tiene prioridad.
      ec_clientip Restringe el acceso a la dirección IP del solicitante especificado. Se admiten tanto el protocolo de Internet versión 4 (IPv4) como el protocolo de Internet versión 6 (IPv6). Puede especificar una única dirección IP de solicitud o direcciones IP asociadas a una subred específica. Por ejemplo, `11.22.33.0/22` permite solicitudes desde las direcciones IP 11.22.32.1 a 11.22.35.254.
    5. Cuando termine de especificar los valores de los parámetros de cifrado, seleccione una clave para cifrar (si ha creado una clave principal y una clave de copia de seguridad) en la lista Key To Encrypt (Clave para cifrar).

    6. Seleccione una versión de cifrado de la lista Encryption Version (Versión de cifrado): V2 para la versión 2 o V3 para la versión 3 (recomendado).

    7. Seleccione Cifrar para generar el token.

      Una vez generado el token, se muestra en el cuadro Generated Token (Token generado). Para usar el token, anéxelo como una cadena de consulta al final del archivo en la ruta de acceso de la dirección URL. Por ejemplo, http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.

    8. Opcionalmente, pruebe el token con la herramienta de descifrado para poder ver los parámetros del token. Pegue el valor del token en el cuadro Token to Decrypt (Token para descifrar). Seleccione la clave de cifrado que se usará en la lista Key To Decrypt (Clave para descifrar) y después seleccione Descifrar.

      Una vez descifrado el token, sus parámetros se muestran en el cuadro Parámetros originales.

    9. También puede personalizar el tipo de código de respuesta que se devuelve cuando se deniega una solicitud. Seleccione Habilitado y, después, seleccione el código de respuesta de la lista Código de respuesta. El Nombre de encabezado se establece automáticamente en Ubicación. Seleccione Guardar para implementar el nuevo código de respuesta. Para determinados códigos de respuesta, también debe especificar la dirección URL de la página de error en el cuadro Valor de encabezado. El código de respuesta 403 (Prohibido) está seleccionado de forma predeterminada.

  3. En HTTP Large (HTTP grandes), seleccione Motor de reglas. Utilice el motor de reglas para definir las rutas de acceso que se van a aplicar la característica, habilitar la característica de autenticación por tokens y habilitar otras funcionalidades relacionadas con la autenticación por tokens. Para más información, vea Referencia del motor de reglas.

    1. Seleccione una regla existente o cree una para definir el recurso o la ruta de acceso para los que desea aplicar la autenticación por tokens.

    2. Para habilitar la autenticación por tokens según una regla, seleccione Token Auth (Autenticación por tokens) en la lista Características y después seleccione Habilitada. Seleccione Actualizar si va a actualizar una regla o Agregar si va a crear una nueva.

      Captura de pantalla del ejemplo de autenticación de token del motor de reglas de red de entrega de contenido.

  4. En el motor de reglas también puede habilitar otras características relacionadas con la autenticación por tokens. Para habilitar cualquiera de las siguientes características, selecciónela en la lista Características y después seleccione Habilitada.

  5. Puede personalizar el token mediante el acceso al código fuente en GitHub. Idiomas disponibles:

    • C
    • C#
    • PHP
    • Perl
    • Java
    • Python

Características y precios del proveedor de Azure Content Delivery Network

Para obtener información sobre las características, vea Características del producto de Azure Content Delivery Network. Para obtener información sobre los precios, consulte Precios de Content Delivery Network.