A busca na origem em um bucket privado do Object Storage Service (OSS) permite que o CDN acelere os recursos armazenados nesse bucket. Se o servidor de origem do seu nome de domínio acelerado for um bucket privado do OSS, ative este recurso em vez de tornar o bucket público.
Como funciona
Após ativar a busca na origem em um bucket privado do OSS, o CDN adiciona automaticamente um campo Authorization ao cabeçalho de cada requisição de busca na origem enviada ao seu bucket privado do OSS. O valor desse campo é uma assinatura válida gerada com base nas informações de identidade que você autorizou (um token de segurança temporário do Security Token Service (STS) ou um par de AccessKey). O OSS autentica a requisição com base nessa assinatura.
Benefícios
Acesso seguro — Você concede ao CDN permissões restritas de somente leitura no bucket privado, garantindo que apenas requisições legítimas de busca na origem acessem o bucket. Isso evita o risco de segurança de tornar um bucket privado público.
Otimização de custos — As requisições dos usuários finais atingem o cache do CDN. As taxas de tráfego são menores do que as taxas de tráfego de saída para a internet geradas quando os usuários acessam o OSS diretamente. Além disso, o tráfego do CDN para o OSS é contabilizado como tráfego de busca na origem, cujo preço unitário é inferior ao do tráfego de saída do OSS para a internet. Isso reduz o custo geral. Para mais informações, consulte {{XREF_0}}.
Considerações
Antes de ativar a busca na origem em um bucket privado do OSS, observe o seguinte:
Escopo de acesso — Após a ativação deste recurso, o nome de domínio acelerado pode acessar todos os recursos no bucket privado do seu servidor de origem. Não é possível restringir o acesso a apenas parte dos recursos do bucket no lado do CDN.
Conflito de assinatura — Certifique-se de que os parâmetros de URL das requisições de busca na origem não contenham informações de assinatura. Caso contrário, a autenticação do OSS falhará. Uma única requisição não pode conter uma assinatura no cabeçalho e na URL ao mesmo tempo.
Conflito de recursos — Este recurso entra em conflito com a configuração de página inicial padrão do recurso de hospedagem de site estático do OSS. Para usar ambos os recursos simultaneamente, consulte {{XREF_1}}.
Pré-requisitos
Um nome de domínio acelerado está configurado e seu servidor de origem é um bucket do Alibaba Cloud OSS.
O bucket do OSS é um bucket privado, que fornece autenticação de acesso e evita o roubo de tráfego por requisições não autorizadas.
Procedimento
A configuração consiste em duas etapas. Primeiro, conclua uma autorização única no nível da conta que permite ao CDN acessar o OSS. Em seguida, ative o recurso para o seu nome de domínio acelerado.
-
Autorize o CDN a acessar o OSS. Se nenhum aviso de autorização aparecer, pule esta etapa.
Acesse o CDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, clique em Manage para o nome de domínio de destino.
-
No painel de navegação à esquerda do nome de domínio especificado, clique em Origin Fetch.
Na seção Alibaba Cloud OSS Private Bucket Access, a linha Role Authorization exibe "This account has not authorized the CDN service to access your OSS space", e o botão Status está desativado por padrão.
A autorização com um clique no console do CDN é recomendada. Use a autorização manual no RAM se preferir criar a função e a política de autorização por conta própria.
(Recomendado) Autorização com um clique pelo console
Na seção Alibaba Cloud OSS Private Bucket Access, clique em Authorize.
Na página de confirmação de autorização, clique em Confirm Authorization.
(Alternativa) Autorização manual pelo RAM
Acesse o Resource Access Management (RAM) console.
No painel de navegação à esquerda, escolha Permission Management > Access Policy.
Na página Access Policy, clique em Create Policy.
-
Na aba Script Editor, insira o seguinte conteúdo de política.
{ "Version": "1", "Statement": [ { "Action": [ "oss:List*", "oss:Get*" ], "Resource": "*", "Effect": "Allow" } ] } -
Clique em OK, insira as seguintes informações na página Create Policy e clique em OK.
Policy Name: AliyunCDNAccessingPrivateOSSRolePolicy
Remarks: A política de autorização para a função que o CDN/DCDN usa para busca na origem em buckets privados do OSS. Ela contém permissões de somente leitura no OSS.
No painel de navegação à esquerda, escolha Identity Management > Roles.
Na página Roles, clique em Create Role.
Defina Trusted Entity Type como Cloud Account, selecione Current Cloud Account para Trusted Entity Name e clique em OK.
-
Na etapa Create Role, insira as seguintes informações:
Role Name: AliyunCDNAccessingPrivateOSSRole
Após a criação da função, na lista da página Roles, clique em AliyunCDNAccessingPrivateOSSRole para acessar a página de edição da função.
-
Na aba Trust Policy, clique em Edit Trust Policy, insira as seguintes informações e clique em OK.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cdn.aliyuncs.com" ] } } ], "Version": "1" } -
Mude para a aba Permission Management. Na aba Authorize, clique em Grant Permission.
Resource Scope: nível da conta
Authorized Principal: selecione a função AliyunCDNAccessingPrivateOSSRole criada anteriormente.
Access Policy: selecione Custom Policy, escolha a política AliyunCDNAccessingPrivateOSSRolePolicy criada anteriormente e clique em Confirm New Authorization.
Após a confirmação da autorização, retorne à página Origin Fetch do console do CDN DCDN. Você verá que o recurso Alibaba Cloud OSS Private Bucket Access foi autorizado.
-
Ative o Alibaba Cloud OSS Private Bucket Access e configure o tipo de busca na origem.
Encontre a seção Alibaba Cloud OSS Private Bucket Access e ative sua chave.
Na caixa de diálogo Alibaba Cloud OSS Private Bucket Access exibida, selecione o tipo de busca na origem e clique em OK.
A tabela a seguir descreve os cenários aplicáveis dos dois tipos de busca na origem.
|
Tipo de busca na origem |
Cenário aplicável e descrição |
|
Bucket in the Same Account |
(Recomendado) Aplicável quando o CDN e o bucket do OSS estão na mesma conta do Alibaba Cloud. O sistema usa automaticamente um token de segurança temporário do STS para autenticação, o que é fácil de configurar, não requer gerenciamento de chaves e é mais seguro. Um token de segurança temporário do STS também pode ser usado para busca na origem entre contas. Para mais informações, consulte a seção {{XREF_2}} neste tópico. |
|
Bucket Across Accounts or in the Same Account |
Aplicável quando o CDN e o bucket do OSS pertencem a contas diferentes do Alibaba Cloud e a autorização baseada em STS não pode ser usada. Cenários de mesma conta também são suportados. Este método exige que você forneça manualmente o AccessKey ID e o AccessKey secret da conta do Alibaba Cloud proprietária do bucket privado do OSS de destino para a busca na origem. Para mais informações, consulte {{XREF_3}}. |
Após clicar em OK, a busca na origem no bucket privado do OSS é ativada para o nome de domínio acelerado.
Use o STS para busca na origem entre contas em um bucket privado do OSS
Por padrão, o CDN usa tokens de segurança temporários do STS e suporta a busca na origem apenas em buckets privados do OSS na mesma conta. Para usar tokens de segurança temporários do STS na busca na origem entre contas em um bucket privado do OSS, ative o tipo de busca na origem baseado em STS no lado do CDN e adicione uma {{XREF_4}} no lado do OSS.
No lado do OSS, configure a política do bucket da seguinte forma:
Faça login na conta do Alibaba Cloud onde o bucket privado reside e acesse o OSS console.
Clique em Buckets > bucket de destino. Abra a aba Permission Control > Bucket Policy e clique em Authorize.
-
Para Authorized User, selecione Other Account. Com base no método de autorização usado quando o CDN faz a busca no OSS, insira o ARN no formato correspondente em Authorized Account:
Autorização direta do STS: insira
arn:sts:uid, ondeuidé o {{XREF_5}} da conta onde o CDN reside.AssumeRole: insira
arn:sts://{CDN_account_UID}:assumed-role/{CDN_account_role_name}/*, onde{CDN_account_UID}é o ID da conta onde o CDN reside e{CDN_account_role_name}é o nome da função assumida pela conta do CDN. Se o CDN buscar no OSS assumindo uma função, você deve usar este formato. Caso contrário, ocorrerá um erro 403.
-
Para Authorized Operation, selecione Quick Setup > Read-Only (excluding ListObject) e clique em OK para concluir a configuração.
Após a adição da autorização, a aba Bucket Policy exibirá as informações de autorização.
Recomendações de reforço de segurança
Após a ativação da busca na origem em um bucket privado do OSS, os dados no seu servidor de origem estão seguros. No entanto, os recursos armazenados em cache nos nós de borda do CDN são publicamente acessíveis por padrão. Para evitar o roubo de tráfego, use este recurso em conjunto com os seguintes recursos de segurança fornecidos pelo CDN:
{{XREF_6}}: permite que apenas requisições de sites referenciadores específicos acessem seus recursos do CDN.
{{XREF_7}}: configura assinaturas dinâmicas e tempos de expiração para as URLs dos seus recursos, defendendo contra downloads maliciosos.
Desative a busca na origem em um bucket privado do OSS
Se você não quiser mais que seu nome de domínio acelerado acesse os recursos em um bucket privado na mesma conta, revogue a autorização da função correspondente no console do Resource Access Management (RAM) para desativar a permissão do CDN DCDN para buscar no bucket privado do OSS.
-
Desative o recurso no console do CDN.
Acesse o CDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, clique em Manage para o nome de domínio de destino.
No painel de navegação à esquerda do nome de domínio especificado, clique em Origin Fetch.
Na seção Alibaba Cloud OSS Private Bucket Access, desative a chave do Alibaba Cloud OSS Private Bucket Access.
-
Remova completamente a autorização no console do RAM.
Acesse o Resource Access Management (RAM) console.
No painel de navegação à esquerda, escolha Identity Management > Roles.
Na lista de nomes de funções, clique na função AliyunCDNAccessingPrivateOSSRole.
-
Remova todas as permissões da função AliyunCDNAccessingPrivateOSSRole.
Na página de detalhes da função, a aba Permission Management lista a política de sistema autorizada (observação: a política de autorização para a função que o CDN usa para busca na origem em buckets privados do OSS, que contém permissões de somente leitura no OSS). O escopo do recurso é no nível da conta. O botão Delete Role está no canto superior direito da página.
a. Na coluna Actions, clique em Revoke Authorization.
b. Na caixa de diálogo de confirmação para remoção de permissões, clique em Revoke Authorization.
-
Retorne à página Identity Management > Roles e exclua a função AliyunCDNAccessingPrivateOSSRole.
a. Clique em Delete Role para a função AliyunCDNAccessingPrivateOSSRole.
b. Na caixa de diálogo de confirmação Delete Role, clique em Delete Role.
-
Retorne à página Permission Management > Access Policy e exclua a política AliyunCDNAccessingPrivateOSSRolePolicy.
a. Clique em Delete Access Policy para a política AliyunCDNAccessingPrivateOSSRolePolicy.
b. Na caixa de diálogo de confirmação Delete Access Policy, insira o Policy Name e clique em Delete Access Policy.
Referências
Se ocorrerem erros como
This request is forbidden by kms.ouYou have no right to access this object because of bucket acl.quando o CDN acessar os recursos do OSS, consulte {{XREF_8}} para métodos de solução de problemas.