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, vaya a Using HMAC credentials(Uso de credenciales HMAC ) en la documentación de Object Storage, o a 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, Destino
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 de API de ID de servicio utilizando Terraform, asegúrese de que ha completado lo siguiente:
- 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 para un ID de servicio mediante Terraform
Utilice los pasos siguientes para crear una clave de API para un ID de servicio utilizando Terraform.
-
Cree un argumento en el archivo
main.tf
. El ejemplo siguiente crea una clave de API para un ID de servicio utilizando el recursoibm_iam_service_api_key
, dondename
es un nombre exclusivo para identificar la clave de API de servicio. Debe necesitar un ID de IAM del servicio para poder completar la tarea.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, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.
terraform init
-
Suministre los recursos desde el archivo
main.tf
. Para obtener más información, consulte Infraestructura de suministro con Terraform.-
Ejecute
terraform plan
para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.terraform plan
-
Ejecute
terraform apply
para crear los recursos definidos en el plan.terraform apply
-
Actualización de una clave API para un ID de servicio mediante Terraform
Utilice los pasos siguientes para actualizar una clave de API para un ID de servicio utilizando Terraform:
-
Cree un argumento en el archivo
main.tf
. Puede actualizar la clave de API para un ID de servicio añadiendo nuevos valores a las opcionesname
yiam_service_id
en el ejemplo siguiente.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, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.
terraform init
-
Suministre los recursos desde el archivo
main.tf
. Para obtener más información, consulte Infraestructura de suministro con Terraform.-
Ejecute
terraform plan
para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.terraform plan
-
Ejecute
terraform apply
para 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 de API para un ID de servicio utilizando el archivo Terraform. Utilice los pasos siguientes para suprimir una clave de API para un ID de servicio utilizando Terraform.
-
El ejemplo siguiente muestra cómo suprimir la clave de 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, inicialice la CLI de Terraform. Para obtener más información, consulte Inicialización de directorios de trabajo.
terraform init
-
Suministre los recursos desde el archivo
main.tf
. Para obtener más información, consulte Infraestructura de suministro con Terraform.-
Ejecute
terraform plan
para generar un plan de ejecución de Terraform para obtener una vista previa de las acciones propuestas.terraform plan
-
Ejecute
terraform apply
para 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 las 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>