IBM Cloud Docs
Utilización de credenciales de HMAC

Utilización de credenciales de HMAC

Las credenciales de HMAC constan de una clave de acceso y una clave secreta emparejadas para su uso con herramientas y bibliotecas S3-compatible que requieren autenticación.

Credenciales HMAC definidas

La API de IBM Cloud® Object Storage es una API basada en REST para leer y escribir objetos. Utiliza IBM Cloud® Identity and Access Management para la autenticación y la autorización, y da soporte a un subconjunto de la API de S3 para facilitar la migración de aplicaciones a IBM Cloud.

Crear credenciales HMAC en la consola

Los usuarios pueden crear un conjunto de credenciales HMAC como parte de una credencial de servicio conmutando Include HMAC Credential a On durante la creación de credenciales en la consola. La Figura 1 muestra la opción para establecer el parámetro HMAC eligiendo "Opciones avanzadas".

configuración HMAC de las opciones avanzadas
incluye la credencial HMAC

Una vez creada la credencial de servicio, la clave HMAC se incluye en el campo cos_hmac_keys. A continuación, estas claves HMAC se asocian con un ID de servicio y se pueden utilizar para acceder a cualquier recurso u operación permitido por el rol del ID de servicio.

Al crear una credencial de servicio, es posible proporcionar un valor de None para el rol. Esto impedirá la creación de políticas de acceso de IAM indeseadas o innecesarias. Las políticas de acceso para el ID de servicio asociado deberán gestionarse utilizando la consola o las API de IAM.

Crear credenciales HMAC utilizando la CLI

También puede utilizar la CLI de IBM Cloud® Object Storage para crear sus credenciales. Debe tener las Instrucciones de línea de mandatos deIBM Cloud Platform ya instaladas para poder utilizar el ejemplo.

ibmcloud resource service-key-create <key-name-without-spaces> Writer --instance-name "<instance name--use quotes if your instance name has spaces>" --parameters '{"HMAC":true}'

Un ejemplo de credenciales HMAC

Si desea almacenar los resultados de la clave generada, puede añadir > file.skey al final del ejemplo. En este conjunto de instrucciones, solo necesita encontrar la cabecera cos_hmac_keys con las claves hijo, access_key_id y secret_access_key.

    cos_hmac_keys:
        access_key_id:      7exampledonotusea6440da12685eee02
        secret_access_key:  8not8ed850cddbece407exampledonotuse43r2d2586

Establecimiento de credenciales HMAC como variables de entorno

Una vez que haya creado las credenciales, puede establecerlas como variables de entorno (cuyas instrucciones son específicas del sistema operativo implicado). Por ejemplo, en el Ejemplo 3, un script .bash_profile contiene COS_HMAC_ACCESS_KEY_ID y COS_HMAC_SECRET_ACCESS_KEY que se exportan al iniciar un shell y se utilizan en el desarrollo.

export COS_HMAC_ACCESS_KEY_ID="7exampledonotusea6440da12685eee02"
export COS_HMAC_SECRET_ACCESS_KEY="8not8ed850cddbece407exampledonotuse43r2d2586"

Próximos pasos

Tenga en cuenta que, cuando se utilizan credenciales de HMAC para crear firmas que se utilizan con llamadas directas a la API REST, se necesitan cabeceras adicionales:

  1. Todas las solicitudes deben tener una cabecera x-amz-date con la fecha en el formato %Y%m%dT%H%M%SZ.
  2. Cualquier solicitud que tenga una carga útil (carga de objetos, supresión de varios objetos, etc.) debe proporcionar una cabecera x-amz-content-sha256 con un hash SHA256 del contenido de la carga útil.
  3. Las ACL (que no sean public-read) no reciben soporte.

Actualmente no todas las herramientas compatibles con S3 reciben soporte. Algunas herramientas intentan establecer ACL que no son public-read durante la creación de grupos. La creación de cubos a través de estas herramientas fallará. Si una solicitud ' PUT bucket ' falla con un error ACL no soportado, primero utilice la consola como se muestra en la puesta en marcha con IBM Cloud Object Storage para crear el bucket, a continuación, configure la herramienta para leer y escribir objetos en ese bucket. Las herramientas que establecen las ACL al escribir objetos no reciben soporte actualmente.