Gestión de claves de API de ID de servicio
Los ID de servicio se crean para permitir el acceso a los servicios de IBM Cloud® mediante aplicaciones alojadas tanto dentro como fuera de IBM Cloud. Las claves de API las utiliza una aplicación para autenticarse como un ID de servicio concreto y se les otorga el acceso que está asociado con dicho ID de servicio específico.
Después de crear un ID de servicio, puede empezar a crear claves de API y a asignar políticas de servicio. Cada política especifica el nivel de acceso permitido cuando se utiliza la clave de API para autenticarse con los servicios. Para obtener más información sobre la creación de un ID de servicio y la asignación de políticas, consulte Creación y trabajo con los ID de servicio. Para obtener más información sobre los mandatos de CLI que se utilizan para gestionar claves de API de ID de servicio, consulte Gestión de acceso de IAM, claves de API, ID de servicio y grupos de acceso.
Cada clave de API que está asociada con un ID de servicio hereda la política que se ha asignado al ID de servicio. Por ejemplo, si desea que una aplicación pueda ver recursos dentro de un servicio, debe utilizar una clave de API que esté asociada con un ID de servicio que tenga una política asignada con el rol de visor. Si desea que otra aplicación pueda tener acceso completo dentro de un servicio, es necesario utilizar una clave de API que esté asociada con un segundo ID de servicio que tenga una política asignada con el rol de administrador.
Para ver algunos ejemplos de cómo se puede utilizar un ID de servicio, consulte Uso de credenciales HMAC en la documentación de Object Storage, o este vídeo de IBM Cloud Data Engine sobre Cómo utilizar la API REST de IBM Cloud Data Engine.
Acceso necesario para la gestión de claves de API de ID de servicio
Todos los usuarios pueden crear ID de servicio en una cuenta, y son el administrador de dichos ID y pueden crear la clave de API y las políticas de acceso asociadas. Sin embargo, los propietarios de cuenta y los usuarios asignados al rol de Administrador en el servicio de identidad de IAM pueden gestionar las claves de API para todos los ID de servicio de una cuenta. A los usuarios también se les puede dar acceso a un único ID de servicio, si el ID se especifica cuando el administrador asigna el acceso.
Si es un usuario con el acceso necesario, puede ver, actualizar y suprimir claves de API para cualquier ID de servicio en la cuenta. Vaya a la página Claves de API y seleccione la opción Todas las claves de API del ID de servicio en el menú Ver para encontrar una clave de API para la que desea ver detalles, actualizar o suprimir.
Creación de una clave de API para un ID de servicio
Cree una clave de API para asociarla a un ID de servicio en la consola:
- En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) y seleccione ID de servicio.
- Si no tiene un ID de servicio creado, créelo.
- Pulse el icono Acciones
> Gestionar ID de servicio.
- Pulse Claves de API.
- Pulse Crear.
- Añada un nombre y una descripción para identificar de forma sencilla la clave de API.
- Pulse Crear.
- Guarde la clave de API copiándola o descargándola a una ubicación segura.
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.
Actualización de una clave API para un ID de servicio mediante la consola
Puede actualizar una clave de API editando el nombre o la descripción que se utiliza para identificar la clave en la IU.
- En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) y seleccione ID de servicio.
- Pulse el icono Acciones
> Gestionar ID de servicio.
- Pulse Claves de API.
- Pulse el icono Acciones
> Editar nombre y descripción.
Si no ha creado el ID de servicio, pero es el propietario de la cuenta o un administrador del servicio de identidad IAM, puede actualizar las claves de API para cualquier ID de servicio de la cuenta. Vaya a la página Claves de API y seleccione la opción Todas las claves de API del ID de servicio en el menú Ver para encontrar la clave de API con la que desea trabajar.
Creación de una clave de API para un ID de servicio utilizando la CLI
Para crear una clave de API para un ID de servicio utilizando la CLI, puede utilizar el mandato ibmcloud iam service-api-key-create.
ibmcloud iam service-api-key-create NAME (SERVICE_ID_NAME|SERVICE_ID_UUID) [-d, --description DESCRIPTION] [--file FILE] [-f, --force] [--lock]
Actualización de una clave de API para un ID de servicio utilizando la CLI
Para actualizar una clave de API para un ID de servicio utilizando la CLI, puede utilizar el mandato ibmcloud iam service-api-key-update.
ibmcloud iam service-api-key-update NAME SERVICE_ID [-n, --name NEW_sNAME] [-d, --description DESCRIPTION] [-v, --version VERSION] [-f, --force]
Bloqueo de una clave de API de ID de servicio
Para las claves de API que representan la identidad del ID de servicio, puede impedir que la clave de API se suprima al bloquearla. Una clave de API bloqueada se indica mediante el icono Bloqueado en la interfaz de usuario.
- En la consola de IBM Cloud, pulse Gestionar > Acceso (IAM) y seleccione ID de servicio.
- Identifique la fila del ID de servicio para la que desee seleccionar una clave de API y seleccione el nombre del ID de servicio.
- Pulse Claves de API.
- Pase el puntero del ratón sobre la fila de la clave de API que desea bloquear y pulse el icono Acciones
para abrir una lista de opciones.
- Pulse Bloquear clave de API.
Puede desbloquear su clave de API en cualquier momento para actualizar, suprimir o añadir una política de acceso, o para eliminar la clave de API.
Bloqueo o desbloqueo de una clave de API de ID de servicio con la CLI
Para las claves de API que representan la identidad del ID de servicio, puede impedir que la clave de API se suprima al bloquearla. Una clave de API bloqueada se indica mediante el icono Bloqueado en la interfaz de usuario. Para bloquear una clave de API de ID de servicio, utilice el mandato siguiente:
ibmcloud iam service-api-key-lock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]
- Requisitos previos
- Punto final, Inicio de sesión, Objetivo
Opciones de mandato:
- APIKEY_NAME (necesario)
- Nombre de la clave de API, exclusivo con APIKEY_UUID
- APIKEY_UUID (necesario)
- UUID de la clave de API, exclusivo con APIKEY_NAME
- SERVICE_ID_NAME (necesario)
- Nombre del ID de servicio, exclusivo con SERVICE_ID_UUID
- SERVICE_ID_UUID (necesario)
- UUID del ID de servicio, exclusivo con SERVICE_ID_NAME
- -f, --force
- Bloquear sin confirmación
Ejemplos:
Bloquear clave de API de servicio sample-key del ID de servicio sample-service:
ibmcloud iam service-api-key-lock sample-key sample-service
Para desbloquear una clave de API de ID de servicio, utilice el mandato siguiente:
ibmcloud iam service-api-key-unlock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]
Supresión de una clave de API para un ID de servicio
Puede suprimir una clave de API que esté asociada con un ID de servicio. Sin embargo, al suprimir una clave de API utilizada por una aplicación se elimina la posibilidad de que dicha aplicación se autentique con los servicios.
- En la consola de IBM Cloud, vaya a Gestionar > Acceso (IAM) y seleccione ID de servicio.
- Si no tiene un ID de servicio creado, créelo.
- Pulse el icono Acciones
> Gestionar ID de servicio.
- Pulse Claves de API.
- Pulse el icono Acciones
> Suprimir.
Si no ha creado el ID de servicio, pero es el propietario de la cuenta o un administrador del servicio de identidad IAM, puede suprimir las claves de API para cualquier ID de servicio de la cuenta. Vaya a la página Claves de API y seleccione la opción Todas las claves de API del ID de servicio en el menú Ver para encontrar la clave de API con la que desea trabajar.
Supresión de una clave de API para un ID de servicio mediante la CLI
Puede suprimir una clave de API que esté asociada con un ID de servicio. Sin embargo, al suprimir una clave de API utilizada por una aplicación se elimina la posibilidad de que dicha aplicación se autentique con los servicios. Para suprimir una clave de API para un ID de servicio utilizando la CLI, puede utilizar el mandato ibmcloud iam service-api-key-delete.
ibmcloud iam service-api-key-delete NAME SERVICE_ID [-f, --force]
Creación de una clave de API para un ID de servicio mediante la API
Para crear una clave API de ID de servicio, 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": "Service-apikey",
"description": "my service key",
"iam_id": "IBMid-123WEREW",
"account_id": "ACCOUNT_ID"
"store_value": 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
Actualización de una clave de API para un ID de servicio mediante la API
Para editar una clave API para un ID de servicio 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": "Service-apikey",
"description": "my service 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))
Bloqueo y desbloqueo de una clave de API para un ID de servicio mediante la API
Para las claves de API que representan la identidad del ID de servicio, puede impedir que la clave de API se suprima al bloquearla.
Bloqueo de una clave de API
Para bloquear una clave API para un ID de servicio 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);
});
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 para un ID de servicio mediante 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/serviceids/SERVICE_ID_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockServiceIdOptions unlockServiceIdOptions = new UnlockServiceIdOptions.Builder()
.id(svcId)
.build();
service.unlockServiceId(unlockServiceIdOptions).execute();
const params = {
id: svcId,
};
iamIdentityService.unlockServiceId(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
done(err);
});
response = iam_identity_service.unlock_service_id(id=svc_id)
print(response)
unlockServiceIDOptions := iamIdentityService.NewUnlockServiceIDOptions(svcID)
response, err := iamIdentityService.UnlockServiceID(unlockServiceIDOptions)
if err != nil {
panic(err)
}
Supresión de una clave de API para un ID de servicio mediante la API
Para eliminar una clave API mediante un ID de servicio 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)
}
Antes de empezar
Antes de poder gestionar claves API de ID de servicio mediante Terraform, asegúrese de haber completado lo siguiente:
- 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 para un ID de servicio mediante Terraform
Siga estos pasos para crear una clave API para un ID de servicio mediante Terraform.
-
Cree un argumento en su archivo
main.tf. El siguiente ejemplo crea una clave API para un ID de servicio utilizando el recursoibm_iam_service_api_key, dondenamees un nombre único para identificar la clave API de servicio. Para completar la tarea, debe disponer de un ID de IAM del servicio.resource "ibm_iam_service_id" "serviceID" { name = "servicetest" } resource "ibm_iam_service_api_key" "testacc_apiKey" { name = "testapikey" iam_service_id = ibm_iam_service_id.serviceID.iam_id }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).
-
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 -
Aprovisione los recursos desde el archivo
main.tf. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.-
Ejecute
terraform planpara generar un plan de ejecución Terraform para previsualizar las acciones propuestas.terraform plan -
Ejecute
terraform applypara crear los recursos definidos en el plan.terraform apply
-
Actualización de una clave API para un ID de servicio mediante Terraform
Siga estos pasos para actualizar una clave API para un ID de servicio mediante Terraform:
-
Cree un argumento en su archivo
main.tf. Puede actualizar la clave API para un ID de servicio añadiendo nuevos valores a las opcionesnameyiam_service_iddel siguiente ejemplo.resource "ibm_iam_service_id" "serviceID" { name = "servicetest" } resource "ibm_iam_service_api_key" "testacc_apiKey" { name = "testapikey" iam_service_id = ibm_iam_service_id.serviceID.iam_id }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).
-
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 -
Aprovisione los recursos desde el archivo
main.tf. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.-
Ejecute
terraform planpara generar un plan de ejecución Terraform para previsualizar las acciones propuestas.terraform plan -
Ejecute
terraform applypara crear los recursos definidos en el plan.terraform apply
-
Eliminación de una clave API para un ID de servicio mediante Terraform
Debe haber creado la clave API para un ID de servicio utilizando el archivo Terraform. Siga estos pasos para eliminar una clave API para un ID de servicio mediante Terraform.
-
El siguiente ejemplo muestra cómo eliminar la clave API para un ID de servicio.
resource "ibm_iam_service_id" "serviceID" { name = "servicetest" } resource "ibm_iam_service_api_key" "testacc_apiKey" { name = "testapikey" iam_service_id = ibm_iam_service_id.serviceID.iam_id }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).
-
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 -
Aprovisione los recursos desde el archivo
main.tf. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.-
Ejecute
terraform planpara generar un plan de ejecución Terraform para previsualizar las acciones propuestas.terraform plan -
Ejecute
terraform applypara crear los recursos definidos en el plan.terraform apply
-
Revisión de claves API de ID de servicio filtradas mediante la consola
Si se detecta una clave API de ID de servicio filtrada, puede utilizar la consola para revisarla. Complete los pasossiguientes:
- Inicie la sesión en la consola de IBM Cloud.
- Seleccione la cuenta que contiene la clave API de ID de servicio filtrada.
- Vaya a Gestión > Acceso > ID de servicio.
- Seleccione el nombre del ID de servicio.
- Seleccione Claves de API.
- Seleccione el nombre de la clave API filtrada para revisarla.
Revisión de claves API de ID de servicio filtradas mediante la CLI
Si se detecta una clave API de ID de servicio filtrada, puede utilizar la CLI para revisarla. Complete los pasossiguientes:
-
Inicie una sesión en la CLI de IBM Cloud.
-
Ejecute el mandato siguiente:
ibmcloud iam service-api-key <API_key_ID> <service_id_name>