Como assinar solicitações de API da AWS - Referência geral da AWS

Como assinar solicitações de API da AWS

Ao enviar solicitações de HTTP para a AWS, você assina as solicitações para que a AWS possa identificar quem as enviou. Para assinar solicitações, use a chave de acesso da AWS, que é formada por um ID da chave de acesso e a chave de acesso secreta. Algumas solicitações não precisam ser assinadas, como as solicitações anônimas para o Amazon Simple Storage Service (Amazon S3) e algumas operações de API no AWS Security Token Service (AWS STS), como AssumeRoleWithWebIdentity.

nota

Você precisa saber como assinar solicitações HTTP apenas quando as criar manualmente. Quando você usa a AWS Command Line Interface (AWS CLI) ou um dos SDKs da AWS para fazer solicitações para a AWS, essas ferramentas assinam automaticamente as solicitações para você com a chave de acesso que você especifica ao configurar as ferramentas. Se você usar essas ferramentas, não precisará saber como assinar solicitações por si mesmo.

Para saber como criar, visualizar e fazer download de IDs de chave de acesso e chaves de acesso secretas, consulte Chaves de acesso (ID da chave de acesso e a chave de acesso secreta).

Quando assinar solicitações

Ao escrever um código personalizado para enviar solicitações HTTP para a AWS, é necessário incluir um código para assinar as solicitações. Você pode fazer isso pelas seguintes razões:

  • Você está trabalhando com uma linguagem de programação para a qual não há nenhum SDK da AWS.

  • Você deseja ter controle total sobre como uma solicitação é enviada para a AWS.

Você não precisa assinar uma solicitação quando usa a AWS Command Line Interface (AWS CLI) ou um dos AWS SDKs. Essas ferramentas gerenciam os detalhes da conexão, como calcular assinaturas, lidar com novas tentativas de solicitação e tratar erros. Na maioria dos casos, elas também contêm código de exemplo, tutoriais e outros recursos para ajudá-lo a começar a criar aplicativos que interagem com a AWS.

Por que as solicitações são assinadas

O processo de assinatura ajuda a proteger as solicitações das seguintes formas:

  • Verificar a identidade do solicitante

    A assinatura garante que a solicitação foi enviada por alguém com uma chave de acesso válida. Para obter mais informações, consulte Compreender e obter as credenciais.

  • Proteger dados em trânsito

    Para evitar violação de uma solicitação enquanto ela estiver em trânsito, alguns dos elementos de solicitação são usados para calcular um hash (resumo) da solicitação, e o valor de hash resultante é incluído como parte da solicitação. Quando um serviço da AWS recebe a solicitação, ele usa as mesmas informações para calcular um hash e as compara com o valor de hash na sua solicitação. Se os valores não coincidirem, a AWS nega a solicitação.

  • Proteger contra ataques potenciais de replay

    Na maioria dos casos, uma solicitação deve chegar à AWS no lapso de cinco minutos a partir da marca de tempo na solicitação. Caso contrário, a AWS negará a solicitação.

Como assinar solicitações

Para assinar uma solicitação, primeiro calculamos um hash (resumo) da solicitação. Em seguida, você usa o valor do hash, algumas outras informações da solicitação e sua chave de acesso secreta para calcular outro hash conhecido como a assinatura. Depois, a assinatura é adicionada à solicitação de uma das seguintes formas:

  • Usando o cabeçalho Authorization HTTP.

  • Adicionando um valor de string de consulta à solicitação. Como a assinatura faz parte do URL nesse caso, esse tipo de URL é chamado de pre-signed URL.

Versões do Signature

A AWS oferece suporte a duas versões de assinatura: Signature versão 4 e Signature versão 2. Você deve usar Signature versão 4. Todos os serviços da AWS oferecem suporte para Signature versão 4, exceto o Amazon SimpleDB, que requer o Signature versão 2. Para serviços da AWS que oferecem suporte para ambas as versões, recomendamos que você use o Signature versão 4.

Todas as Regiões da AWS oferecem suporte ao Signature versão 4.