La recuperación de origen desde un bucket privado de Object Storage Service (OSS) permite que CDN acelere los recursos almacenados en dicho bucket. Si el servidor de origen de su nombre de dominio acelerado es un bucket privado de OSS, habilite esta función en lugar de hacer público el bucket.
Funcionamiento
Al habilitar la recuperación de origen desde un bucket privado de OSS, CDN agrega automáticamente un campo Authorization al encabezado de cada solicitud de recuperación de origen enviada al bucket privado. El valor de este campo es una firma válida generada con base en la información de identidad autorizada (un token de seguridad temporal de Security Token Service (STS) o un par de AccessKey). OSS autentica la solicitud mediante dicha firma.
Beneficios
Acceso seguro: se otorgan a CDN permisos de solo lectura restringidos sobre el bucket privado, por lo que únicamente las solicitudes legítimas de recuperación de origen pueden acceder a él. Esto evita el riesgo de seguridad que implica hacer público un bucket privado.
Optimización de costos: las solicitudes de los usuarios finales se resuelven en la caché de CDN. Las tarifas de tráfico son menores en comparación con el tráfico saliente a Internet generado cuando los usuarios acceden directamente a OSS. Además, el tráfico de CDN hacia OSS se contabiliza como tráfico de recuperación de origen, cuyo precio unitario es inferior al del tráfico saliente a Internet de OSS. Esto reduce el costo general. Para obtener más información, consulte Billing of OSS content acceleration.
Consideraciones
Antes de habilitar la recuperación de origen desde un bucket privado de OSS, tenga en cuenta lo siguiente:
Alcance de acceso: tras habilitar esta función, el nombre de dominio acelerado puede acceder a todos los recursos del bucket privado de su servidor de origen. No es posible restringir el acceso a solo algunos recursos del bucket desde el lado de CDN.
Conflicto de firmas: asegúrese de que los parámetros URL de las solicitudes de recuperación de origen no contengan información de firma; de lo contrario, la autenticación de OSS fallará. Una sola solicitud no puede incluir una firma simultáneamente en el encabezado y en la URL.
Conflicto de funciones: esta función entra en conflicto con la configuración de página principal predeterminada de la función de hosting de sitios web estáticos de OSS. Para utilizar ambas funciones al mismo tiempo, consulte documentation.
Requisitos previos
Debe haber un nombre de dominio acelerado configurado y su servidor de origen debe ser un bucket de Alibaba Cloud OSS.
El bucket de OSS debe ser privado, lo cual proporciona autenticación de acceso y evita el robo de tráfico mediante solicitudes no autorizadas.
Procedimiento
La configuración consta de dos pasos. Primero, complete una autorización única a nivel de cuenta que permita a CDN acceder a OSS. Después, habilite la función para su nombre de dominio acelerado.
-
Autorice a CDN para acceder a OSS. Si no aparece ningún mensaje de autorización, omita este paso.
Inicie sesión en la consola de CDN.
En el panel de navegación izquierdo, haga clic en Domain Names.
En la página Domain Names, haga clic en Manage correspondiente al nombre de dominio deseado.
-
En el panel de navegación izquierdo del nombre de dominio especificado, haga clic en Origin Fetch.
En la sección Alibaba Cloud OSS Private Bucket Access, la fila Role Authorization muestra "This account has not authorized the CDN service to access your OSS space", y el interruptor Status está desactivado de forma predeterminada.
Se recomienda usar la autorización con un solo clic en la consola de CDN. Utilice la autorización manual en RAM si prefiere crear el rol y la directiva de autorización por su cuenta.
(Recomendado) Autorización con un solo clic mediante la consola
En la sección Alibaba Cloud OSS Private Bucket Access, haga clic en Authorize.
En la página de confirmación de autorización, haga clic en Confirm Authorization.
(Alternativa) Autorización manual mediante RAM
Inicie sesión en la consola de Resource Access Management (RAM).
En el panel de navegación izquierdo, seleccione Permission Management > Access Policy.
En la página Access Policy, haga clic en Create Policy.
-
En la pestaña Script Editor, introduzca el siguiente contenido de directiva.
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] } -
Haga clic en OK, introduzca la siguiente información en la página Create Policy y luego haga clic en OK.
Policy Name: AliyunCDNAccessingPrivateOSSRolePolicy
Remarks: Directiva de autorización para el rol que utiliza CDN/DCDN en la recuperación de origen desde buckets privados de OSS. Contiene permisos de solo lectura sobre OSS.
En el panel de navegación izquierdo, seleccione Identity Management > Roles.
En la página Roles, haga clic en Create Role.
Establezca Trusted Entity Type como Cloud Account, seleccione Current Cloud Account para Trusted Entity Name y luego haga clic en OK.
-
En el paso Create Role, introduzca la siguiente información:
Role Name: AliyunCDNAccessingPrivateOSSRole
Una vez creado el rol, en la lista de la página Roles, haga clic en AliyunCDNAccessingPrivateOSSRole para ir a la página de edición del rol.
-
En la pestaña Trust Policy, haga clic en Edit Trust Policy, introduzca la siguiente información y luego haga clic en OK.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cdn.aliyuncs.com" ] } } ], "Version": "1" } -
Cambie a la pestaña Permission Management. En la pestaña Authorize, haga clic en Grant Permission.
Resource Scope: account-level
Authorized Principal: seleccione el rol AliyunCDNAccessingPrivateOSSRole creado anteriormente.
Access Policy: seleccione Custom Policy, elija la directiva AliyunCDNAccessingPrivateOSSRolePolicy creada previamente y luego haga clic en Confirm New Authorization.
Tras confirmar la autorización, regrese a la página Origin Fetch de la consola de CDN DCDN. Podrá observar que la función Alibaba Cloud OSS Private Bucket Access ha sido autorizada.
-
Active Alibaba Cloud OSS Private Bucket Access y configure el tipo de recuperación de origen.
Localice la sección Alibaba Cloud OSS Private Bucket Access y active su interruptor.
En el cuadro de diálogo Alibaba Cloud OSS Private Bucket Access que se muestra, seleccione el tipo de recuperación de origen y haga clic en OK.
La siguiente tabla describe los escenarios aplicables para los dos tipos de recuperación de origen.
|
Tipo de recuperación de origen |
Escenario aplicable y descripción |
|
Bucket in the Same Account |
(Recomendado) Aplicable cuando CDN y el bucket de OSS pertenecen a la misma cuenta de Alibaba Cloud. El sistema utiliza automáticamente un token de seguridad temporal de STS para la autenticación, lo cual facilita la configuración, elimina la gestión de claves y ofrece mayor seguridad. También es posible usar un token temporal de STS para recuperaciones de origen entre cuentas distintas. Para más información, consulte la sección Use STS for cross-account origin fetch from a private OSS bucket en este tema. |
|
Bucket Across Accounts or in the Same Account |
Aplicable cuando CDN y el bucket de OSS pertenecen a diferentes cuentas de Alibaba Cloud y no es posible utilizar la autorización basada en STS. También admite escenarios dentro de la misma cuenta. Este método requiere proporcionar manualmente el AccessKey ID y el AccessKey secret de la cuenta de Alibaba Cloud propietaria del bucket privado de OSS destino para la recuperación de origen. Para más información, consulte Create an AccessKey. |
Después de hacer clic en OK, se habilita la recuperación de origen desde el bucket privado de OSS para el nombre de dominio acelerado.
Uso de STS para recuperación de origen entre cuentas desde un bucket privado de OSS
De forma predeterminada, CDN utiliza tokens de seguridad temporales de STS y solo admite la recuperación de origen desde buckets privados de OSS dentro de la misma cuenta. Para usar tokens temporales de STS en recuperaciones de origen entre cuentas desde un bucket privado de OSS, habilite el tipo de recuperación basado en STS en el lado de CDN y agregue una bucket policy en el lado de OSS.
En el lado de OSS, configure la directiva del bucket de la siguiente manera:
Inicie sesión en la cuenta de Alibaba Cloud donde reside el bucket privado y diríjase a la consola de OSS.
Haga clic en Buckets > target bucket. Abra la pestaña Permission Control > Bucket Policy y haga clic en Authorize.
-
Para Authorized User, seleccione Other Account. Según el método de autorización utilizado cuando CDN recupera datos de OSS, introduzca el ARN con el formato correspondiente en Authorized Account:
Autorización directa de STS: introduzca
arn:sts:uid, dondeuides el account ID de la cuenta donde reside CDN.AssumeRole: introduzca
arn:sts://{CDN_account_UID}:assumed-role/{CDN_account_role_name}/*, donde{CDN_account_UID}es el ID de la cuenta donde reside CDN y{CDN_account_role_name}es el nombre del rol asumido por la cuenta de CDN. Si CDN recupera datos de OSS asumiendo un rol, debe usar este formato; de lo contrario, se producirá un error 403.
-
Para Authorized Operation, seleccione Quick Setup > Read-Only (excluding ListObject) y luego haga clic en OK para completar la configuración.
Una vez agregada la autorización, la pestaña Bucket Policy mostrará la información de autorización.
Recomendaciones de reforzamiento de seguridad
Al habilitar la recuperación de origen desde un bucket privado de OSS, los datos en su servidor de origen permanecen seguros. Sin embargo, los recursos almacenados en caché en los nodos perimetrales de CDN son accesibles públicamente de forma predeterminada. Para evitar el robo de tráfico, utilice esta función junto con las siguientes funciones de seguridad proporcionadas por CDN:
Configure a Referer blacklist or whitelist: permite que solo las solicitudes provenientes de sitios web de referencia específicos accedan a sus recursos de CDN.
Configure URL signing: configura firmas dinámicas y tiempos de caducidad para las URL de sus recursos como defensa contra descargas malintencionadas.
Deshabilitar la recuperación de origen desde un bucket privado de OSS
Si ya no desea que su nombre de dominio acelerado acceda a los recursos de un bucket privado bajo la misma cuenta, revoque la autorización del rol correspondiente en la consola de Resource Access Management (RAM) para quitar el permiso de CDN DCDN de recuperar datos del bucket privado de OSS.
-
Deshabilite la función en la consola de CDN.
Inicie sesión en la consola de CDN.
En el panel de navegación izquierdo, haga clic en Domain Names.
En la página Domain Names, haga clic en Manage correspondiente al nombre de dominio deseado.
En el panel de navegación izquierdo del nombre de dominio especificado, haga clic en Origin Fetch.
En la sección Alibaba Cloud OSS Private Bucket Access, desactive el interruptor de Alibaba Cloud OSS Private Bucket Access.
-
Elimine por completo la autorización en la consola de RAM.
Inicie sesión en la consola de Resource Access Management (RAM).
En el panel de navegación izquierdo, seleccione Identity Management > Roles.
En la lista de nombres de roles, haga clic en el rol AliyunCDNAccessingPrivateOSSRole.
-
Quite todos los permisos del rol AliyunCDNAccessingPrivateOSSRole.
En la página de detalles del rol, la pestaña Permission Management enumera la directiva de sistema autorizada (nota: directiva de autorización para el rol que utiliza CDN en la recuperación de origen desde buckets privados de OSS, la cual contiene permisos de solo lectura sobre OSS). El alcance del recurso es a nivel de cuenta. El botón Delete Role se encuentra en la esquina superior derecha de la página.
a. En la columna Actions, haga clic en Revoke Authorization.
b. En el cuadro de diálogo de confirmación para quitar permisos, haga clic en Revoke Authorization.
-
Regrese a la página Identity Management > Roles y elimine el rol AliyunCDNAccessingPrivateOSSRole.
a. Haga clic en Delete Role para el rol AliyunCDNAccessingPrivateOSSRole.
b. En el cuadro de diálogo de confirmación Delete Role, haga clic en Delete Role.
-
Regrese a la página Permission Management > Access Policy y elimine la directiva AliyunCDNAccessingPrivateOSSRolePolicy.
a. Haga clic en Delete Access Policy para la directiva AliyunCDNAccessingPrivateOSSRolePolicy.
b. En el cuadro de diálogo de confirmación Delete Access Policy, introduzca el nombre de la directiva y haga clic en Delete Access Policy.
Referencias
Si ocurren errores como
This request is forbidden by kms.oYou have no right to access this object because of bucket acl.cuando CDN accede a recursos de OSS, consulte Origin fetch troubleshooting para conocer los métodos de solución de problemas.