Para utilizar Watson Machine Learning con la biblioteca de cliente Python o la API REST, debe autenticarse para proteger su trabajo. Conozca las diferentes maneras de autenticarse y cómo aplicarlas al servicio que elija.
Utilice IBM Cloud® IAM (Identity and Access Management) para realizar solicitudes autenticadas a los servicios públicos de IBM Watson™. Con las políticas de acceso de IAM, puede asignar acceso a más de un recurso desde una única clave. Además, un usuario, un ID de servicio y una instancia de servicio pueden contener múltiples claves de API.
Visión general de la seguridad
Consulte la sección que describe sus necesidades de seguridad.
Credenciales de autenticación
Estos términos están relacionados con los requisitos de seguridad que se describen en este tema.
- Las claves de API le permiten autenticarse fácilmente cuando utiliza el cliente o las API de Python y se pueden utilizar en varios servicios. Las claves de API se consideran confidenciales porque se utilizan para otorgar acceso. Trate todas las claves de API como lo haría con una contraseña porque cualquiera con la clave de API puede acceder al servicio.
- Una señal de IAM es una señal de autenticación necesaria para acceder a los servicios de IBM Cloud . Puede generar una señal utilizando la clave de API en la solicitud de señal. Para obtener detalles sobre el uso de señales de IAM, consulte Autenticación en la API de Watson Machine Learning.
Para autenticarse en un servicio a través de su API, pase sus credenciales a la API. Puede pasar una señal portadora en una cabecera de autorización o bien una clave de API.
Generación de una clave de API
Para generar una clave de API desde la cuenta de usuario de IBM Cloud, vaya a Gestionar acceso y usuarios - Claves de API y cree o seleccione una clave de API para su cuenta de usuario.
También puede generar y rotar claves de API desde Perfil y valores > Clave de API de usuario. Para obtener más información, consulte Gestión de la clave de API de usuario.
Autenticarse con una señal de IAM
Las señales de IAM son credenciales de seguridad temporales que son válidas durante 60 minutos. Cuando una señal caduca, puede generar una nueva. Las señales pueden resultar útiles para el acceso temporal a recursos. Para obtener más información, consulte Generación de una señal de IAM de IBM Cloud utilizando una clave de API.
Obtención de una señal a nivel de servicio
También se puede autenticar con una señal a nivel de servicio. Para generar una señal a nivel de servicio:
- Consulte las instrucciones de IBM Cloud para crear un ID de servicio.
- Genere una clave de API para dicho ID de servicio.
- Abra el espacio en el que tiene previsto mantener los activos desplegables.
- En la pestaña Control de acceso, añada el ID de servicio y asigne un rol de acceso de Administrador o Editor.
Puede utilizar la señal de nivel de servicio con las solicitudes de puntuación de la API.
Interfaces
Cliente Python
Consulte: watsonx.ai Python Python
Para crear una instancia del objeto de cliente watsonx.ai Python , debe pasar sus credenciales al cliente de API Watson Machine Learning .
wml_credentials = {
"apikey":"123456789",
"url": " https://HIJKL"
}
from ibm_watson_machine_learning import APIClient
wml_client = APIClient(wml_credentials)
Aunque no proporcione explícitamente un instance_id
, se recogerá del espacio o proyecto asociado para fines de facturación. Para obtener detalles sobre los planes y la facturación de los servicios de Watson Machine Learning , consulte Planes deWatson Machine Learning y uso de tiempo de ejecución.
Consulte los cuadernos de ejemplo para obtener ejemplos de cómo autenticar y, a continuación, puntuar un modelo utilizando el cliente Python .
API REST
Consulte: API REST deWatson Machine Learning
Para utilizar la API REST de Watson Machine Learning , debe obtener una señal de IBM Cloud Identity and Access Management (IAM). En este ejemplo, proporcionaría la clave de API en lugar de la clave de ejemplo.
Ejemplo de cURL
curl -k -X POST \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Accept: application/json" \
--data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
--data-urlencode "apikey=123456789" \
"https://iam.cloud.ibm.com/identity/token"
La señal de IAM obtenida debe tener como prefijo la palabra Bearer
y se debe pasar en la cabecera de autorización para las llamadas de API.
Ejemplo de Python
import requests
# Paste your Watson Machine Learning service apikey here
apikey = "123456789"
# Get an IAM token from IBM Cloud
url = "https://iam.cloud.ibm.com/identity/token"
headers = { "Content-Type" : "application/x-www-form-urlencoded" }
data = "apikey=" + apikey + "&grant_type=urn:ibm:params:oauth:grant-type:apikey"
response = requests.post( url, headers=headers, data=data, auth=apikey )
iam_token = response.json()["access_token"]
Ejemplo de Node.js
var btoa = require( "btoa" );
var request = require( 'request' );
// Paste your Watson Machine Learning service apikey here
var apikey = "123456789";
// Use this code as written to get an access token from IBM Cloud REST API
//
var IBM_Cloud_IAM_uid = "bx";
var IBM_Cloud_IAM_pwd = "bx";
var options = { url : "https://iam.cloud.ibm.com/identity/token",
headers : { "Content-Type" : "application/x-www-form-urlencoded",
"Authorization" : "Basic " + btoa( IBM_Cloud_IAM_uid + ":" + IBM_Cloud_IAM_pwd ) },
body : "apikey=" + apikey + "&grant_type=urn:ibm:params:oauth:grant-type:apikey" };
request.post( options, function( error, response, body )
{
var iam_token = JSON.parse( body )["access_token"];
} );
Tema padre: Gestión de despliegues predictivos