IBM Cloud Docs
Gestión de claves de API de usuario

Gestión de claves de API de usuario

Un usuario federado o no federado puede crear una clave API para usarla en la CLI o como parte de la automatización para iniciar sesión como su identidad de usuario. Puede utilizar la consola, la CLI o la API para gestionar sus claves de API de IBM Cloud® enumerando sus claves, creando claves, actualizando claves o eliminando claves.

La clave de API hereda todo el acceso asignado para la identidad de usuario para la que se ha creado, y el acceso no se limita únicamente a la cuenta en la que se crea la clave de API, ya que hereda las políticas asignadas al usuario. Así pues, si el usuario tiene acceso a recursos de varias cuentas, la clave de API hereda el acceso de todas las cuentas. Por lo tanto, se puede utilizar la clave de API de un usuario para generar una señal y acceder a los recursos a los que tiene acceso un usuario fuera de la cuenta en la que se ha creado la clave de API.

La clave API que está asociada a su identidad de usuario tiene todo el acceso al que tiene derecho a través de cualquier cuenta de la que sea miembro. Por este motivo, debe tener cuidado con el uso que hace de su clave API. Por ejemplo, es posible que un servicio de IBM Cloud tenga que actuar en nombre de un usuario o de servicios de acceso que no estén habilitados para IAM, por lo que el servicio puede solicitar una clave de API de usuario. En estos casos, cree una clave API asociada a un ID funcional al que se le asigna el nivel mínimo de acceso necesario para trabajar con el servicio.

Un ID funcional es un ID de usuario creado para representar un programa, una aplicación o un servicio. Se puede invitar al ID funcional a una cuenta y se le puede asignar acceso solo para una determinada finalidad, como interactuar con un determinado recurso o aplicación. Se debe otorgar al ID funcional el nivel de acceso mínimo en una sola cuenta que se necesite para realizar la función específica para la que se ha creado.

Si está aplicando un perfil de confianza, no puede crear una clave de API de usuario. Sí puede crear y gestionar las demás claves de API. Por ejemplo, las claves de API de ID de servicio. Para más información, consulte las preguntas frecuentes sobre IAM.

Gestión de claves de API de usuario

Para gestionar las claves de API de IBM Cloud asociadas a la identidad de usuario o a las que tiene acceso para gestionar para otros usuarios de la cuenta, vaya a Gestionar > Acceso (IAM) > Claves de API en la consola de IBM Cloud. En la página de claves API, puede crear, editar o eliminar IBM Cloud claves API para usted. También puede gestionar todas las claves de API de infraestructura clásicas de los usuarios de los que es antepasado en la jerarquía de usuarios. Además, si es el propietario de la cuenta o un usuario ha asignado el acceso necesario para gestionar las claves de API de otro usuario en la cuenta, puede utilizar el filtro Ver para listar y gestionar también dichas claves de API.

Acceso necesario para la gestión de claves API en la página de claves API
Opciones de filtro Claves de API visualizadas Acceso necesario Acciones permitidas
Mis claves de API de IBM Cloud Sus claves de API de IBM Cloud No se requiere acceso Ver, crear, editar, suprimir
Todas las claves de API de IBM Cloud Todas las claves de API de IBM Cloud creadas por todos los usuarios de la cuenta Rol de administrador en servicio de identidad IAM Ver, editar y suprimir

Crear una clave de API en la consola

Como usuario de IBM Cloud, es posible que desee utilizar una clave de API cuando habilite un programa o script sin distribuir la contraseña al script. Una ventaja de utilizar una clave de API es que un usuario u organización puede crear varias claves de API para distintos programas. Las claves de API se pueden suprimir de forma independiente si están comprometidas sin interferir con otras claves de API o incluso con el usuario. Puede crear hasta 20 claves de API.

Para crear una clave de API para la identidad de usuario en la IU, siga estos pasos:

  1. En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) > Claves de API.
  2. Pulse Crear una clave de API de IBM Cloud.
  3. Especifique un nombre y una descripción para su clave de API.
  4. Pulse Crear.
  5. A continuación, pulse Mostrar para visualizar la clave de API. O bien, pulse Copiar para copiarla y guardarla para más adelante, o pulse Descargar.

Por motivos de seguridad, la clave de API sólo está disponible para copiarse o descargarse en el momento de la creación. Si se pierde la clave de API, deberá crear una nueva clave de API.

Creación de una clave de API utilizando la CLI

