Por padrão, o conteúdo distribuído pelo CDNDCDN é público e acessível a qualquer pessoa que tenha sua URL. Para proteger seus recursos de origem contra acessos não autorizados e downloads maliciosos, você pode usar a assinatura de URL além de outros métodos de controle de acesso, como proteção contra hotlink de Referer e listas negras/listas brancas de IP. A assinatura de URL protege seu conteúdo validando a string criptografada e o carimbo de data/hora contidos em uma URL assinada.
Como funciona
A assinatura de URL impede o acesso não autorizado aos seus recursos de origem coordenando as solicitações entre os POPs do Alibaba Cloud CDNDCDN e sua origem. O processo envolve três componentes principais:
Servidor de aplicação de origem: Gera uma URL assinada com base em uma regra de assinatura definida, incluindo o algoritmo e a chave, e a retorna ao cliente.
Cliente: Envia a URL assinada para um POP do CDNDCDN para solicitar um recurso.
CDNDCDN POP: Valida as informações na URL assinada, como a string de assinatura e o carimbo de data/hora.
-
Os clientes do CDNDCDN configuram as regras de geração de URLs assinadas (incluindo um algoritmo de assinatura e uma chave) no servidor de aplicação de origem.
Por exemplo, uma URL assinada pode ter o formato
http://DomainName/timestamp/md5hash/FileName. Quando um cliente visita uma página em sua aplicação, o servidor de aplicação de origem gera uma URL assinada com base nas regras configuradas e a incorpora na página retornada ao cliente.
O cliente usa a URL assinada para solicitar o recurso de um POP do CDNDCDN.
-
O POP do CDNDCDN valida as informações na URL assinada, como a string de assinatura e o carimbo de data/hora, para determinar se a solicitação é legítima.
Se a autenticação falhar, o POP negará a solicitação.
-
Se a autenticação for bem-sucedida, o POP fornecerá o conteúdo.
NotaSe um nó do CDNDCDN não tiver um recurso em cache, o nó do CDNDCDN remove os parâmetros de autenticação da URL assinada e a restaura para a URL original (por exemplo,
http://DomainName/FileName) e, em seguida, usa a URL original para gerar uma chave de cache ou iniciar uma solicitação de busca na origem.Depois que o CDNDCDN autentica a URL da solicitação, ele codifica quaisquer caracteres especiais na URL, como caracteres chineses ou outros caracteres não ASCII.
Notas de uso
Depois de configurar a assinatura de URL, as solicitações que falharem na autenticação ainda poderão alcançar os nós do CDNDCDN, mas serão rejeitadas pelos nós do CDNDCDN e um código de status 403 será retornado. Os logs do CDNDCDN ainda registrarão essas solicitações com falha de autenticação.
A assinatura de URL valida solicitações nos POPs do CDNDCDN. Portanto, a interceptação de solicitações maliciosas ainda consome uma pequena quantidade de tráfego faturável. Para solicitações HTTPS, taxas adicionais se aplicam porque os POPs do CDNDCDN consomem recursos de processamento para realizar a interceptação.
A assinatura de URL em si não é cobrada separadamente. É um recurso básico de segurança do CDN, juntamente com a proteção contra hotlink de Referer, autenticação remota e listas negras e brancas de IP/UA.
Depois de ativar a assinatura de URL, cada URL de solicitação deve conter os parâmetros de autenticação. Este recurso não é adequado para sites de portal. É mais adequado para sites de hospedagem de recursos, como sites que fornecem grandes volumes de imagens ou vídeos.
-
Quando você purga ou pré-busca recursos para um nome de domínio acelerado no Alibaba Cloud CDN que usa assinatura de URL, envie uma URL que corresponda à chave de cache do recurso. O console não remove parâmetros de autenticação, não codifica em porcentagem os valores dos parâmetros de consulta, nem normaliza de outra forma a URL que você envia.
Para um nome de domínio acelerado cujo processamento de assinatura de URL foi confirmado para remover parâmetros de autenticação e codificar em porcentagem as barras nos valores dos parâmetros de consulta de negócios retidos, derive a URL final de purga ou pré-busca da seguinte forma:
-
URL de acesso do cliente. Esta URL contém parâmetros de consulta de negócios e parâmetros de autenticação.
https://image.example.com/cat.jpg?x-oss-process=image/resize,m_fill,w_390,h_520,limit_1/auto-orient,1/sharpen,100/quality,q_80&k=123456789abcdefg&t=123abc -
URL após a remoção dos parâmetros de autenticação. Remova os parâmetros de assinatura e carimbo de data/hora configurados, mantendo os parâmetros de consulta de negócios.
https://image.example.com/cat.jpg?x-oss-process=image/resize,m_fill,w_390,h_520,limit_1/auto-orient,1/sharpen,100/quality,q_80 -
URL final de purga ou pré-busca. Codifique em porcentagem as barras no valor do parâmetro de consulta retido para que a URL corresponda à chave de cache confirmada. Os separadores de caminho, como a barra antes de
cat.jpg, permanecem inalterados.https://image.example.com/cat.jpg?x-oss-process=image%2Fresize,m_fill,w_390,h_520,limit_1%2Fauto-orient,1%2Fsharpen,100%2Fquality,q_80
No Método F, os nomes de Signature Parameter e Timestamp Parameter são configurados por nome de domínio acelerado. Os parâmetros
ketneste exemplo não são nomes de parâmetros fixos.Para obter instruções sobre como enviar URLs de purga e pré-busca, consulte Purgar e pré-buscar recursos.
-
Configurar e ativar a assinatura de URL
Certifique-se de ter configurado as regras de geração de URLs assinadas, incluindo o algoritmo de assinatura e a chave, no servidor de aplicação de origem.
A lógica de assinatura de URL configurada no console do CDNDCDN deve corresponder à lógica no servidor de aplicação de origem.
Faça login no CDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, localize o nome de domínio de destino e clique em Manage na coluna Actions.
No painel de navegação do domínio, clique em Access Control.
Clique na guia URL Signing.
Na seção URL Signing, clique em Modify.
-
Ative a chave URL Signing e configure os parâmetros.
Parameter
Description
Type
Alibaba Cloud CDN provides four signing methods. You can select a signing type based on the format of your signed URLs to effectively protect your origin resources. The following URL signing types are available:
NotaIf URL signing fails, a 403 error is returned:
MD5 calculation error
Example:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760beTime-related error
Example:
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
Primary Key
Enter the primary key for the signing method. The key must be 6 to 128 characters in length and can contain uppercase letters, lowercase letters, and digits.
Secondary Key
Enter the secondary key for the signing method. The key must be 6 to 128 characters in length and can contain uppercase letters, lowercase letters, and digits. You must specify at least a primary or secondary key.
TTL
Specifies the validity period of the signed URL. A client must access the resource within the timestamp + TTL period. Requests sent after this period fail authentication.
Unit: seconds
Valid values: 1 to 31536000
Default value: 1800 (30 minutes)
Example: If your signing server generates a signed URL at 15:00:00 (UTC+8) on August 15, 2020 and the TTL is 1,800 seconds, the signed URL expires at 15:30:00 (UTC+8) on August 15, 2020.
Signature Parameter
You can customize the names of the signature parameters. This is valid only when the authentication type is set to Method F.
Timestamp Parameter
You can customize the name of the timestamp parameter. This is effective only when the authentication type is set to Type F.
Timestamp Format
Sets the timestamp format, which can be decimal (Unix timestamp) or hexadecimal (Unix timestamp). This setting takes effect only when the authentication type is set to Type F.
URL Encoding
The URL encoding switch is disabled by default. If you enable this switch, it URL-encodes user request URLs. This feature is effective only when the authentication type is set to Method F.
Rule Condition
A rule condition identifies various parameter information in a user request. This determines whether a configuration takes effect for that request.
ImportanteWhen you reference rule conditions, they are matched based on the priority of the associated rule conditions, not the configuration order of the feature itself.
Do not use: Does not use a rule condition.
To add or edit rule conditions, manage them in the Rules Engine.
Clique em OK.
Verificar a URL assinada
Depois de configurar a assinatura de URL, use o Gerador de URL Assinada no console do CDN para gerar uma URL assinada e verificar a implementação. Este processo confirma que a lógica de assinatura do seu servidor está correta.
-
Na seção Signed URL Generator, especifique a Original URL (Unencoded) e outras informações de assinatura.
Parâmetro
Descrição
Original URL (Unencoded)
Insira a URL original completa, por exemplo,
https://www.aliyun.com. A ferramenta codifica automaticamente a URL original ao gerar a URL assinada.Type
Selecione o tipo de assinatura de URL com base nas configurações que você definiu na seção Configurar e ativar a assinatura de URL.
Cryptographic Key
Insira a Primary Key ou a Secondary Key que você configurou na seção Configurar e ativar a assinatura de URL.
TTL
Insira o TTL para a assinatura de URL em segundos, com base nas configurações que você definiu na seção Configurar e ativar a assinatura de URL.
Clique em Generate para obter a Signed URL e o Timestamp.
Desativar a assinatura de URL
Se você desativar a assinatura de URL no console do CDNDCDN, mas as solicitações do cliente ainda contiverem parâmetros de assinatura, o CDNDCDN não poderá restaurar as URLs de solicitação para seu formato original. Isso causa falhas de cache, redirecionando todas essas solicitações para sua origem. Como resultado, o tráfego e os custos de sua origem aumentam significativamente. Portanto, para desativar completamente a assinatura de URL, você deve remover a configuração tanto do servidor de aplicação quanto do console do CDNDCDN.
Na seção URL Signing do CDN console, clique em Modify e desative a chave de assinatura de URL.
No seu servidor de aplicação, remova a lógica que adiciona parâmetros de assinatura às URLs de solicitação.