Claves HMAC

Configuración

En esta página se describen las claves de código de autenticación de mensajes basado en hash (HMAC), que puedes usar para autenticar solicitudes a la API XML de Cloud Storage. Las claves HMAC son útiles cuando quieres mover datos entre otros proveedores de almacenamiento en la nube y Cloud Storage, ya que te permiten reutilizar tu código para acceder a Cloud Storage.

Información general

Una clave HMAC es un tipo de credencial asociada a una cuenta, normalmente una cuenta de servicio. Utilizas una clave HMAC para crear firmas con el algoritmo de firma HMAC-SHA256. Las firmas que crees se incluirán en las solicitudes a la API XML de Cloud Storage. Las firmas muestran que una solicitud determinada está autorizada por la cuenta asociada a la clave HMAC.

Las claves HMAC tienen dos partes principales: un ID de acceso y un secreto.

  • ID de acceso: cadena alfanumérica vinculada a una cuenta específica.

    • Cuando se vincula a una cuenta de servicio, la cadena tiene una longitud de 61 caracteres.

    • Cuando se vincula a una cuenta de usuario, la cadena tiene una longitud de 24 caracteres.

    A continuación, se muestra un ejemplo de ID de acceso:

    GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Secreto: una cadena de 40 caracteres codificada en Base64 que está vinculada a un ID de acceso específico. Un secreto es una clave precompartida que solo tú y Cloud Storage conocéis. Usas tu secreto para crear firmas como parte del proceso de autenticación. A continuación, se muestra un ejemplo de un secreto:

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Tanto el ID de acceso como el secreto identifican de forma única una clave HMAC, pero el secreto es información mucho más sensible, ya que se usa para crear firmas.

También puedes habilitar la restricción restrictAuthTypes en un recurso, lo que restringe el acceso a las solicitudes firmadas con claves HMAC.

Almacenar secretos

Cuando crea una clave HMAC para una cuenta de servicio, se le proporciona el secreto de la clave una sola vez. Debes almacenar el secreto de forma segura junto con el ID de acceso asociado. Si pierdes el secreto, ni tú ni Google Cloudpodréis recuperarlo, por lo que tendrás que crear una nueva clave HMAC para la cuenta de servicio si quieres seguir autenticando solicitudes.

Para crear una clave HMAC de una cuenta de usuario, debes iniciar sesión en la consolaGoogle Cloud con la cuenta de usuario y acceder a la pestaña Interoperabilidad del menú Configuración de Cloud Storage de un proyecto para el que tengas el permiso de gestión de identidades y accesos resourcemanager.projects.get. Una vez creada, puedes ver el secreto de la clave en la pestaña Interoperabilidad de cualquier proyecto para el que tengas el permiso resourcemanager.projects.get.

Prácticas recomendadas para almacenar secretos

  • No compartas el secreto de tu clave HMAC. Debes tratar los secretos de claves HMAC como cualquier conjunto de credenciales de acceso.

  • Como medida de seguridad recomendada, debes cambiar tus claves periódicamente como parte de una rotación de claves.

  • Si crees que otra persona está usando tus claves HMAC, debes eliminar inmediatamente las claves afectadas y crear otras nuevas.

  • Cuando cambie las claves HMAC, debe actualizar su código con las nuevas claves HMAC antes de eliminar las antiguas. Cuando eliminas claves HMAC, dejan de ser válidas inmediatamente y no se pueden recuperar.

Restricciones

  • Las claves HMAC solo se pueden usar para hacer solicitudes a la API XML, no a la API JSON.

  • Puedes tener un máximo de 10 claves HMAC por cuenta de servicio. Las claves eliminadas no se tienen en cuenta en este límite.

  • Una vez creada, una clave HMAC de cuenta de servicio puede tardar hasta 60 segundos en poder usarse. Después de eliminar una cuenta de servicio, las claves HMAC que le pertenezcan pueden seguir funcionando durante un máximo de 5 minutos. Por el contrario, las claves HMAC pueden tardar hasta 5 minutos en volver a estar disponibles después de restaurar la cuenta de servicio a la que pertenecen.

  • Si habilitas la restricción restrictAuthTypes en un recurso, ya no podrás crear ni activar claves HMAC para el tipo de cuenta especificado en ese recurso.

Migración desde claves HMAC de cuentas de usuario

Por lo general, es mejor asociar claves HMAC a cuentas de servicio que a cuentas de usuario, sobre todo en el caso de las cargas de trabajo de producción:

  • Las cuentas de servicio permiten supervisar mejor la administración y eliminan las implicaciones de seguridad y privacidad de las cuentas de usuarios individuales.

  • Las cuentas de servicio reducen el riesgo de interrupciones del servicio asociadas a las cuentas de usuario, como cuando se inhabilita una cuenta de usuario porque el usuario abandona el proyecto o la empresa.

Si actualmente usas claves HMAC con cuentas de usuario, pero quieres migrar a cuentas de servicio, ten en cuenta lo siguiente:

  • Tu proyecto debe tener una cuenta de servicio y una clave HMAC asociada.

  • Se deben conceder a la cuenta de servicio los permisos necesarios para realizar acciones en Cloud Storage.

    El rol Storage Object Admin incluye permisos amplios para trabajar con objetos, pero puede que quieras tener cuentas de servicio independientes para realizar diferentes acciones. Por ejemplo, puedes usar una cuenta de servicio para leer, que tendría el rol Storage Object Viewer, y otra para escribir, que tendría el rol Storage Object Creator.

  • Debes hacer pruebas para asegurarte de que la cuenta de servicio se comporta como esperas antes de lanzar ninguna actualización en producción.

  • Una vez que tu trabajo de producción pase a usar claves HMAC de cuentas de servicio, debes consultar la siguiente métrica de Cloud Monitoring para verificar que las claves HMAC asociadas a la cuenta de usuario ya no se estén usando:

    Métrica Descripción
    storage.googleapis.com/authn/authentication_count Número de veces que se han usado claves HMAC para autenticar solicitudes.

    Puedes definir las siguientes etiquetas para monitorizar las claves de cuentas de usuario que se siguen usando durante el proceso de migración:

    • access_id: identifica el ID de acceso que ha realizado la solicitud. También puedes usar access_id durante una rotación de claves para ver cómo se mueve el tráfico de una clave a otra.

    • authentication_method: identifica si las claves son de cuentas de usuario o de cuentas de servicio.

  • Una vez que hayas verificado que las claves HMAC de la cuenta de usuario ya no se usan, debes eliminarlas. De este modo, se reduce el riesgo de que se produzca un acceso inadecuado a los datos.

  • Si la cuenta de usuario ya no se usa para acceder a recursos de Cloud Storage, revoca cualquier acceso a Cloud Storage que tenga.

  • Si quieres añadir una capa de seguridad adicional, puedes habilitar la restricción restrictAuthTypes en las claves HMAC de las cuentas de usuario.

Siguientes pasos