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 para a API Cloud Storage XML. As chaves HMAC são úteis quando você quer mover dados entre outros provedores de armazenamento em nuvem e o Cloud Storage. As chaves HMAC permitem reutilizar seu código existente para acessar o Cloud Storage.
Visão geral
Uma chave HMAC é um tipo de credencial associada a uma conta, normalmente uma conta de serviço. Use uma chave HMAC para criar assinaturas usando o algoritmo de assinatura HMAC-SHA256. As assinaturas criadas são incluídas nas solicitações para a API XML do Cloud Storage. As assinaturas mostram que uma determinada solicitação foi autorizada pela conta associada à chave HMAC.
As chaves HMAC têm dois componentes principais: um ID de acesso e uma chave secreta.
ID de acesso: uma string alfanumérica vinculada a uma conta específica.
Quando vinculada a uma conta de serviço, a string tem 61 caracteres.
Quando vinculada a uma conta de usuário, a string tem 24 caracteres.
Veja a seguir um exemplo de ID de acesso:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
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. Veja a seguir 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.
Também é possível ativar a restrição restrictAuthTypes
em um recurso, o que restringe o acesso a solicitações assinadas por chaves HMAC.
Como armazenar chaves secretas
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 Cloud, e você precisará criar uma nova chave HMAC para a conta de serviço para continuar a autenticar solicitações.
Para criar uma chave HMAC para uma conta de usuário, você precisa fazer login no
Console do Google Cloud com a conta de usuário e acessar Interoperabilidade
Guia "Cloud Storage" Configurações o menu de um projeto em que você
tem a permissão do IAM resourcemanager.projects.get
. Depois de
criado, é possível visualizar o secret da chave na guia Interoperabilidade de qualquer
projeto em que você tenha a permissão resourcemanager.projects.get
.
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 10 chaves HMAC. As chaves excluídas não contam nesse limite.
Após a criação, pode levar até 30 segundos para uma chave HMAC da conta de serviço ficar utilizável. Depois de excluir uma conta de serviço, as chaves HMAC que pertencem a ela podem continuar funcionando por até cinco minutos. Por outro lado, pode levar até cinco minutos para que as chaves HMAC se tornem utilizáveis novamente após cancelar a exclusão da conta de serviço proprietária delas.
Se a restrição
restrictAuthTypes
for ativada em um recurso, não será mais possível criar ou ativar chaves HMAC para o tipo de conta especificado nesse recurso.
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 papelStorage Object Viewer
e uma segunda conta de serviço para gravação com o papelStorage 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:
Métrica 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. Useaccess_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.
Você também pode ativar a restrição
restrictAuthTypes
nas chaves HMAC da conta de usuário para ter uma camada extra de segurança.