IBM Cloud Docs
向 Watson 服务进行认证

向 Watson 服务进行认证

IBM Cloud® 上的 IBM Watson® 服务使用 IBM Cloud® Identity and Access Management (IAM) 进行认证。 安装在 IBM Cloud Pak® for Data 上的服务支持更多方法。 借助 IAM 访问策略,您可通过单个密钥分配对多个资源的访问权。 此外,用户、服务标识和服务实例可具有多个 API 键。

传递凭证

要通过服务的 API 向服务认证,请将您的凭证传递至 API。 根据安全需要以及服务是安装在 IBM Cloud® 上还是安装在 IBM Cloud Pak® for Data上,认证方式可能有所不同。

向 IBM Cloud 认证

IBM Cloud

使用 IBM Cloud® Identity and Access Management (IAM) 向公共 IBM Watson® 服务发出已认证的请求。 您可在授权头或 API 键中传递不记名令牌。

  • 使用 IAM 令牌进行认证。

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

    以下 curl 命令生成 IAM 访问令牌。 将 {apikey} 替换为 API 密钥的值。

    curl -X POST \
    -header "Content-Type: application/x-www-form-urlencoded" \
    -data "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey={apikey}" \
    "https://iam.cloud.ibm.com/identity/token"
    

    响应包含 access_token 属性。 要向服务认证请求,请将 {access_token} 替换为响应中的令牌。 将 {url} 替换为服务实例的 URL 值,您可以通过单击服务实例的 " 管理 " 页面的 凭证 框中的 显示凭证 来找到该值。

    curl -header "Authorization: Bearer {access_token}" \
    "{url}/v1/{method}"
    
  • 使用 IBM Cloud API 密钥,服务标识 API 密钥或特定于服务的 API 密钥进行认证。 将 {url} 替换为服务实例的 URL 值,您可以通过单击服务实例的 " 管理 " 页面的 凭证 框中的 显示凭证 来找到该值。

    API 密钥易于使用,不会自动到期。 具有有效密钥的任何人都可以访问该资源。 您可以为不同用户,不同应用程序创建单独的 API 密钥,或者支持密钥轮换方案。 您可以从控制台撤销 API 密钥,而不会干扰其他 API 密钥或用户。

    以下示例 curl 命令使用 API 密钥 f5sAznhrKQyvBFFaZbtF60m5tzLbqWhyALQawBg5TjRI进行认证。

    curl -u "apikey:f5sAznhrKQyvBFFaZbtF60m5tzLbqWhyALQawBg5TjRI" \
    "{url}/v1/{method}"
    

对于测试和开发,您可以直接传入 API 密钥。 但是,对于生产用途,除非使用 Watson SDK ,否则请使用 IAM 令牌。 传递 API 密钥时,服务会查找 API 密钥详细信息,因此可能会影响性能。 有关更多信息,请参阅 调用 IBM Cloud 服务 API

Watson SDK 支持这两种方法。 有关更多信息,请参阅服务和 SDK 的 API 参考认证 部分。

某些服务套餐支持 IBM® Key Protect for IBM Cloud® 来控制对数据的访问。 有关更多信息,请参阅 保护 Watson 服务中的敏感信息

向 IBM Cloud Pak for Data 认证

IBM Cloud Pak for Data

通过向每个请求传递访问令牌来向服务进行认证。 在 Authorization 头中传递不记名令牌以进行认证。 存在多种生成令牌的方法,包括使用 API 密钥或用户名。 有关更多信息,请参阅 生成授权令牌或 API 密钥

有关 Watson SDK 针对安装在 IBM Cloud Pak for Data上的服务支持的认证方法的更多信息,请参阅服务和 SDK 的 API 参考认证 部分。

关于 API 密钥

Watson 服务支持三种类型的 API 密钥:

  • 特定于服务的 API 密钥

    将随服务一起生成特定于服务的密钥。 此类 API 密钥只能访问特定服务实例。 要查看特定于服务的密钥,请从 资源列表中单击 Watson 服务的名称。

  • IBM Cloud API 密钥

    IBM Cloud API 密钥与用户身份相关联。 只有与密钥关联的用户才能将其删除。 可以使用相同的 IBM Cloud API 密钥来访问不同的服务。 有关使用 IBM Cloud API 密钥的更多信息,请参阅 管理用户 API 密钥

  • 服务标识 API 密钥

    服务标识允许 IBM Cloud内部和外部托管的应用程序访问 IBM Cloud 服务。 将向与服务标识关联的 API 密钥授予与该服务标识关联的访问权。 有关服务标识密钥的更多信息,请参阅 管理服务标识 API 密钥

API 密钥最佳实践

确保 API 密钥安全,以减少公开影响帐户和应用程序的凭证的可能性。 要帮助确保 API 密钥安全,请遵循以下准则。

  • 分配适用于所需访问级别的最严格服务角色。

    例如,为从应用程序到 GET API 方法的调用分配 Reader 服务角色。 此角色仅具有只读访问权,因此无法创建或编辑资源。

  • 请勿在代码中直接嵌入 API 密钥。

    嵌入代码中的 API 密钥可能会公开给用户。 请将 API 密钥存储在环境变量或源代码控制系统外部的文件中,而不是将其嵌入到代码中。

  • 请勿将 API 密钥存储在应用程序的源代码控制系统内的文件中。

    如果将 API 密钥存储在文件中,请将这些文件保存在应用程序的源代码外部。 如果您使用公共源代码管理系统 (例如 GitHub) ,那么此实践很重要。

  • 重新生成或轮换 API 密钥。

    定期创建新密钥,或轮换密钥。 不要忘记删除不再使用的密钥。

后续步骤