Especificar os assinantes que podem criar signed URLs e cookies - Amazon CloudFront

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Especificar os assinantes que podem criar signed URLs e cookies

Para criar signed URLs ou cookies, é necessário um assinante. Um signatário é um grupo de chaves confiável que você cria ou uma AWS conta que contém um par de CloudFront chaves. CloudFront Recomendamos que você use grupos de chaves confiáveis com signed URLs e cookies. Para obter mais informações, consulte Como escolher entre grupos de chaves confiáveis (recomendado) e contas da AWS.

O assinante tem duas finalidades:

  • Assim que você adiciona o signatário à sua distribuição, CloudFront começa a exigir que os espectadores usem URLs assinados ou cookies assinados para acessar seus arquivos.

  • Ao criar signed URLs ou cookies, você usa a chave privada do par de chaves do assinante para assinar uma parte do URL ou do cookie. Quando alguém solicita um arquivo restrito, CloudFront compara a assinatura no URL ou cookie com o URL ou cookie não assinado, para verificar se não foi adulterado. CloudFront também verifica se o URL ou o cookie são válidos, o que significa, por exemplo, que a data e a hora de expiração não passaram.

Ao especificar um assinante, você também especifica indiretamente os arquivos que exigem signed URLs ou cookies adicionando o assinante a um comportamento de cache. Caso sua distribuição tenha somente um comportamento de cache, os visualizadores deverão usar signed URLs ou cookies para acessar qualquer arquivo na distribuição. Se criar vários comportamentos de cache e adicionar assinantes a alguns deles, mas não a outros, você poderá solicitar que os visualizadores usem signed URLs ou cookies para acessar alguns arquivos e não outros.

Para especificar os signatários (as chaves privadas) que têm permissão para criar URLs assinados ou cookies assinados e para adicionar os signatários à sua CloudFront distribuição, execute as seguintes tarefas:

  1. Decida se pretende utilizar um grupo de chaves confiáveis ou uma conta da AWS como assinante. Recomendamos o uso de um grupo de chaves confiáveis. Para obter mais informações, consulte Como escolher entre grupos de chaves confiáveis (recomendado) e contas da AWS.

  2. Para o assinante que você escolheu na etapa 1, crie um par de chaves pública/privada. Para obter mais informações, consulte Criar pares de chaves para seus assinantes.

  3. Se você estiver usando .NET ou Java para criar signed URLs ou cookies, reformate a chave privada. Para obter mais informações, consulte Reformatar a chave privada (somente .NET e Java).

  4. Na distribuição para a qual você está criando signed URLs ou cookies, especifique o assinante. Para obter mais informações, consulte Adicionar um assinante a uma distribuição.

Como escolher entre grupos de chaves confiáveis (recomendado) e contas da AWS

Para usar signed URLs ou cookies, é necessário um assinante. Um signatário é um grupo de chaves confiável que você cria ou uma AWS conta que contém um par de CloudFront chaves. CloudFront Recomendamos que você use grupos de chaves confiáveis, pelos seguintes motivos:

  • Com grupos de CloudFront chaves, você não precisa usar o usuário raiz da AWS conta para gerenciar as chaves públicas de URLs CloudFront assinados e cookies assinados. AWSas melhores práticas recomendam que você não use o usuário root quando não for necessário.

  • Com grupos de CloudFront chaves, você pode gerenciar chaves públicas, grupos de chaves e assinantes confiáveis usando a CloudFront API. É possível usar a API para automatizar a criação de chaves e a alternância de chaves. Ao usar o usuário AWS root, você precisa usar o AWS Management Console para gerenciar pares de CloudFront chaves, portanto, não é possível automatizar o processo.

  • Como você pode gerenciar grupos de chaves com a CloudFront API, você também pode usar políticas de permissões AWS Identity and Access Management (IAM) para limitar o que diferentes usuários podem fazer. Por exemplo, é possível permitir que os usuários façam upload de chaves públicas, mas não excluí-las. Ou, é possível permitir que os usuários excluam chaves públicas, mas somente quando determinadas condições forem atendidas, como usar autenticação multifator, enviar a solicitação de uma determinada rede ou enviar a solicitação dentro de um determinado intervalo de data e hora.

  • Com grupos de CloudFront chaves, você pode associar um número maior de chaves públicas à sua CloudFront distribuição, oferecendo mais flexibilidade na forma como você usa e gerencia as chaves públicas. Por padrão, é possível associar até quatro grupos de chaves a uma única distribuição e ter até cinco chaves públicas em um grupo de chaves.

    Ao usar o usuário raiz da AWS conta para gerenciar pares de CloudFront chaves, você só pode ter até dois pares de CloudFront chaves ativos por AWS conta.

