Clés HMAC

Accéder aux exemples

Cette page traite des clés HMAC (Hash-based Message Authentification Code), qui vous permettent d'authentifier les requêtes envoyées à Cloud Storage.

Présentation

Une clé HMAC est un type d'identifiant et peut être associée à un compte de service ou à un compte utilisateur dans Cloud Storage. Utilisez une clé HMAC pour créer des signatures, qui sont ensuite incluses dans les requêtes envoyées à Cloud Storage. Les signatures indiquent qu'une requête donnée est autorisée par le compte de service ou le compte utilisateur.

Les clés HMAC comportent deux éléments principaux : un ID d'accès et un secret.

  • ID d'accès : chaîne alphanumérique associée à un service ou à un compte utilisateur spécifique. Lorsqu'elle est associée à un compte de service, la chaîne comporte 61 caractères et, lorsqu'elle est associée à un compte utilisateur, la chaîne contient 24 caractères. Voici un exemple d'ID d'accès :

    GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Secret : chaîne de 40 caractères encodée en base64 qui est associée à un ID d'accès spécifique. Un secret est une clé prépartagée que seuls vous et Cloud Storage connaissez. Vous l'utilisez pour créer des signatures dans le cadre du processus d'authentification. Voici un exemple de secret :

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

L'ID d'accès et le secret identifient de manière unique une clé HMAC, mais le secret est un élément d'information beaucoup plus sensible, car il sert à créer des signatures.

Les clés HMAC sont utiles dans le cas suivant :

  • Vous souhaitez déplacer les données entre d'autres fournisseurs de stockage cloud et Cloud Storage, car les clés HMAC vous permettent de réutiliser votre code existant pour accéder à Cloud Storage.

Stocker des secrets

Lorsque vous créez une clé HMAC pour un compte de service, vous recevez le secret une seule fois. Vous devez le stocker de manière sécurisée, tout comme l'ID d'accès associé. Si vous perdez le secret, ni vous, ni Google ne pouvez le récupérer. Vous devez créer une clé HMAC pour que le compte de service puisse continuer à authentifier les requêtes.

Lorsque vous créez une clé HMAC pour un compte utilisateur, vous pouvez afficher son secret depuis Google Cloud Console. Pour ce faire, vous devez être connecté à Cloud Console avec le compte utilisateur. Les secrets associés au compte utilisateur se trouvent dans le menu Paramètres de Cloud Storage, dans l'onglet Interopérabilité.

Bonnes pratiques pour le stockage des secrets

  • Ne partagez pas le secret de votre clé HMAC. Vous devez traiter les secrets de clés HMAC comme n'importe quel ensemble d'identifiants d'accès.

  • Une bonne pratique de sécurité consiste à modifier régulièrement vos clés dans le cadre d'une rotation de clés.

  • Si vous pensez qu'un autre utilisateur utilise vos clés HMAC, vous devez immédiatement supprimer les clés HMAC concernées pour en créer d'autres.

  • Lorsque vous modifiez vos clés HMAC, nous vous recommandons de mettre à jour votre code en spécifiant les nouvelles clés HMAC avant de supprimer les anciennes. Lorsque vous supprimez des clés HMAC, celles-ci deviennent immédiatement non valides et ne peuvent plus être récupérées.

Restrictions

  • Les clés HMAC ne peuvent être utilisées que pour envoyer des requêtes à l'API XML, et non à l'API JSON.

  • Vous pouvez utiliser au maximum cinq clés HMAC par compte de service. Les clés supprimées ne sont pas comptabilisées dans ce quota.

Migrer depuis des clés HMAC de compte utilisateur

En règle générale, il est préférable d'associer des clés HMAC à des comptes de service plutôt qu'à des comptes utilisateur, en particulier pour les charges de travail de production :

  • Les comptes de service permettent une meilleure surveillance administrative, et solutionne les problèmes de sécurité et de confidentialité inhérents des comptes détenus par des utilisateurs individuels.

  • Les comptes de service réduisent le risque d'interruptions de service liées aux comptes utilisateur, par exemple lorsqu'un compte utilisateur est désactivé, car l'utilisateur quitte le projet ou l'entreprise.

Si vous utilisez actuellement des clés HMAC associées à des comptes utilisateur, mais que vous souhaitez migrer vers des comptes de service, gardez à l'esprit les points suivants :

  • Votre projet doit posséder un compte de service et être associé à une clé HMAC.

  • Le compte de service doit disposer des autorisations requises pour effectuer des actions dans Cloud Storage.

    L'autorisation étendue permettant d'utiliser des objets est contenue dans le rôle Storage Object Admin, mais vous pouvez disposer de comptes de service distincts pour effectuer différentes actions. Par exemple, vous pouvez choisir un compte de service pour la lecture, qui aurait le rôle Storage Object Viewer, et un second compte de service pour l'écriture qui aurait le rôle Storage Object Creator.

  • Avant d'envoyer une mise à jour en production, vous devez vérifier que le compte de service se comporte comme prévu.

  • Une fois que vos tâches de production ont migré vers des clés HMAC de compte de service, vous devez vérifier que les clés HMAC associées au compte utilisateur ne sont plus utilisées à l'aide de la métrique Cloud Monitoring ci-dessous.

    Métrique Description
    storage.googleapis.com/authn/authentication_count Nombre de fois où des clés HMAC ont servi à authentifier des requêtes.

    Vous pouvez définir les libellés suivants pour effectuer le suivi des clés du compte utilisateur qui sont toujours utilisées lors la migration :

    • access_id : identifie l'ID d'accès à l'origine de la requête. Vous pouvez également définir le libellé access_id lors d'une rotation de clés pour surveiller le transfert du trafic d'une clé à une autre.

    • authentication_method : détermine si les clés sont associées à un compte utilisateur ou à un compte de service.

  • Lorsque vous avez confirmé que les clés HMAC de compte utilisateur ne sont plus utilisées, nous vous recommandons de les supprimer. Cela réduit le risque d'accès inapproprié aux données.

  • Si le compte utilisateur n'est plus utilisé pour accéder aux ressources Cloud Storage, révoquez tout accès à Cloud Storage dont il dispose.

Étape suivante