配置从模型服务终结点对资源的访问权限

本文介绍了如何从服务终结点的模型配置对外部和专用资源的访问。 模型服务支持使用 Databricks 机密的纯文本环境变量和基于机密的环境变量。

要求

对于基于机密的环境变量,

  • 终结点创建者必须对配置中引用的 Databricks 机密具有“读取”访问权限。
  • 必须将 API 密钥或其他令牌等凭据存储为 Databricks 机密。

添加纯文本环境变量

使用纯文本环境变量设置不需要隐藏的变量。 创建或更新终结点时,可以在服务 UI 或 REST API 中设置变量。

在服务 UI 中,可以在“高级配置”中添加环境变量:

创建模型服务终结点

下面是使用 REST API 和 environment_vars 字段配置环境变量创建服务终结点的示例。


POST /api/2.0/serving-endpoints

{
  "name": "endpoint-name",
  "config":{
   "served_entities": [{
     "entity_name": "model-name",
     "entity_version": "1",
     "workload_size": "Small",
     "scale_to_zero_enabled": "true",
     "environment_vars":{
        "TEXT_ENV_VAR_NAME": "plain-text-env-value"
      }
    }]
   }
}

添加基于机密的环境变量

可以使用 Databricks 机密安全地存储凭据,并在使用基于机密的环境变量提供服务的模型中引用这些机密。 这样,凭据就可以在服务时从提供终结点的模型中提取。

例如,可以传递凭据以调用 OpenAI 和其他外部模型终结点,或者直接从模型服务访问外部数据存储位置。

Databricks 建议使用此功能将OpenAILangChain MLflow 模型风格部署到服务。 它还适用于需要凭据的其他 SaaS 模型,但需了解访问模式基于使用环境变量、API 密钥和令牌。

步骤 1:创建机密范围

在模型服务期间,机密范围和密钥从 Databricks 机密中检索机密。 这些内容会分配给可在模型中使用的机密环境变量名称。

首先,创建机密范围。 请参阅机密范围

下面是 CLI 命令:


databricks secrets create-scope my_secret_scope

然后,可以将机密添加到所需的机密范围和密钥,如下所示:


databricks secrets put-secret my_secret_scope my_secret_key

然后,可以在创建终结点期间将机密信息和环境变量的名称传递给终结点配置,或者作为对现有终结点配置的更新。

步骤 2:将机密范围添加到终结点配置

可以将机密范围添加到环境变量,并在终结点创建或配置更新期间将该变量传递给终结点。 请参阅创建自定义模型服务终结点

在服务 UI 中,可以在“高级配置”中添加环境变量。 必须使用以下语法提供基于机密的环境变量:{{secrets/scope/key}}。 否则,环境变量被视为纯文本环境变量。

创建模型服务终结点

下面是使用 REST API 创建服务终结点的示例。 在模型服务终结点创建和配置更新期间,可以使用environment_vars字段为 API 请求中的每个服务模型提供机密环境变量规范列表。

以下示例将在提供的代码中创建的机密中的值分配给环境变量OPENAI_API_KEY


POST /api/2.0/serving-endpoints

{
  "name": "endpoint-name",
  "config":{
   "served_entities": [{
     "entity_name": "model-name",
     "entity_version": "1",
     "workload_size": "Small",
     "scale_to_zero_enabled": "true",
     "environment_vars":{
        "OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
      }
    }]
   }
}

还可以更新服务终结点,如以下 REST API 示例所示:


PUT /api/2.0/serving-endpoints/{name}/config

{
  "served_entities": [{
    "entity_name": "model-name",
    "entity_version": "2",
    "workload_size": "Small",
    "scale_to_zero_enabled": "true",
    "environment_vars":{
      "OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
     }
   }]
}

创建或更新终结点后,模型服务会自动从 Databricks 机密范围提取密钥,并填充环境变量供模型推理代码使用。

笔记本示例

有关如何为部署在模型后面部署的 LangChain 检索 QA 链配置 OpenAI API 密钥以及基于机密的环境变量的终结点的示例,请参阅以下笔记本。

从模型服务终结点笔记本配置对资源的访问

获取笔记本