Criar pares de chaves para seus assinantes

Cada signatário que você usa para criar URLs CloudFront assinados ou cookies assinados deve ter um par de chaves pública/privada. O signatário usa sua chave privada para assinar o URL ou os cookies e CloudFront usa a chave pública para verificar a assinatura.

A forma como você cria um par de chaves depende se você usa um grupo de chaves confiável como signatário (recomendado) ou um par de CloudFront chaves. Para obter mais informações, consulte as seções a seguir. O par de chaves que criar deve atender aos seguintes requisitos:

  • Deve ser um par de chaves SSH-2 RSA.

  • Ele deve estar no formato PEM codificado em base64.

  • Deve ser um par de chaves de 2048 bits.

Para ajudar a proteger sias aplicações, recomendamos que você alterne os pares de chaves periodicamente. Para obter mais informações, consulte Alternar pares de chaves.

Criar um par de chaves para um grupo de chaves confiáveis (recomendado)

Para criar um par de chaves para um grupo de chaves confiável, execute as seguintes etapas:

  1. Crie o par de chaves pública/privada.

  2. Faça o upload da chave pública para CloudFront o.

  3. Adicione a chave pública a um grupo de CloudFront chaves.

Para obter mais informações, consulte os procedimentos a seguir.

Para criar um par de chaves
nota

As etapas a seguir usam OpenSSL como um exemplo de uma maneira de criar um par de chaves. Há várias outras maneiras de criar um par de chaves RSA.

  1. O comando de exemplo a seguir usa OpenSSL para gerar um par de chaves RSA com um tamanho de 2.048 bits e salvar no arquivo chamado private_key.pem.

    openssl genrsa -out private_key.pem 2048
  2. O arquivo resultante contém a chave pública e a privada. O comando de exemplo a seguir extrai a chave pública do arquivo chamado private_key.pem.

    openssl rsa -pubout -in private_key.pem -out public_key.pem

    Faça upload da chave pública (no arquivo public_key.pem) posteriormente, no procedimento a seguir.

Para fazer o upload da chave pública para CloudFront
  1. Faça login no AWS Management Console e abra o CloudFront console emhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. No menu de navegação, escolha Public keys (Chaves públicas).

  3. Escolha Add public key (Adicionar chave pública).

  4. Na janela Add public key (Adicionar chave pública) faça o seguinte:

    1. Em Key name (Nome da chave), digite um nome para identificar a chave pública.

    2. Em Key value (Valor da chave), cole a chave pública. Se você seguiu as etapas no procedimento anterior, a chave pública está no arquivo chamado public_key.pem. Para copiar e colar o conteúdo da chave pública, é possível:

      • Usar o comando cat na linha de comando do macOS ou do Linux, da seguinte forma:

        cat public_key.pem

        Copie a saída desse comando e cole-a no campo Key value (Valor da chave).

      • Abra o public_key.pem arquivo com um editor de texto simples, como o Bloco de Notas (no Windows) ou ( TextEdit no macOS). Copie o conteúdo do arquivo e cole-o no campo Key value (Valor da chave).

    3. (Opcional) Em Comment (Comentário), adicione um comentário para descrever a chave pública.

    Quando terminar, escolha Add (Adicionar).

  5. Registre o ID da chave pública. Ele será usado posteriormente quando você criar signed URLs ou cookies como o valor do campo Key-Pair-Id.

Como adicionar a chave pública a um grupo de chaves
  1. Abra o CloudFront console emhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. No menu de navegação, escolha Key groups (Grupos de chaves).

  3. Escolha Add key group (Adicionar grupo de chaves).

  4. Na página Create key group (Criar grupo de chaves) faça o seguinte:

    1. Em Key group name (Nome do grupo de chaves), digite um nome para identificar o grupo de chaves.

    2. (Opcional) Em Comment (Comentário), digite um comentário para descrever o grupo de chaves.

    3. Em Public keys (Chaves públicas), selecione a chave pública a ser adicionada ao grupo de chaves e escolha Add (Adicionar). Repita essa etapa para cada chave pública que você deseja adicionar ao grupo de chaves.

  5. Escolha Create key group (Criar grupo de chaves).

  6. Registre o nome do grupo de chaves. Você o usa posteriormente para associar o grupo de chaves a um comportamento de cache em uma CloudFront distribuição. (Na CloudFront API, você usa o ID do grupo de chaves para associar o grupo de chaves a um comportamento de cache.)

