Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
AI-agenter behöver ofta autentisera till andra resurser för att slutföra uppgifter. En utplacerad agent kan till exempel behöva komma åt ett vektorsökningsindex för att utföra sökningar i ostrukturerade data eller Prompt Registry för att ladda dynamiska frågor.
Den här sidan beskriver de autentiseringsmetoder som är tillgängliga när du utvecklar och distribuerar agenter med hjälp av Mosaic AI Agent Framework.
Autentiseringsmetoder
I följande tabell jämförs tillgängliga autentiseringsmetoder. Du kan blanda och matcha någon av dessa metoder:
| Metod | Description | Säkerhetsstatus | Konfigurationskomplexitet | 
|---|---|---|---|
| Automatisk autentiseringspassering | Agenten körs med behörigheterna för den användare som distribuerade den Databricks hanterar automatiskt kortlivade autentiseringsuppgifter för deklarerade resurser  | 
Kortlivade autentiseringsuppgifter, automatisk rotation | Låg – deklarera beroenden vid loggningstid | 
| Autentisering å en användares vägnar (OBO - On-behalf-of-user authentication) | Agenten körs med behörigheterna för slutanvändaren som gör begäran | Använder slutanvändarens autentiseringsuppgifter med begränsade omfång | Medel – kräver deklaration av omfattning och initiering vid körning | 
| Manuell autentisering | Ange uttryckligen autentiseringsuppgifter med hjälp av miljövariabler | Långvariga autentiseringsuppgifter behöver rotationshantering | Hög – kräver manuell hantering av autentiseringsuppgifter | 
Autentisera till externa system och MCP-servrar
Vägledning om hur du autentiserar till externa API:er och MCP-servrar från din agent finns i Ansluta AI-agentverktyg till externa tjänster. Dessa resurser kan också frågas för agentens eller användarens räkning, enligt beskrivningen i Autentiseringsmetoder.
Välj rätt autentiseringsmetod för resursen
Använd det här flödesschemat för att välja rätt autentiseringsmetod för varje resurs. Du kan kombinera metoder efter behov och en agent kan använda en annan metod för varje resurs beroende på dess användningsfall.
Krävs användaråtkomstkontroll eller användarattribuerad revision?
- Ja → Använd autentisering för användarens räkning
 - Ingen → Fortsätt till steg 2
 
Stöder alla resurser automatisk autentisering?
- Ja → Använd automatisk autentiseringsgenomströmning (rekommenderas)
 - Ingen → Använd manuell autentisering
 