Para crear una clave de API mediante la CLI, utilice el mandato siguiente:

  1. Introduzca ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE] y especifique un nombre, una descripción y un archivo para guardar su clave. Consulte el ejemplo siguiente:
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"

Para --action-if-leaked, los valores posibles son "NONE", "DISABLE" o "DELETE". La acción predeterminada es "DESACTIVAR".

  • DESHABILITAR: Deshabilitar la clave bloquea inmediatamente su capacidad para autenticarse y acceder a los servicios. Si es necesario, puede volver a activar la clave más adelante.
  • ELIMINAR: La clave API se elimina permanentemente de su cuenta y ya no se puede utilizar para autenticarse. Esta acción no se puede deshacer.
  • NINGUNO: La clave permanece activa y puede seguir utilizándose para acceder a los recursos.

Creación de una clave de API mediante la API

Para crear una clave API, llame a la API de IAM Identity Service como se muestra en el siguiente ejemplo:

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key",
  "iam_id": "IBMid-123WEREW",
  "account_id": "ACCOUNT_ID"
  "store_value": false
  "action_when_leaked": "delete"
  "support_sessions": false
}'
CreateApiKeyOptions createApiKeyOptions = new CreateApiKeyOptions.Builder()
    .name(apiKeyName)
    .iamId(iamId)
    .description("Example ApiKey")
    .build();

Response<ApiKey> response = service.createApiKey(createApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
apikeyId = apiKey.getId();
System.out.println(apiKey.toString());
const params = {
  name: apikeyName,
  iamId: iamId,
  description: 'Example ApiKey',
};

iamIdentityService.createApiKey(params)
  .then(res => {
    apikeyId = res.result.id
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.create_api_key(
  name=apikey_name,
  iam_id=iam_id
).get_result()

apikey_id = api_key['id']

print(json.dumps(api_key, indent=2))
createAPIKeyOptions := iamIdentityService.NewCreateAPIKeyOptions(apikeyName, iamID)
createAPIKeyOptions.SetDescription("Example ApiKey")

apiKey, response, err := iamIdentityService.CreateAPIKey(createAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))
apikeyID = *apiKey.ID

Para action_when_leaked, los valores posibles son "ninguno", "desactivar" o "eliminar". La acción predeterminada es «desactivar».

  • deshabilitar: Deshabilitar la clave bloquea inmediatamente su capacidad de autenticación y acceso a los servicios. Si es necesario, puede volver a activar la clave más adelante.
  • eliminar: La clave API se elimina permanentemente de su cuenta y ya no se puede utilizar para autenticarse. Esta acción no se puede deshacer.
  • ninguna: La clave permanece activa y puede seguir utilizándose para acceder a los recursos.

Para support_sessions, defina si puede gestionar sesiones de inicio de sesión CLI para la clave API:

  • verdadero: Crea sesiones de inicio de sesión para esta clave de API, que puede gestionar revisando o revocando sesiones. Para obtener más información, consulte Supervisión de las sesiones de inicio de sesión.
  • falso: No se crean ni se rastrean sesiones. No puedes revocar ni revisar ningún inicio de sesión y debes eliminar o rotar la propia clave API para bloquear el acceso.

Antes de empezar

Antes de poder gestionar las claves API de usuario mediante Terraform, asegúrese de completar los siguientes pasos:

  • Instale la CLI de Terraform y configure el plugin de proveedor de IBM Cloud para Terraform. Para obtener más información, consulte la guía de aprendizaje de Iniciación a Terraform en IBM Cloud®. El plug-in abstrae las API de IBM Cloud que se utilizan para completar esta tarea.
  • Cree un archivo de configuración de Terraform denominado main.tf. En este archivo, puede definir recursos utilizando HashiCorp Configuration Language. Para más información, consulte la documentación de Terraform.

Creación de una clave API mediante Terraform

Utilice los pasos siguientes para crear grupos de acceso utilizando Terraform.

  1. Cree un argumento en el archivo main.tf. El siguiente ejemplo crea un grupo de acceso mediante el recurso ibm_iam_api_key, donde name es un nombre único para identificar la clave API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
    }
    

    La propiedad description sólo está disponible si se proporciona una descripción durante la creación de la clave de API. Para obtener más información, consulte los detalles de referencia de argumentos en la página de Terraform(Identity and Access Management, IAM ).

  2. Después de terminar de crear el archivo de configuración, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.

    terraform init
    
  3. Suministre los recursos desde el archivo main.tf. Para obtener más información, consulte Infraestructura de suministro con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.

      terraform plan
      
    2. Ejecute terraform apply para crear los recursos definidos en el plan.

      terraform apply
      

Actualización de una clave API en la consola

Si desea cambiar el nombre o la descripción de una clave de API, lleve a cabo los pasos siguientes en la IU o CLI.

Para editar una clave de API, siga estos pasos:

  1. En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) > Claves de API.
  2. Identifique la fila de la clave de API que desea actualizar y pulse el icono Acciones Icono Acciones > Editar.
  3. Actualice la información de su clave de API.
  4. Haga clic en Aplicar.