Importante

Recomendamos que você crie uma chave pública para um grupo de chaves confiáveis em vez de seguir estas etapas. Para a maneira recomendada de criar chaves públicas para signed URLs e signed cookies, consulte Criar um par de chaves para um grupo de chaves confiáveis (recomendado).

Você pode criar um par de CloudFront chaves das seguintes formas:

  • Crie um par de chaves no AWS Management Console e faça download da chave privada. Consulte o procedimento a seguir.

  • Crie um par de chaves RSA usando uma aplicação, como o OpenSSL, e faça upload da chave pública no AWS Management Console. Para mais informações sobre como criar um par de chaves RSA, consulte Criar um par de chaves para um grupo de chaves confiáveis (recomendado).

Para criar pares de CloudFront chaves no AWS Management Console
  1. Faça login no AWS Management Console usando as credenciais do usuário raiz da conta da AWS.

    Importante

    Os usuários do IAM não podem criar pares de CloudFront chaves. É necessário fazer login usando as credenciais de usuário raiz para criar pares de chaves.

  2. Escolha o nome da sua conta e selecione My Security Credentials (Minhas credenciais de segurança).

  3. Escolha pares de CloudFront chaves.

  4. Confirme se você não têm mais de um par de chaves ativo. Não será possível criar um par de chaves se você já tiver dois pares de chaves ativos.

  5. Selecione Create a new key pair (Criar um par de chaves).

    nota

    Você também pode escolher criar seu próprio par de chaves e fazer o upload da chave pública. CloudFront os pares de chaves oferecem suporte a chaves de 1024, 2048 ou 4096 bits.

  6. Na caixa de diálogo Create Key Pair (Criar par de chaves), escolha Download Private Key File (Fazer download do arquivo de chave privada) e salve o arquivo no computador.

    Importante

    Salve a chave privada do seu par de CloudFront chaves em um local seguro e defina permissões no arquivo para que somente os administradores desejados possam lê-lo. Se alguém obtiver sua chave privada, poderá gerar signed URLs e cookies válidos e fazer download do seu conteúdo. Você não pode obter a chave privada novamente, portanto, se você a perder ou excluir, deverá criar um novo par de CloudFront chaves.

  7. Anote o ID do seu par de chaves. (No AWS Management Console, ele é chamado de ID de chave de acesso.) Ele será usado quando você criar signed URLs ou cookies.

Reformatar a chave privada (somente .NET e Java)

Se estiver usando .NET ou Java para criar signed URLs ou cookies, você não poderá usar a chave privada do par de chaves no formato padrão PEM para criar a assinatura. Em vez disso, faça o seguinte:

  • Framework .NET: converta a chave privada no formato XML usado pelo framework .NET. Várias ferramentas estão disponíveis.

  • Java: converta a chave privada no formato DER. Uma maneira de fazer isso é com o comando OpenSSL a seguir. No comando a seguir, private_key.pem é o nome do arquivo que contém a chave privada formatada em PEM e private_key.der é o nome do arquivo que contém a chave privada formatada em DER depois que o comando é executado.

    openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out private_key.der -outform DER

    Para garantir que o codificador funcione corretamente, adicione o JAR para as APIs de criptografia Java Bouncy Castle do seu projeto e adicione o provedor do Bouncy Castle.

Adicionar um assinante a uma distribuição

Um signatário é o grupo de chaves confiável (recomendado) ou par de CloudFront chaves que pode criar URLs assinadas e cookies assinados para uma distribuição. Para usar URLs assinados ou cookies assinados com uma CloudFront distribuição, você deve especificar um signatário.

Os assinantes estão associados a comportamentos de cache. Isso permite exigir signed URLs ou cookies para alguns arquivos e não para outros na mesma distribuição. Uma distribuição requer signed URLs ou cookies somente para arquivos associados aos comportamentos de cache correspondentes.

Da mesma forma, um assinante só pode assinar URLs ou cookies para arquivos associados aos comportamentos de cache correspondentes. Por exemplo, se você tiver um assinante para um comportamento de cache e um assinante diferente para outro comportamento de cache, nenhum dos dois assinantes poderão criar signed URLs ou cookies para arquivos associados ao outro comportamento de cache.

Importante