Automatisk autentiseringsöverbryggning
Automatisk autentiseringsgenomströmning är den enklaste metoden för att komma åt Databricks-hanterade resurser. Deklarera resursberoenden när du loggar agenten och Databricks etablerar, roterar och hanterar kortlivade autentiseringsuppgifter när agenten distribueras.
Det här autentiseringsbeteendet liknar beteendet "Kör som ägare" för Databricks-instrumentpaneler. Nedströmsresurser som Unity Catalog-tabeller används med autentiseringsuppgifterna för en tjänsthuvudman med minst behörighet till endast de resurser agenten behöver.
Så här fungerar automatisk autentiseringspassering
När en agent hanteras bakom en slutpunkt med automatisk autentiseringsgenomströmning utför Databricks följande steg:
Behörighetsverifiering: Databricks verifierar att slutpunktens skapare kan komma åt alla beroenden som anges under agentloggning.
Skapande och beviljande av tjänstens huvudnamn: Ett huvudnamn för tjänsten skapas för agentmodellversionen och beviljas automatiskt läsbehörighet till agentresurser.
Anmärkning
Det systemgenererade tjänstens huvudnamn visas inte i API- eller användargränssnittslistor. Om agentmodellversionen tas bort från slutpunkten, tas även tjänstens huvudprincip bort.
Etablering och rotation av autentiseringsuppgifter: Kortlivade autentiseringsuppgifter (en M2M OAuth-token) för tjänstens huvudnamn matas in i slutpunkten, vilket ger agentkoden åtkomst till Databricks-resurser. Databricks roterar också autentiseringsuppgifterna, vilket säkerställer att din agent har fortsatt säker åtkomst till beroende resurser.
Stödda resurser för automatisk genomsändning vid autentisering
I följande tabell visas de Databricks-resurser som stöder automatisk autentiseringsgenomströmning och de behörigheter som slutpunktens skapare måste ha när agenten distribueras.
Anmärkning
Unity Catalog-resurser kräver också USE SCHEMA i det överordnade schemat och USE CATALOG i den överordnade katalogen.
| Resurstyp | Tillåtelse | Lägsta MLflow-version | 
|---|---|---|
| SQL Warehouse | Use Endpoint | 
2.16.1 eller senare | 
| Modelltjänstslutpunkt | Can Query | 
2.13.1 eller senare | 
| Unity-katalogfunktion | EXECUTE | 
2.16.1 eller senare | 
| Genieområde | Can Run | 
2.17.1 eller senare | 
| Index för vektorsökning | Can Use | 
2.13.1 eller senare | 
| Unity-katalogtabell | SELECT | 
2.18.0 eller senare | 
| Anslutning till Unity-katalog | Use Connection | 
2.17.1 eller senare | 
| Lakebase | databricks_superuser | 
3.3.2 eller senare | 
Implementera automatisk autentiseringspassering
För att aktivera automatisk vidarebefordran för autentisering anger du beroende resurser när du loggar agenten. Använd parametern resources för API:et log_model() :
Anmärkning
Kom också ihåg att logga alla underordnade beroende resurser. Om du till exempel loggar ett Genie Space måste du även logga dess tabeller, SQL Warehouses och Unity Catalog-funktioner.
import mlflow
from mlflow.models.resources import (
  DatabricksVectorSearchIndex,
  DatabricksServingEndpoint,
  DatabricksSQLWarehouse,
  DatabricksFunction,
  DatabricksGenieSpace,
  DatabricksTable,
  DatabricksUCConnection,
  DatabricksApp,
  DatabricksLakebase
)
with mlflow.start_run():
  logged_agent_info = mlflow.pyfunc.log_model(
    python_model="agent.py",
    artifact_path="agent",
    input_example=input_example,
    example_no_conversion=True,
    # Specify resources for automatic authentication passthrough
    resources=[
      DatabricksVectorSearchIndex(index_name="prod.agents.databricks_docs_index"),
      DatabricksServingEndpoint(endpoint_name="databricks-meta-llama-3-3-70b-instruct"),
      DatabricksServingEndpoint(endpoint_name="databricks-bge-large-en"),
      DatabricksSQLWarehouse(warehouse_id="your_warehouse_id"),
      DatabricksFunction(function_name="ml.tools.python_exec"),
      DatabricksGenieSpace(genie_space_id="your_genie_space_id"),
      DatabricksTable(table_name="your_table_name"),
      DatabricksUCConnection(connection_name="your_connection_name"),
      DatabricksApp(app_name="app_name"),
      DatabricksLakebase(database_instance_name="lakebase_instance_name"),
    ]
  )
Autentisering på uppdrag av användaren
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Med OBO-autentisering (å användarens vägnar) kan en agent fungera som den Databricks-användare som kör frågan. Detta ger:
- Åtkomst per användare till känsliga data
 - Detaljerade datakontroller som tillämpas av Unity Catalog
 - Säkerhetstoken begränsas ("downscoped") till endast de API:er som din agent deklarerar, vilket minskar risken för missbruk
 
Kravspecifikation
- För användarautentisering krävs MLflow 2.22.1 och senare.
 - Autentisering för användaren är inaktiverad som standard och måste aktiveras av en arbetsyteadministratör. Granska säkerhetsövervägandena innan du aktiverar den här funktionen.
 
Resurser som stöds av OBO
Agenter med OBO-autentisering kan komma åt följande Databricks-resurser:
| Databricks-resurs | Kompatibla klienter | 
|---|---|
| Vektorsökningsindex | 
              databricks_langchain.VectorSearchRetrieverTool, databricks_openai.VectorSearchRetrieverToolVectorSearchClient | 
| Modellserverendpunkt | databricks.sdk.WorkspaceClient | 
| SQL Warehouse | databricks.sdk.WorkspaceClient | 
| UC-anslutningar | databricks.sdk.WorkspaceClient | 
| UC-tabeller och -funktioner | 
              databricks.sdk.WorkspaceClient (För att få åtkomst till UC-tabellerna måste du använda SQL-frågor via SQL Statement Execution API) | 
| Genie Space | 
              databricks.sdk.WorkspaceClient (rekommenderas), databricks_langchain.GenieAgent, eller databricks_ai_bridge.GenieAgent | 
| McP (Model Context Protocol) | databricks_mcp.DatabricksMCPClient | 
Implementera OBO-autentisering
Utför följande steg för att aktivera autentisering för användarens räkning:
- Uppdatera SDK-anrop för att ange att resurser ska nås för slutanvändarens räkning.
 - Uppdatera agentkoden för att initiera OBO-åtkomst i 
predictfunktionen, inte i__init__, eftersom användaridentiteten bara är känd vid körning. - När du loggar agenten för distribution deklarerar du de Databricks REST API-omfång som agenten kräver.
 
Följande kodfragment visar hur du konfigurerar å användarens vägnar åtkomst till olika Databricks-resurser. När du initierar verktyg hanterar du behörighetsfel på ett korrekt sätt genom att omsluta initieringen i ett try-except block.
Vektorsökningsåterhämtningsverktyg
from databricks.sdk import WorkspaceClient
from databricks_ai_bridge import ModelServingUserCredentials
from databricks_langchain import VectorSearchRetrieverTool
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy = ModelServingUserCredentials())
vector_search_tools = []
# Exclude exception handling if the agent should fail
# when users lack access to all required Databricks resources
try:
  tool = VectorSearchRetrieverTool(
    index_name="<index_name>",
    description="...",
    tool_name="...",
    workspace_client=user_client # Specify the user authorized client
    )
    vector_search_tools.append(tool)
except Exception as e:
    _logger.debug("Skipping adding tool as user does not have permissions")
Vektorsökningsklient
from databricks.vector_search.client import VectorSearchClient
from databricks.vector_search.utils import CredentialStrategy
# Configure a VectorSearch Client to use on behalf of end
# user authentication
user_authenticated_vsc = VectorSearchClient(credential_strategy=CredentialStrategy.MODEL_SERVING_USER_CREDENTIALS)
# Exclude exception handling if the agent should fail when
# users lack access to all required Databricks resources
try:
  vs_index = user_authenticated_vsc.get_index(endpoint_name="endpoint_name", index_name="index_name")
  ...
except Exception as e:
  _logger.debug("Skipping Vector Index because user does not have permissions")
MCP
from databricks.sdk import WorkspaceClient
from databricks_ai_bridge import ModelServingUserCredentials
from databricks_mcp import DatabricksMCPClient
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
mcp_client = DatabricksMCPClient(
    server_url="<mcp_server_url>",
    workspace_client=user_client, # Specify the user client here
  )
Modellserverendpunkt
from databricks.sdk import WorkspaceClient
from databricks_ai_bridge import ModelServingUserCredentials
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
# Exclude exception handling if the agent should fail
# when users lack access to all required Databricks resources
try:
  user_client.serving_endpoints.query("endpoint_name", input="")
except Exception as e:
  _logger.debug("Skipping Model Serving Endpoint due to no permissions")
UC-anslutningar
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ExternalFunctionRequestHttpMethod
from databricks_ai_bridge import ModelServingUserCredentials
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
user_client.serving_endpoints.http_request(
  conn="connection_name",
  method=ExternalFunctionRequestHttpMethod.POST,
  path="/api/v1/resource",
  json={"key": "value"},
  headers={"extra_header_key": "extra_header_value"},
)
Genie Spaces (WorkspaceClient)
from databricks_langchain.genie import GenieAgent
from databricks.sdk import WorkspaceClient
from databricks_ai_bridge import ModelServingUserCredentials
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
genie_agent = GenieAgent(
    genie_space_id="space-id",
    genie_agent_name="Genie",
    description="This Genie space has access to sales data in Europe"
    client=user_client
)
# Use the Genie SDK methods available through WorkspaceClient
try:
    response = agent.invoke("Your query here")
except Exception as e:
    _logger.debug("Skipping Genie due to no permissions")
Genie Spaces (LangChain)
from databricks.sdk import WorkspaceClient
from databricks_ai_bridge import ModelServingUserCredentials
from databricks_langchain.genie import GenieAgent
# Configure a Databricks SDK WorkspaceClient to use on behalf of end
# user authentication
user_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
genie_agent = GenieAgent(
    genie_space_id="<genie_space_id>",
    genie_agent_name="Genie",
    description="Genie_description",
    client=user_client, # Specify the user client here
  )
Initiera agenten i förutsägelsefunktionen
Eftersom användarens identitet bara är känd vid frågetillfället måste du komma åt OBO-resurser i predict eller predict_stream, inte i agentens __init__ -metod. Detta säkerställer att resurser isoleras mellan anrop.
from mlflow.pyfunc import ResponsesAgent
class OBOResponsesAgent(ResponsesAgent):
  def initialize_agent():
    user_client = WorkspaceClient(
      credentials_strategy=ModelServingUserCredentials()
    )
    system_authorized_client = WorkspaceClient()
    ### Use the clients above to access resources with either system or user authentication
  def predict(
    self, request
  ) -> ResponsesAgentResponse:
    agent = initialize_agent() # Initialize the Agent in Predict
    agent.predict(request)
    ...
