Autenticação de solicitações (AWS Signature Version 4) - Amazon Simple Storage Service

View a markdown version of this page

Autenticação de solicitações (AWS Signature Version 4) - Amazon Simple Storage Service

Autenticação de solicitações (AWS Signature Version 4)

Cada interação com o Amazon S3 é autenticada ou anônima. Esta seção explica a autenticação de solicitações com o algoritmo AWS Signature Version 4.

nota

Caso use os SDKs da AWS (consulte Código de exemplo e bibliotecas) para enviar solicitações, você não precisa ler esta seção, pois os clientes do SDK autenticam as solicitações usando as chaves de acesso fornecidas por você. Você deve usar sempre os SDKs da AWS, a menos que tenha um bom motivo para não fazer isso. Nas regiões que oferecem suporte às duas versões de assinatura, você pode solicitar que os SDKs da AWS usem uma versão de assinatura específica. Para obter mais informações, consulte Enviar solicitações autenticadas usando os AWS SDKs. Leia esta seção somente se estiver implementando o algoritmo AWS Signature Version 4 em seu cliente personalizado.

A autenticação com o AWS Signature Version 4 fornece alguns ou todos os itens a seguir, dependendo de como você decidir assinar sua solicitação:

  • Verificação da identidade do solicitante: as solicitações autenticadas exigem uma assinatura que você cria usando as chaves de acesso (ID da chave de acesso, chave de acesso secreta). Para obter informações sobre como obter chaves de acesso, consulte Compreender e obter as credenciais de segurança na Referência geral da AWS. Se você usar credenciais de segurança temporárias, os cálculos da assinatura também exigirão um token de segurança. Para obter mais informações, consulte Solicitação de credenciais de segurança temporárias no Manual do usuário do IAM.

  • Proteção de dados em trânsito: para evitar a adulteração de uma solicitação enquanto ela está em trânsito, você usa alguns dos elementos da solicitação para calcular a assinatura. Ao receber a solicitação, o Amazon S3 calcula a assinatura usando os mesmos elementos da solicitação. Se algum componente de solicitação recebido pelo Amazon S3 não corresponder ao componente usado para calcular a assinatura, o Amazon S3 rejeitará a solicitação.

  • Proteção contra a reutilização das partes assinadas da solicitação: as partes assinadas (usando AWS Signatures) das solicitações são válidas dentro de 15 minutos a partir da data e da hora da solicitação. Uma parte não autorizada que tenha acesso a uma solicitação assinada pode modificar as partes não assinadas da solicitação sem afetar a validade da solicitação no período de 15 minutos. Por isso, recomendamos que você maximize a proteção assinando os cabeçalhos e o corpo da solicitação, fazendo solicitações HTTPS para o Amazon S3 e usando a chave de condição s3:x-amz-content-sha256 (consulte Chaves de política específicas de autenticação do Amazon S3 Signature Version 4.) nas políticas da AWS para exigir que os usuários assinem corpos de solicitação do Amazon S3.

nota

O Amazon S3 é compatível com o Signature Version 4, um protocolo para autenticação de solicitações de API de entrada para produtos da AWS, em todas as Regiões da AWS. Neste momento, as Regiões da AWS criadas antes de 30 de janeiro de 2014 continuarão oferecendo suporte ao protocolo anterior, Signature Version 2. Todas as regiões novas a partir de 30 de janeiro de 2014 oferecerão suporte apenas ao Signature versão 4. Portanto, todas as solicitações para essas regiões devem ser feitas com o Signature versão 4. Para obter mais informações sobre o AWS Signature Version 2, consulte Assinatura e autenticação de solicitações REST no Guia do usuário do Amazon Simple Storage Service.

Métodos de autenticação

É possível expressar informações de autenticação usando um dos métodos a seguir:

  • Cabeçalho HTTP Authorization: usar o cabeçalho HTTP Authorization é o método mais comum para autenticar uma solicitação do Amazon S3. Todas as operações REST do Amazon S3 (exceto para carregamentos baseados em navegador que usam solicitações POST) requerem esse cabeçalho. Para obter mais informações sobre o valor do cabeçalho Authorization e como calcular a assinatura e as opções relacionadas, consulte Autenticação de solicitações: usando o cabeçalho de autorização (AWSSignature Version 4).

  • Parâmetros da string de consulta: é possível usar uma string de consulta para expressar uma solicitação completa em um só URL. Nesse caso, utilize parâmetros de consulta para fornecer informações de solicitação, inclusive as informações de autenticação. Como a solicitação de assinatura faz parte do URL, esse tipo de URL muitas vezes é chamado de URL pré-assinado. É possível usar URLs pré-assinados para incorporar links clicáveis em HTML, que podem ser válidos por até sete dias. Para obter mais informações, consulte Autenticação de solicitações: uso de parâmetros de consulta (AWS Signature Version 4).

O Amazon S3 também oferece suporte a uploads baseados no navegador que usam solicitações HTTP POST. Com uma solicitação HTTP POST, você pode fazer upload de conteúdo para o Amazon S3 diretamente do navegador. Para obter informações sobre autenticação de solicitações POST, consulte Uploads baseados no navegador usando POST (AWS Signature Version 4).

Introdução à assinatura de solicitações

As informações de autenticação enviadas em uma solicitação devem incluir uma assinatura. Para calcular uma assinatura, primeiro concatene os elementos de solicitação selecionados para formar uma string, chamada de string a ser assinada. Em seguida, use uma chave de assinatura para calcular o código de autenticação de mensagens por hash (HMAC) da string para assinar.

No AWS Signature Version 4, você não usa sua chave de acesso secreta apenas para assinar a solicitação. Em vez disso, use primeiro sua chave de acesso secreta para derivar uma chave de assinatura. A chave de assinatura derivada é específica para data, serviço e região. Para obter mais informações sobre como derivar uma chave de assinatura em linguagens de programação diferentes, consulte Exemplos de como derivar uma chave de assinatura para o Signature Version 4.

O diagrama a seguir ilustra o processo geral de computação de uma assinatura.

Processo de três etapas que mostra a criação de StringToSign, a derivação da chave de assinatura e o cálculo da assinatura usando HMAC-SHA256.

A string para assinar depende do tipo de solicitação. Por exemplo, ao usar o cabeçalho HTTP Authorization ou os parâmetros de consulta para autenticação, utilize uma combinação variável de elementos de solicitação para criar a string a ser assinada. Para uma solicitação HTTP POST, a política de POST na solicitação é a string que você assina. Para obter mais informações sobre o cálculo da string a ser assinada, siga os links fornecidos no fim desta seção.

Para chave de assinatura, o diagrama mostra uma série de cálculos, em que o resultado de cada etapa é inserido na etapa seguinte. A etapa final é a chave de assinatura.

Ao receber uma solicitação autenticada, os servidores do Amazon S3 recriam a assinatura usando as informações de autenticação contidas na solicitação. Se as assinaturas coincidirem, o Amazon S3 processará sua solicitação; caso contrário, a solicitação será rejeitada.

Para obter mais informações sobre autenticação de solicitações, consulte os tópicos abaixo: