Chaves HMAC

Acessar os exemplos

Nesta página, você encontrará informações sobre as chaves de código de autenticação de mensagem baseado em hash (HMAC, na sigla em inglês), que podem ser usadas para autenticar solicitações ao Cloud Storage.

Visão geral

Uma chave HMAC é um tipo de credencial que pode ser associada a uma conta de serviço ou a uma conta de usuário no Cloud Storage. A chave HMAC pode ser usada para criar assinaturas que são incluídas nas solicitações ao Cloud Storage. As assinaturas mostram que uma determinada solicitação foi autorizada pela conta de serviço ou do usuário.

As chaves HMAC têm dois componentes principais: um ID de acesso e uma chave secreta.

  • Código de acesso: uma string alfanumérica de 24 caracteres, vinculada à sua Conta do Google. Exemplo de um código de acesso:

    GOOGTS7C7FUP3AIRVJTE2BCD

  • Secret: uma string codificada com Base-64 de 40 caracteres vinculada a um ID de acesso específico. Trata-se de uma chave pré-compartilhada que apenas você e o Cloud Storage conhecem. Você usa seu secret para criar assinaturas como parte do processo de autenticação. Um exemplo de secret:

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Tanto o ID de acesso quanto a chave secreta identificam uma chave HMAC de modo único. No entanto, o secret é uma informação extremamente confidencial porque é usada para criar assinaturas.

As chaves HMAC são úteis na situação a seguir:

  • Você quer migrar dados entre o Cloud Storage e outros provedores de armazenamento em nuvem. Com as chaves HMAC, é possível reutilizar o código que você já tem para acessar o Cloud Storage.

Como armazenar secrets

Ao criar uma chave HMAC para uma conta de serviço, você recebe uma chave secreta apenas uma vez. É necessário armazená-la em segurança, junto com o respectivo ID de acesso. Se você perder o secret, ele não poderá ser recuperado por você ou pelo Google, e você precisará criar uma nova chave HMAC para a conta de serviço para continuar a autenticar solicitações.

Ao criar uma chave HMAC para uma conta de usuário, é possível ver o segredo da chave no Console do Google Cloud. Para fazer isso, é necessário fazer login no Console do Cloud com a conta de usuário. As chaves secretas associadas à conta de usuário estão no menu Configurações do Cloud Storage, na guia Interoperabilidade.

Práticas recomendadas para armazenar secrets

  • Não compartilhe o secret da sua chave HMAC. Trate os secrets da chave HMAC como faria com qualquer conjunto de credenciais de acesso.

  • Como prática de segurança recomendada, altere regularmente suas chaves como parte do processo de rotação de chaves.

  • Se você acha que outra pessoa está usando suas chaves HMAC, exclua imediatamente as chaves HMAC afetadas e crie novas.

  • Quando você alterar suas chaves HMAC, atualize o código com as chaves novas antes de excluir as antigas. Depois de excluídas, as chaves HMAC se tornam inválidas imediatamente e não podem ser recuperadas.

Restrições

  • As chaves HMAC podem ser usadas para fazer solicitações à API XML, mas não à API JSON.

  • Cada conta de serviço pode ter no máximo cinco chaves HMAC. As chaves excluídas não contam nesse limite.

Migração das chaves HMAC de conta de usuário para contas de serviço

Em geral, associar chaves HMAC a contas de serviço é uma opção melhor do que associá-las a contas de usuário, principalmente no caso das cargas de trabalho em produção:

  • As contas de serviço proporcionam uma melhor supervisão administrativa porque elas não têm as mesmas restrições de privacidade e segurança das contas pertencentes a usuários individuais.

  • As contas de serviço reduzem o risco de interrupções no serviço devido à dependência em contas de usuário como, por exemplo, quando uma conta de usuário é desativada porque a pessoa não faz mais parte do projeto ou da empresa.

Se você atualmente usa chaves HMAC com contas de usuário, mas quer migrar para contas de serviço, lembre-se das seguintes orientações:

  • É necessário que seu projeto tenha uma conta de serviço associada a uma chave HMAC.

  • A conta de serviço precisa receber as permissões necessárias para realizar ações no Cloud Storage.

    A permissão mais abrangente para trabalhar com objetos está no papel Storage Object Admin, mas convém ter contas de serviço separadas para executar ações diferentes. Por exemplo, é recomendável ter uma conta de serviço para leitura com o papel Storage Object Viewer e uma segunda conta de serviço para gravação com o papel Storage Object Creator.

  • Faça testes para ter certeza de que a conta de serviço está se comportando conforme o esperado antes de enviar qualquer atualização para a produção.

  • Depois que o trabalho de produção fizer a transição para as chaves HMAC da conta de serviço, verifique a seguinte métrica do Cloud Monitoring para verificar se as chaves HMAC associadas à conta de usuário não estão mais em uso:

    Metric Descrição
    storage.googleapis.com/authn/authentication_count O número de vezes que chaves HMAC foram usadas para autenticar solicitações.

    É possível definir os seguintes rótulos para rastrear chaves de contas de usuário que ainda estão em uso durante o andamento da migração:

    • access_id: identifica qual código de acesso fez a solicitação. Use access_id durante uma rotação de chaves para acompanhar o tráfego de uma chave para outra.

    • authentication_method: identifica se as chaves são de contas de usuário ou de serviço.

  • Exclua as chaves HMAC de conta de usuário depois de verificar que elas não estão mais em uso. Essa ação reduz o risco de acessos indevidos aos dados.

  • Se a conta de usuário não estiver mais sendo usada para acessar os recursos do Cloud Storage, revogue todos os acessos que ela tem ao produto.

A seguir