Para editar una clave de API que no es la suya propia, pero que tiene acceso para gestionar, vaya a la página de claves de API. A continuación, seleccione la opción Todas las claves de API de usuario de IBM Cloud en el menú Ver para encontrar la clave de API.

Actualización de una clave API mediante la CLI

Para editar una clave de API mediante la CLI, especifique el mandato siguiente:

  1. Introduzca ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION], especificando el nombre antiguo, el nombre nuevo y la descripción nueva de la clave. Para más información, consulte el siguiente ejemplo:
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"

Actualización de una clave de API mediante la API

Para editar una clave API mediante la API, llame a la API de IAM Identity Service como se muestra en el siguiente ejemplo:

curl -X PUT 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'If-Match: <value of etag header from GET request>' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key"
}'
UpdateApiKeyOptions updateApiKeyOptions = new UpdateApiKeyOptions.Builder()
    .id(apikeyId)
    .ifMatch(apikeyEtag)
    .description("This is an updated description")
    .build();

Response<ApiKey> response = service.updateApiKey(updateApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
System.out.println(apiKey.toString());
const params = {
  id: apikeyId,
  ifMatch: apikeyEtag,
  description: 'This is an updated description',
};

iamIdentityService.updateApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.update_api_key(
  id=apikey_id,
  if_match=apikey_etag,
  description='This is an updated description'
).get_result()

print(json.dumps(api_key, indent=2))
updateAPIKeyOptions := iamIdentityService.NewUpdateAPIKeyOptions(apikeyID, apikeyEtag)
updateAPIKeyOptions.SetDescription("This is an updated description")

apiKey, response, err := iamIdentityService.UpdateAPIKey(updateAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))

Actualización de una clave API mediante Terraform

Utilice los pasos siguientes para actualizar una clave de API utilizando terraform:

  1. En el archivo de configuración de Terraform main.tf, busque el código de Terraform que utilizó para crear el archivo iam_api_key.

  2. El ejemplo siguiente actualiza la clave de API utilizando el recurso ibm_iam_api_key, donde name es un nombre exclusivo para identificar la clave de API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
     description = "API key for users"
    }
    

    La propiedad description sólo está disponible si se proporciona una descripción durante la creación de la clave de API. Para obtener más información, consulte los detalles de referencia de argumentos en la página de Terraform(Identity and Access Management, IAM ).

  3. Suministre los recursos desde el archivo main.tf. Para obtener más información, consulte Infraestructura de suministro con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.

      terraform plan
      
    2. Ejecute terraform apply para crear los recursos definidos en el plan.

      terraform apply
      

Para obtener más información, consulte la documentación de Terraform.

Bloquear y desbloquear una clave API en la consola

Para las claves de API de plataforma que representan la identidad de usuario, puede impedir que la clave de API se suprima al bloquearla. Una clave API bloqueada tiene el icono Bloqueado .

  1. En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) > Claves de API.
  2. Identifique la fila de la clave de API que dese bloquear y pulse el icono Acciones Icono Acciones > Bloquear.

Puede desbloquear su clave de API en cualquier momento para actualizar o eliminar la clave de API de la cuenta. Seleccione la clave de API de la tabla que desee desbloquear y pulse el iconoAcciones Icono Acciones > Desbloquear.

Bloqueo y desbloqueo de una clave de API mediante la CLI

Para las claves de API de plataforma que representan la identidad de usuario, puede impedir que la clave de API se suprima al bloquearla. Para bloquear una clave de API, utilice el mandato siguiente:

ibmcloud iam api-key-lock (NAME|UUID) [-f, --force]

Requisitos previos: Punto final, Inicio de sesión

Opciones de mandato:

NAME (necesario)
El nombre de la clave API que se va a bloquear, exclusivo con UUID.
UUID (necesario)
UUID de la clave API a bloquear, exclusiva con NOMBRE.
-f, --force
Fuerza el bloqueo sin confirmación.

