Nesta página, você encontra uma visão geral da autenticação de origem particular e instruções para usá-la com o Cloud CDN.
A autenticação de origem particular fornece ao Cloud CDN acesso de recursos de longo prazo a buckets particulares do Amazon S3 ou outros armazenamentos de objetos compatíveis. O uso de origens particulares impede que os clientes ignorem o Cloud CDN e acessem sua origem diretamente.
Esse recurso é compatível com o Cloud CDN com um balanceador de carga de aplicativo externo global ou um balanceador de carga de aplicativo clássico.
A autenticação de origem particular é voltada para a origem, enquanto os URLs assinados e os cookies assinados são voltados para o cliente. É possível ativar ambos para o mesmo conteúdo. A autenticação de origem particular limita o acesso não CDN às suas origens e conteúdo. URLs e cookies assinados controlam quais usuários podem acessar o Cloud CDN.
Antes de começar
Crie uma chave de código de autenticação de mensagem baseado em hash (HMAC) para autenticar solicitações e associá-la a uma conta de serviço. Anote a chave de acesso e a chave secreta.
Consulte Como acessar a AWS usando suas credenciais da AWS: acesso programático na documentação da AWS.
Configure um balanceador de carga com o back-end externo.
Se o armazenamento de objetos espera um valor específico para o cabeçalho
Host
da solicitação HTTP, verifique se ele está configurado no serviço de back-end. Se você não configurar um cabeçalho de solicitação personalizado, um serviço de back-end preservará o cabeçalhoHost
usado pelo cliente para se conectar ao balanceador de carga de aplicativo externo do Google Cloud.Para ver as etapas de configuração, consulte Como trabalhar com cabeçalhos de solicitação personalizados. Para ver um exemplo específico, consulte Como configurar um balanceador de carga com um back-end externo.
Se necessário, atualize para a versão mais recente da CLI do Google Cloud:
gcloud components update
Configurar a autenticação para origens particulares
Para configurar a autenticação de origem particular, siga estas instruções:
gcloud
Exporte a configuração de back-end da origem particular para um arquivo
.yaml
usando o comandogcloud compute backend-services export
:gcloud compute backend-services export BACKEND_SERVICE_NAME \ [--destination=DESTINATION]
Substitua
DESTINATION
pelo nome do arquivo.yaml
, por exemplo,my-private-origin.yaml
.Para autenticar suas solicitações de back-end usando a chave HMAC, especifique estas opções de configuração adicionais na seção
securitySettings
debackendServices
:securitySettings: awsV4Authentication: accessKeyId: ACCESS_KEY_ID accessKey: ACCESS_KEY [accessKeyVersion: ACCESS_KEY_VERSION] originRegion: REGION …]
Substitua:
ACCESS_KEY_ID
: o ID da chave de acesso HMACACCESS_KEY
: a chave de acesso HMACACCESS_KEY_VERSION
(opcional): um nome exclusivo que pode ser definido para representar a versão da chave.REGION
: uma região válida para seu provedor de armazenamento. Para o Amazon S3, o valor não é uma região do Google Cloud.
O snippet a seguir mostra o conteúdo de um arquivo
my-private-origin.yaml
de exemplo:name: shopping-cart-services backends: - description: cart-backend-1 group: 'https://www.googleapis.com/compute/v1/projects/my-project-id/global/networkEndpointGroups/my-network-origin-group' securitySettings: awsV4Authentication: accessKeyId: AKIDEXAMPLE accessKey: c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9 accessKeyVersion: prod-access-key-v1.2 originRegion: us-east-2
Para atualizar a origem particular, importe a configuração para o serviço de back-end usando o comando
gcloud compute backend-services import
:gcloud compute backend-services import BACKEND_SERVICE_NAME \ [--source=SOURCE]
Substitua
SOURCE
pelo nome do arquivo.yaml
.
API
Para autenticar suas solicitações de back-end usando a chave HMAC, especifique essas outras opções de configuração na seção securitySettings
de backendServices
.
Use a chamada de API Method: backendServices.insert
ou Method: backendServices.update
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
Adicione o seguinte snippet ao corpo da solicitação JSON:
securitySettings: { awsV4Authentication: { accessKeyId: ACCESS_KEY_ID, accessKey: ACCESS_KEY, [accessKeyVersion: ACCESS_KEY_VERSION], originRegion: REGION } }
Substitua:
ACCESS_KEY_ID
: o ID da chave de acesso HMACACCESS_KEY
: a chave de acesso HMACACCESS_KEY_VERSION
(opcional): um nome exclusivo que pode ser definido para representar a versão da chave.REGION
: uma região válida para seu provedor de armazenamento. Para o Amazon S3, o valor não é uma região do Google Cloud.
O snippet a seguir mostra o conteúdo de um exemplo de corpo de solicitação JSON:
securitySettings: { awsV4Authentication: { accessKeyId: "AKIDEXAMPLE", accessKey: "c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9", accessKeyVersion: "prod-access-key-v1.2", originRegion: "us-east-2" } }
O nome do serviço é definido automaticamente como s3
para criar a assinatura.
Depois que essas configurações estiverem em vigor, o Cloud CDN vai gerar um
cabeçalho de autorização HTTP para todas as solicitações da origem.
Armazenar em cache respostas autenticadas de forma particular
Talvez você queira garantir que o conteúdo autenticado de forma privada seja armazenado em cache pelo Cloud CDN.
Para fazer isso, defina o modo de cache como Forçar o armazenamento em cache de todo o conteúdo e especifique um TTL para que todo o conteúdo disponibilizado da origem seja armazenado em cache.
Como alternativa, se você não quiser forçar todo o conteúdo a ser armazenado em cache da mesma maneira,
mude o modo de cache para Usar a configuração de origem com base nos cabeçalhos de controle de cache
ou Armazenar conteúdo estático em cache e verifique se o cabeçalho Cache-Control
está
definido corretamente no conteúdo disponibilizado na sua origem.