Deklarera REST API-omfång när agenten loggas
När du loggar OBO-agenten för distribution måste du ange de Databricks REST API-omfång som agenten anropar för användarens räkning. Detta säkerställer att agenten följer principen om minsta behörighet: token är begränsade till bara de API:er som din agent kräver, vilket minskar risken för obehöriga åtgärder eller tokenmissbruk.
Nedan visas en lista över omfång som krävs för att få åtkomst till flera vanliga typer av Databricks-resurser:
| Resurstyp | Api-omfång som krävs | 
|---|---|
| Modellserverslutpunkter | serving.serving-endpoints | 
| Slutpunkter för vektorsökning | vectorsearch.vector-search-endpoints | 
| Index för vektorsökning | vectorsearch.vector-search-indexes | 
| SQL-lager | 
              sql.warehouses, sql.statement-execution | 
| Genie-blanksteg | dashboards.genie | 
| UC-anslutningar | 
              catalog.connections och serving.serving-endpoints | 
| Databricks-appar | apps.apps | 
| MCP Genie-blanksteg | mcp.genie | 
| MCP UC-funktioner | mcp.functions | 
| MCP-vektorsökning | mcp.vectorsearch | 
| MCP DBSQL | 
              mcp.sql, sql.warehousessql.statement-execution | 
| EXTERNA MCP-funktioner | mcp.external | 
Om du vill aktivera autentisering för användarens räkning skickar du ett MLflow AuthPolicy till log_model():
import mlflow
from mlflow.models.auth_policy import AuthPolicy, SystemAuthPolicy, UserAuthPolicy
from mlflow.models.resources import DatabricksServingEndpoint
# System policy: resources accessed with system credentials
system_policy = SystemAuthPolicy(
    resources=[DatabricksServingEndpoint(endpoint_name="my_endpoint")]
)
# User policy: API scopes for OBO access
user_policy = UserAuthPolicy(api_scopes=[
    "serving.serving-endpoints",
    "vectorsearch.vector-search-endpoints",
    "vectorsearch.vector-search-indexes"
])
# Log the agent with both policies
with mlflow.start_run():
    mlflow.pyfunc.log_model(
        name="agent",
        python_model="agent.py",
        auth_policy=AuthPolicy(
            system_auth_policy=system_policy,
            user_auth_policy=user_policy
        )
    )
OBO-autentisering för OpenAI-klienter
För agenter som använder OpenAI-klienten använder du Databricks SDK för att autentisera automatiskt under distributionen. Databricks SDK har en omslutning för att konstruera OpenAI-klienten med automatiskt konfigurerad autentisering: get_open_ai_client()
% pip install databricks-sdk[openai]
from databricks.sdk import WorkspaceClient
def openai_client(self):
  w = WorkspaceClient()
  return w.serving_endpoints.get_open_ai_client()
Ange sedan slutpunkten Modellserver som en del av resources för att autentisera automatiskt vid distributionstillfället.
OBO-säkerhetsöverväganden
Tänk på följande säkerhetsöverväganden innan du aktiverar autentisering för användarens räkning med agenter.
              Utökad resursåtkomst: Agenter kan komma åt känsliga resurser för användarnas räkning. Omfång begränsar API:er, men slutpunkter kan tillåta fler åtgärder än vad agenten uttryckligen begär. API-omfånget serving.serving-endpoints ger till exempel en agent behörighet att köra en serverslutpunkt för användarens räkning. Serverdelsslutpunkten kan dock komma åt ytterligare API-omfång som den ursprungliga agenten inte har behörighet att använda.
OBO-exempelanteckningsböcker
Följande anteckningsbok visar hur du skapar en agent med Vector Search med användarbehörighet.
För användarauktorisering med vektorsökning
Följande anteckningsbok visar hur du skapar en agent som stöder SQL-körning på ett SQL Warehouse med hjälp av auktorisering å en användares vägnar. Detta gör det möjligt för agenten att på ett säkert sätt anropa Unity Catalog-funktioner med hjälp av användarautentiseringsuppgifter. Obs! Det här är för närvarande det rekommenderade sättet att köra UC Functions med OBO eftersom Serverlös Spark-körning med OBO ännu inte stöds.
På uppdrag av användarauktorisering med SQL-exekvering
Manuell autentisering
Manuell autentisering gör det möjligt att uttryckligen ange autentiseringsuppgifter under agentdistributionen. Den här metoden har störst flexibilitet men kräver mer konfiguration och kontinuerlig hantering av autentiseringsuppgifter. Använd den här metoden när:
- Den beroende resursen stöder inte automatisk autentiseringsgenomströmning
 - Agenten måste använda andra autentiseringsuppgifter än agentdistribuerarens autentiseringsuppgifter
 - Agenten får åtkomst till externa resurser eller API:er utanför Databricks
 - Den distribuerade agenten får åtkomst till promptregistret
 
