Gestión de claves de API de usuario

Un usuario federado o no federado puede crear una clave de API para utilizarla 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® mediante el listado de sus claves, la creación de claves, la actualización de claves o la eliminación de 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 asigne 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 la página Preguntas más frecuentes sobre IAM.

Gestión de claves de API de usuario

Para gestionar las claves de API de IBM Cloud asociadas a su identidad de usuario o las que tiene acceso a gestionar para otros usuarios de la cuenta, vaya a Gestionar > Acceso (IAM) > Claves de API en la consola IBM Cloud. En la página de claves API, puede crear, editar o eliminar claves API de IBM Cloud. 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 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, podría desear utilizar una clave de API al habilitar un programa o script sin distribuir su contraseña al script. Una ventaja de utilizar una clave API es que un usuario u organización puede crear varias claves API para diferentes programas. Las claves API pueden eliminarse de forma independiente si se ven comprometidas sin interferir con otras claves 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 la 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 por defecto 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 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 por defecto 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 Terraform CLI y configure el complemento IBM Cloud Provider para Terraform. Para más información, consulte el tutorial de Introducció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 se definen los recursos utilizando el lenguaje de configuración HashiCorp. Para más información, consulte la documentación de Terraform.

Creación de una clave API mediante Terraform

Siga los siguientes pasos para crear grupos de acceso mediante Terraform.

  1. Cree un argumento en su archivo main.tf. El siguiente ejemplo crea un grupo de acceso utilizando 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 API. Para obtener más información, consulte los detalles de referencia de los argumentos en la página de Terraform Identity and Access Management(IAM).

  2. Después de terminar de crear el archivo de configuración, inicializa Terraform CLI. Para más información, consulte Inicializar directorios de trabajo.

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

    1. Ejecute terraform plan para generar un plan de ejecución Terraform para previsualizar 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 nuevo nombre y la nueva descripción 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 utilizando la API, llame a la API 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

Siga estos pasos para actualizar una clave API mediante terraform:

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

  2. El siguiente ejemplo actualiza una clave API utilizando 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"
     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 API. Para obtener más información, consulte los detalles de referencia de los argumentos en la página de Terraform Identity and Access Management(IAM).

  3. Aprovisione los recursos desde el archivo main.tf. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución Terraform para previsualizar 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.

Bloqueo y desbloqueo de 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 a bloquear, exclusivo con UUID.
UUID (necesario)
UUID de la clave API a bloquear, exclusivo con NAME.
-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.

Bloqueo de una clave API mediante la API

Para bloquear una clave API utilizando la API, llame a la API 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 utilizando la API, llame a la API 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)
}

Bloqueo y desbloqueo de 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 API mediante Terraform

Siga los siguientes pasos para bloquear una clave API mediante Terraform:

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

  2. El siguiente ejemplo actualiza una 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. Aprovisione los recursos desde el archivo main.tf. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.

    1. Ejecute terraform plan para generar un plan de ejecución Terraform para previsualizar 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 > Borrar.
  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 tecla que desea borrar.

Supresión de una clave de API utilizando la API

Para eliminar una clave API utilizando la API, llame a la API 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)
}

Revisión de las claves API de usuario filtradas mediante la consola

Si se detecta una clave API de usuario filtrada, puede utilizar la consola para revisarla. Complete los pasossiguientes:

  1. Inicie la sesión en la consola de IBM Cloud.
  2. Seleccione la cuenta que contiene la clave API filtrada.
  3. Vaya a Gestionar > Acceso > Claves API para revisar la clave API filtrada.

Revisión de claves API de usuario filtradas mediante la CLI

Si se detecta una clave API de usuario filtrada, puede utilizar la CLI para revisarla. Complete los pasossiguientes:

  1. Inicie una sesión en la CLI de IBM Cloud.

  2. Seleccione la cuenta que contiene la clave API filtrada.

  3. Ejecute el mandato siguiente:

    ibmcloud iam api-key <API_key_ID>