Antes de adicionar um assinante à sua distribuição, faça o seguinte:

  • Defina os padrões de caminho nos comportamentos de cache e a sequência de comportamentos de cache cuidadosamente para que você não dê aos usuários acesso indesejado ao seu conteúdo ou impeça que eles acessem o conteúdo que você deseja que esteja disponível para todos.

    Por exemplo, imagine que uma solicitação corresponda ao padrão de caminho de dois comportamentos de cache. O primeiro comportamento de cache não requer signed URLs ou cookies, mas o segundo comportamento de cache, sim. Os usuários poderão acessar os arquivos sem usar signed URLs ou cookies, pois o CloudFront processa o comportamento de cache associado à primeira correspondência.

    Para obter mais informações sobre padrões de caminho, consulte Padrão de caminho.

  • Para uma distribuição que você já esteja usando para distribuir conteúdo, certifique-se de que esteja pronto para começar a gerar signed URLs e cookies antes de adicionar um assinante. Quando você adiciona um signatário, CloudFront rejeita solicitações que não incluam um URL assinado válido ou um cookie assinado.

Você pode adicionar signatários à sua distribuição usando o CloudFront console ou a CloudFront API.

Adicionar um signatário a uma distribuição usando o console CloudFront

As etapas a seguir mostram como adicionar um grupo de chaves confiáveis como assinante. Também é possível adicionar uma conta da AWS como assinante confiável, mas isso não é recomendado.

Como adicionar um assinante a uma distribuição usando o console
  1. Registre o ID do grupo de chaves que você deseja usar como assinante confiável. Para ter mais informações, consulte Criar um par de chaves para um grupo de chaves confiáveis (recomendado).

  2. Abra o CloudFront console emhttps://console.aws.amazon.com/cloudfront/v4/home.

  3. Escolha a distribuição com os arquivos você deseja proteger com signed URLs ou cookies.

    nota

    Para adicionar um assinante a uma nova distribuição, especifique as mesmas configurações descritas na etapa 6 ao criar a distribuição.

  4. Escolha a guia Behaviors.

  5. Selecione o comportamento de cache com o padrão de caminho corresponde aos arquivos que você deseja proteger com signed URLs ou cookies e escolha Edit (Editar).

  6. Na página Edit Behavior (Editar Comportamento) faça o seguinte:

    1. Em Restrict Viewer Access (Use Signed URLs or Signed Cookies) (Restringir acesso do visualizador (Usar signed URLs ou signed Cookies)), escolha Yes (Sim).

    2. Em Trusted Key Groups or Trusted Signer (Grupos de chaves confiáveis ou assinante confiável), escolha Trusted Key Groups (Grupos de chaves confiáveis).

    3. Em Trusted Key Groups (Grupos de chaves confiáveis), escolha o grupo de chaves a ser adicionado e escolha Add (Adicionar). Repita se quiser adicionar mais de um grupo de chaves.

  7. Escolha Yes, Edit (Sim, editar) para atualizar o comportamento do cache.

Adicionar um assinante a uma distribuição usando a API CloudFront

Você pode usar a CloudFront API para adicionar um grupo de chaves confiável como signatário. É possível adicionar um assinante a uma distribuição existente ou a uma nova distribuição. Em qualquer caso, especifique os valores no elemento TrustedKeyGroups.

Também é possível adicionar uma conta da AWS como assinante confiável, mas isso não é recomendado.

Veja os seguintes tópicos na Amazon CloudFront API Reference:

Alternar pares de chaves

Recomendamos que você alterne (mude) periodicamente seus pares de chaves para signed URLs e cookies. Para alternar os pares de chaves que você estiver usando para criar signed URLs ou cookies sem invalidar os URLs ou os cookies que ainda não expiraram, execute as seguintes tarefas:

  1. Crie um par de chaves e adicione a chave pública a um grupo de chaves. Para obter mais informações, consulte Criar um par de chaves para um grupo de chaves confiáveis (recomendado).

  2. Se você criou um grupo de chaves na etapa anterior, adicione-o à distribuição como assinante.

    Importante

    Não remova nenhuma chave pública existente do grupo de chaves ou nenhum grupo de chaves da distribuição ainda. Somente adicione os novos.

  3. Atualize sua aplicação para criar assinaturas usando a chave privada do novo par de chaves. Confirme se os signed URLs ou cookies com as novas chaves privadas estão funcionando.

  4. Espere passar a data de expiração dos URLs ou cookies que foram assinados usando a chave privada antiga. Depois, remova a chave pública antiga do grupo de chaves. Se você criou um grupo de chaves na etapa 2, remova o grupo de chaves antigo da sua distribuição.