Ejemplo:

Bloquear clave de API test-api-key

ibmcloud iam api-key-lock test-api-key

Para desbloquear una clave de API, ejecute el mandato siguiente:

ibmcloud iam api-key-unlock (NAME|UUID) [-f, --force]

Requisitos previos: Punto final, Inicio de sesión

Opciones de mandato:

NAME (necesario)
Nombre de la clave de API a desbloquear, exclusiva con UUID.
UUID (necesario)
UUID de la clave de API a desbloquear, exclusiva con NAME.
-f, --force
Fuerza el desbloqueo sin confirmación.

Ejemplo:

Desbloquear clave de API test-api-key

ibmcloud iam api-key-unlock test-api-key

Bloqueo y desbloqueo de una clave de API mediante la API

Para las claves de API de plataforma que representan la identidad de usuario, puede impedir que la clave de API se suprima al bloquearla.

Bloquear una clave API utilizando la API

Para bloquear una clave API mediante el uso de la API, llame a la API de IAM Identity Service como se muestra en el siguiente ejemplo:

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
LockApiKeyOptions lockApiKeyOptions = new LockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.lockApiKey(lockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.lockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
lock_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.lock_api_key(id=apikey_id)

print(response)
lockAPIKeyOptions := iamIdentityService.NewLockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.LockAPIKey(lockAPIKeyOptions)
if err != nil {
  panic(err)
}

Desbloqueo de una clave de API

Para desbloquear una clave API mediante el uso de la API, llame a la API de IAM Identity Service como se muestra en el siguiente ejemplo:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockApiKeyOptions unlockApiKeyOptions = new UnlockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.unlockApiKey(unlockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.unlockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
response = iam_identity_service.unlock_api_key(id=apikey_id)

print(response)
unlockAPIKeyOptions := iamIdentityService.NewUnlockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.UnlockAPIKey(unlockAPIKeyOptions)
if err != nil {
  panic(err)
}

Bloquear y desbloquear una clave API mediante Terraform

Para las claves de API de plataforma que representan la identidad de usuario, puede impedir que la clave de API se suprima al bloquearla.

Bloqueo de una clave de API utilizando Terraform

Utilice los pasos siguientes para bloquear una clave de API utilizando Terraform:

  1. En el archivo de configuración de Terraform main.tf, busque el código de Terraform que utilizó para crear el archivo iam_api_key.

  2. El ejemplo siguiente actualiza y clave de API utilizando el recurso ibm_iam_api_key, donde entity_lock indica si la clave de API está bloqueada para más operaciones de escritura. El valor predeterminado es false.

    resource "ibm_iam_api_key" "iam_api_key" {
     entity_lock        = "true"
    }
    
  3. Suministre los recursos desde el archivo main.tf. Para obtener más información, consulte Infraestructura de suministro con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.

      terraform plan
      
    2. Ejecute terraform apply para crear los recursos definidos en el plan.

      terraform apply
      

Para obtener más información, consulte la documentación de Terraform.

Supresión de una clave de API

Si está utilizando una estrategia de rotación de clave, es posible que desee suprimir una clave más antigua y sustituirla por una clave nueva.

Para suprimir una clave de API, siga estos pasos:

  1. En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) > Claves de API.
  2. Identifique la fila de la clave API que desea eliminar y haga clic en el icono Acciones. Icono Acciones > Eliminar.
  3. A continuación, confirme la supresión pulsando Suprimir.

Para suprimir una clave de API que no es la suya propia, pero que tiene acceso para gestionar, vaya a la página de claves de API. A continuación, seleccione la opción Todas las claves de API de usuario de IBM Cloud en el menú Ver para encontrar la clave de API.

Supresión de una clave de API utilizando la CLI

Para suprimir una clave de API con la CLI:

Introduzca ibmcloud iam api-key-delete NAME, especificando el nombre de la clave que desea eliminar.

Supresión de una clave de API utilizando la API

Para eliminar una clave API mediante la API, llame a la API de IAM Identity Service como se muestra en el siguiente ejemplo:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
DeleteApiKeyOptions deleteApiKeyOptions = new DeleteApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.deleteApiKey(deleteApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.deleteApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
delete_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.delete_api_key(id=apikey_id)

print(response)
deleteAPIKeyOptions := iamIdentityService.NewDeleteAPIKeyOptions(apikeyID)

response, err := iamIdentityService.DeleteAPIKey(deleteAPIKeyOptions)
if err != nil {
  panic(err)
}