0 / 0
Go back to the English version of the documentation
针对程序化访问进行认证
Last updated: 2024年5月10日
针对程序化访问进行认证

要将 Watson Machine Learning 与 Python 客户机库或 REST API 配合使用,必须进行认证以保护您的工作。 了解不同的认证方法以及如何将它们应用于您选择的服务。

使用 IBM Cloud® Identity and Access Management (IAM) 向公共 IBM Watson™ 服务发出已经过认证的请求。 借助 IAM 访问策略,您可通过单个密钥分配对多个资源的访问权。 此外,用户、服务标识和服务实例可具有多个 API 键。

安全性概述

请参阅描述安全性需求的章节。

认证凭证

这些术语与本主题中所描述的安全性需求相关。

  • API 密钥 允许您在使用 Python 客户机或 API 时轻松进行认证,并且可以在多个服务中使用。 API 密钥被视为机密,因为它们用于授予访问权。 将所有 API 密钥视为密码,因为具有 API 密钥的任何人都可以访问您的服务。
  • IAM 令牌 是访问 IBM Cloud 服务所需的认证令牌。 您可以在令牌请求中使用 API 密钥来生成令牌。 有关使用 IAM 令牌的详细信息,请参阅 认证到 Watson Machine Learning API

要通过服务的 API 向服务认证,请将您的凭证传递至 API。 您可在授权头或 API 键中传递不记名令牌。

生成 API 键

要通过您的 IBM Cloud 用户帐户生成 API 键,请转至管理访问权和用户 - API 键并针对您的用户帐户创建或选择 API 键。

您还可以从 概要文件和设置> 用户 API 密钥生成和轮换 API 密钥。 有关更多信息,请参阅 管理用户 API 密钥

使用 IAM 令牌进行认证

IAM 令牌是有效期为 60 分钟的临时安全凭证。 令牌到期时,应生成新令牌。 令牌在临时访问资源时可能很有用。 有关更多信息,请参阅使用 API 键生成 IBM Cloud IAM 令牌

获取服务级别令牌

您还可以使用服务级别令牌进行认证。 要生成服务级别令牌:

  1. 请参阅 IBM Cloud 指示信息的创建服务标识部分。
  2. 为该服务标识生成 API 密钥。
  3. 打开您计划在其中保留可部署资产的空间。
  4. 访问控制选项卡中,添加服务标识并分配管理员编辑者访问角色。

您可以将服务级别令牌和您的 API 评分请求配合使用。

接口

 

Python 客户机

请参阅: watsonx.ai Python 客户机 外部链接

要创建 watsonx.ai Python 客户机对象的实例,需要将凭证传递到 Watson Machine Learning API 客户机。

wml_credentials = {
                  "apikey":"123456789",
                  "url": " https://HIJKL"
}
from ibm_watson_machine_learning import APIClient
wml_client = APIClient(wml_credentials)
注:

即使您未显式提供 instance_id,也会从关联空间或项目中选取该以进行计费。 有关 Watson Machine Learning 服务的套餐和计费的详细信息,请参阅 Watson Machine Learning 套餐和运行时使用情况

有关如何使用 Python 客户机对模型进行认证和评分的示例,请参阅 样本 Notebook

REST API

请参阅: Watson Machine Learning REST API 外部链接

要使用 Watson Machine Learning REST API ,必须获取 IBM Cloud Identity and Access Management (IAM) 令牌。 在此示例中,您将提供 API 密钥来代替示例密钥。

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"

获取的 IAM 令牌需要以单词 Bearer作为前缀,并在 API 调用的 Authorization 头中传递。

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"]

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"];
} );

父主题: 管理预测性部署

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more