Viktigt!
Om du åsidosätter variabler för säkerhetsmiljön inaktiveras automatisk genomströmning för andra resurser som agenten är beroende av.
OAuth-autentisering (rekommenderas)
OAuth är den rekommenderade metoden för manuell autentisering eftersom den har säker, tokenbaserad autentisering för tjänstens huvudnamn med funktioner för automatisk tokenuppdatering:
Skapa ett huvudnamn för tjänsten och generera OAuth-autentiseringsuppgifter.
Ge tjänsthuvudmannen behörighet till alla Databricks-resurser som agenten har tillgång till behörighet att få åtkomst till Databricks-resurser. Om du vill komma åt promptregistret, bevilja behörighet för
CREATE FUNCTION,EXECUTEochMANAGEi Unity Catalog-schemat för att lagra promptar.Skapa databricks-hemligheter för OAuth-autentiseringsuppgifterna.
Konfigurera OAuth-autentiseringsuppgifterna i agentkoden:
import os # Configure OAuth authentication for Prompt Registry access # Replace with actual secret scope and key names secret_scope_name = "your-secret-scope" client_id_key = "oauth-client-id" client_secret_key = "oauth-client-secret" os.environ["DATABRICKS_HOST"] = "https://<your-workspace-url>" os.environ["DATABRICKS_CLIENT_ID"] = dbutils.secrets.get(scope=secret_scope_name, key=client_id_key) os.environ["DATABRICKS_CLIENT_SECRET"] = dbutils.secrets.get(scope=secret_scope_name, key=client_secret_key)Använd hemligheterna för att ansluta till arbetsytan:
w = WorkspaceClient( host=os.environ["DATABRICKS_HOST"], client_id=os.environ["DATABRICKS_CLIENT_ID"], client_secret = os.environ["DATABRICKS_CLIENT_SECRET"] )När du distribuerar med
agents.deploy()ska du inkludera OAuth-autentiseringsuppgifterna som miljövariabler.agents.deploy( UC_MODEL_NAME, uc_registered_model_info.version, environment_vars={ "DATABRICKS_HOST": "https://<your-workspace-url>", "DATABRICKS_CLIENT_ID": f"{{{{secrets/{secret_scope_name}/{client_id_key}}}}}", "DATABRICKS_CLIENT_SECRET": f"{{{{secrets/{secret_scope_name}/{client_secret_key}}}}}" }, )
PAT-autentisering
Pat-autentisering (Personlig åtkomsttoken) ger en enklare konfiguration för utvecklings- och testmiljöer, även om det kräver mer manuell hantering av autentiseringsuppgifter:
Skaffa en PAT med ett huvudnamn för tjänsten eller ett personligt konto:
Tjänstens huvudnamn (rekommenderas för säkerhet):
- Skapa ett huvudnamn för tjänsten.
 - Ge tjänsthuvudmannen behörighet till alla Databricks-resurser som agenten har tillgång till behörighet att få åtkomst till Databricks-resurser. Om du vill komma åt promptregistret bevilja 
CREATE FUNCTION,EXECUTE, ochMANAGEbehörigheter för Unity Catalog-schemat som används för att lagra uppmaningar. - Skapa en PAT för tjänstens huvudnamn.
 
Personligt konto:
Lagra PAT säkert genom att skapa en Databricks-hemlighet för PAT.
Konfigurera PAT-autentisering i agentkoden:
import os # Configure PAT authentication for Prompt Registry access # Replace with your actual secret scope and key names secret_scope_name = "your-secret-scope" secret_key_name = "your-pat-key" os.environ["DATABRICKS_HOST"] = "https://<your-workspace-url>" os.environ["DATABRICKS_TOKEN"] = dbutils.secrets.get(scope=secret_scope_name, key=secret_key_name) # Validate configuration assert os.environ["DATABRICKS_HOST"], "DATABRICKS_HOST must be set" assert os.environ["DATABRICKS_TOKEN"], "DATABRICKS_TOKEN must be set"När du distribuerar agenten med ska
agents.deploy()du inkludera PAT som en miljövariabel:agents.deploy( UC_MODEL_NAME, uc_registered_model_info.version, environment_vars={ "DATABRICKS_HOST": "https://<your-workspace-url>", "DATABRICKS_TOKEN": f"{{{{secrets/{secret_scope_name}/{secret_key_name}}}}}" }, )