Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Агенты часто должны пройти проверку подлинности в других ресурсах для выполнения задач. Например, развернутому агенту может потребоваться доступ к индексу AI Search для запросов к неструктурированным данным, конечной точке обслуживания для вызова фундаментальной модели или функциям Unity Catalog для выполнения пользовательской логики.
На этой странице рассматриваются методы проверки подлинности для агентов, развернутых в приложениях Databricks. Сведения об агентах, развернутых в конечных точках обслуживания моделей, см. в разделе "Проверка подлинности" для агентов (обслуживание моделей).
Databricks Apps предоставляет два метода проверки подлинности для агентов. Каждый метод обслуживает различные варианты использования:
| Метод | Описание | Когда использовать |
|---|---|---|
| Авторизация приложения | Агент авторизуется с помощью автоматически созданного служебного принципала с согласованными разрешениями. Ранее называлась проверка подлинности основного объекта службы. | Наиболее распространенный вариант использования. Используйте, когда у всех пользователей должен быть одинаковый доступ к ресурсам. |
| Авторизация пользователей | Агент проверяет подлинность с помощью удостоверения пользователя, выполняющего запрос. Ранее именовалась On-Behalf-Of (OBO) аутентификация. | Используйте, если вам нужны разрешения для конкретных пользователей, следы аудита или точное управление доступом с помощью каталога Unity. |
Оба метода можно объединить в одном агенте. Например, используйте авторизацию приложения для доступа к общему индексу поиска ИИ при использовании авторизации пользователя для запроса таблиц, относящихся к пользователю.
Настройка проверки подлинности с помощью пользовательского интерфейса рабочей области или наборов декларативной автоматизации
Все параметры проверки подлинности можно настроить двумя способами:
- Пользовательский интерфейс рабочей области: изменение приложения и управление ресурсами и областями на шаге "Настройка ". Рекомендуется выполнять итерацию в одном приложении в рабочей области.
-
Декларативные пакеты автоматизации: объявление ресурсов, областей и переменных среды в
databricks.ymlфайле и развертывание с помощьюdatabricks bundle deploy. Рекомендуется, если требуется управление версиями на основе Git, CI/CD или развертывание одного и того же агента в разных рабочих областях. Все шаблоны агентов поставляются сdatabricks.yml.
Оба пути создают одну и ту же конфигурацию среды выполнения. Остальная часть страницы демонстрирует каждую инструкцию в обоих форматах, чтобы вы могли выбрать одну и поддерживать единообразие в вашем проекте.
Чтобы добавить ресурс в приложение через любой путь, необходимо иметь Can Manage разрешение как на ресурс, так и на приложение.
Полный справочник по пакету см. в разделе "Ресурс приложения " и "app.resources". Пошаговое руководство по пакету см. в разделе "Управление приложениями Databricks с помощью декларативных пакетов автоматизации".
Авторизация приложения
По умолчанию Databricks Apps проходит проверку подлинности с помощью авторизации приложения. Databricks автоматически создает служебный принципал при создании приложения и используется в качестве удостоверения приложения.
Все пользователи, взаимодействующие с приложением, имеют одинаковые разрешения, определенные для субъекта-службы. Эта модель хорошо работает, если все пользователи будут видеть одни и те же данные или когда приложение выполняет общие операции, не связанные с элементами управления доступом для конкретных пользователей.
Подробные сведения об авторизации приложения см. в разделе "Авторизация приложений".
Предоставление разрешений эксперименту MLflow
Агенту требуется доступ к эксперименту MLflow для регистрации трассировок и результатов оценки. Предоставьте субъекту-службе Can Edit разрешение на эксперимент.
Пользовательский интерфейс рабочей области
- Щелкните "Изменить" на домашней странице приложения.
- Перейдите к шагу "Настройка ".
- В разделе "Ресурсы приложения" добавьте ресурс эксперимента MLflow с разрешением
Can Edit.
См. статью "Добавление ресурса эксперимента MLflow" в приложение Databricks.
Декларативные пакеты автоматизации
Объявите эксперимент в
resourcesспискеdatabricks.ymlприложения. Назначенное вамиnameресурсу будет позже использоваться при настройке переменных среды.resources: apps: my_agent: name: 'my-agent' source_code_path: ./ resources: - name: 'experiment' experiment: experiment_id: '<experiment-id>' permission: 'CAN_EDIT'Повторное развертывание пакета:
databricks bundle deploy databricks bundle run my_agent
См. app.resources.experiment для всех полей.
Предоставление разрешений другим ресурсам Databricks
Если агент использует другие ресурсы Databricks, такие как агенты Genie, индексы поиска ИИ или хранилища SQL, предоставьте субъекту-службе разрешения для каждого из них.
Чтобы получить доступ к реестру запросов, предоставить CREATE FUNCTION, EXECUTE, и MANAGE разрешения на схему каталога Unity для хранения запросов.
При предоставлении доступа к ресурсам каталога Unity необходимо также предоставить разрешения всем подчиненным ресурсам. Например, если вы предоставляете доступ к агенту Genie, необходимо также предоставить доступ к своим базовым таблицам, хранилищам SQL и функциям каталога Unity.
Пользовательский интерфейс рабочей области
Добавьте ресурсы в приложение с помощью раздела "Ресурсы приложений " при создании или изменении приложения в рабочей области Databricks.
- Щелкните "Изменить" на домашней странице приложения.
- Перейдите к шагу "Настройка ".
- В ресурсах приложения нажмите кнопку +Добавить ресурс для каждого ресурса, который агент использует и задает разрешение.
Полный список поддерживаемых ресурсов и снимков экрана см. в разделе Добавление ресурсов в приложение Databricks.
Декларативные пакеты автоматизации
Объявите каждый ресурс, который агент использует, в списке
resourcesпод вашим приложением вdatabricks.yml. В приведенном ниже примере показан агент, использующий эксперимент MLflow, конечную точку обслуживания, агент Genie, хранилище SQL, индекс поиска ИИ, функцию каталога Unity и экземпляр Lakebase. Каждый ресурсnameупоминается черезconfig.envиvalue_from, чтобы агент получал разрешенный идентификатор во время выполнения.bundle: name: my_agent resources: apps: my_agent: name: 'my-agent' description: 'Custom agent deployed on Databricks Apps' source_code_path: ./ config: command: ['uv', 'run', 'start-app'] env: - name: MLFLOW_EXPERIMENT_ID value_from: 'experiment' - name: LAKEBASE_INSTANCE_NAME value_from: 'database' resources: - name: 'experiment' experiment: experiment_id: '<experiment-id>' permission: 'CAN_EDIT' - name: 'llm' serving_endpoint: name: 'databricks-claude-sonnet-4-5' permission: 'CAN_QUERY' - name: 'sales-genie' genie_space: space_id: '<genie-space-id>' permission: 'CAN_RUN' - name: 'warehouse' sql_warehouse: id: '<warehouse-id>' permission: 'CAN_USE' - name: 'docs-index' uc_securable: securable_full_name: 'main.docs.chunks_index' securable_type: 'TABLE' permission: 'SELECT' - name: 'lookup-function' uc_securable: securable_full_name: 'main.tools.order_lookup' securable_type: 'FUNCTION' permission: 'EXECUTE' - name: 'database' database: instance_name: '<lakebase-instance-name>' database_name: 'databricks_postgres' permission: 'CAN_CONNECT_AND_CREATE' targets: dev: mode: development default: trueЭто важно
Каждое значение
value_fromвconfig.envдолжно соответствовать полюnameв спискеresources. Несоответствия сводят кNoneзначение переменной среды в развернутом приложении.Разверните и запустите пакет:
databricks bundle validate databricks bundle deploy databricks bundle run my_agentbundle deployотправляет источник и настраивает ресурсы.bundle runзапускает или перезапускает приложение с помощью последнего источника. Аргументомbundle runявляется ключ YAML подresources.apps(в данном случаеmy_agent), а не полеnameразвернутого приложения.
Полную схему каждого подтипа ресурсов см. в разделе app.resources.
В следующей таблице перечислены минимальные разрешения, используемые в приведенных выше примерах, и эквивалентное значение декларативных пакетов автоматизации для каждого типа ресурса:
| Тип ресурса | Разрешение пользовательского интерфейса рабочего пространства | Декларативные пакеты автоматизации: ресурсы и разрешения |
|---|---|---|
| Хранилище SQL | Can Use |
sql_warehouse с CAN_USE |
| Конечная точка обслуживания модели | Can Query |
serving_endpoint с CAN_QUERY |
| Функция каталога Unity | Can Execute |
uc_securable с securable_type: FUNCTION и EXECUTE |
| Агент Genie | Can Run |
genie_space с CAN_RUN |
| Индекс поиска ИИ | Can Select |
uc_securable с securable_type: TABLE и SELECT |
| Таблица каталога Unity | SELECT |
uc_securable с securable_type: TABLE и SELECT |
| Подключение каталога Unity | Use Connection |
uc_securable с securable_type: CONNECTION и USE_CONNECTION |
| Том каталога Unity |
Can Read или Can Read and Write |
uc_securable с securable_type: VOLUME и READ_VOLUME или WRITE_VOLUME |
| Lakebase (подготовлено) | Can Connect and Create |
database с CAN_CONNECT_AND_CREATE |
| Lakebase (автомасштабирование) | Can Connect and Create |
postgres с CAN_CONNECT_AND_CREATE |
Следуйте принципу наименьших привилегий. Предоставьте субъекту-службе только разрешения, необходимые агенту, и используйте выделенный субъект-службу для каждого приложения. Полный список см. в разделе "Рекомендации по обеспечению безопасности".
Авторизация пользователей
Это важно
Авторизация пользователя доступна в общедоступной предварительной версии. Администратор рабочей области должен включить его, прежде чем использовать авторизацию пользователя.
Авторизация пользователя позволяет агенту действовать с удостоверением пользователя, выполняющего запрос. Это обеспечивает следующее:
- Доступ к конфиденциальным данным на пользователя
- Тонкозернистый контроль данных, реализуемый Unity Catalog
- Следы аудита для конкретного пользователя
- Автоматическое применение фильтров на уровне строк и маски столбцов
Используйте авторизацию пользователя, если вашему агенту необходимо получить доступ к ресурсам с помощью идентификации запрашивающего пользователя вместо учетной записи службы приложения.
Как работает авторизация пользователей
При настройке авторизации пользователя для агента:
- Добавьте области API в приложение: определите, какие API Databricks приложение может получить доступ от имени пользователей. См. статью "Добавление областей в приложение".
- Учетные данные пользователя ограничены: Databricks принимает учетные данные пользователя и ограничивает их только определенными областями API.
-
Перенаправление токенов: суженный токен становится доступным вашему приложению через
x-forwarded-access-tokenзаголовок HTTP. - MLflow AgentServer сохраняет маркер: сервер агента автоматически сохраняет этот маркер на запрос для удобного доступа в коде агента.
Настройте авторизацию пользователя, добавив области в пользовательский интерфейс Databricks Apps при создании или редактировании приложения или программно с помощью API. Подробные инструкции см. в статье "Добавление областей в приложение".
Агенты с авторизацией пользователя могут получить доступ к следующим ресурсам Databricks:
- Хранилище SQL
- Агент Genie
- Файлы и каталоги
- Конечная точка обслуживания модели
- Индекс поиска ИИ
- Подключения каталога Unity
- Таблицы каталога Unity
Реализация авторизации пользователей
Чтобы реализовать авторизацию пользователя, необходимо добавить области авторизации в приложение. Области действия ограничивают возможности приложения от имени пользователя. Список доступных областей и семантики областей см. в разделе "Безопасность на основе областей" и "Эскалация привилегий".
Пользовательский интерфейс рабочей области
- В пользовательском интерфейсе Databricks перейдите к параметрам авторизации приложения.
- В разделе "Авторизация пользователя" нажмите кнопку "+ Добавить область " и выберите области, необходимые приложению для доступа к ресурсам от имени пользователя.
- Сохраните изменения и перезапустите приложение.
Декларативные пакеты автоматизации
Объявление областей в
user_api_scopesресурсе приложения вdatabricks.yml:resources: apps: my_agent: name: 'my-agent' source_code_path: ./ user_api_scopes: - sql - genie - model-serving resources: - name: 'experiment' experiment: experiment_id: '<experiment-id>' permission: 'CAN_EDIT'Повторно разверните пакет и перезапустите приложение:
databricks bundle deploy databricks bundle run my_agentNote
После включения авторизации пользователей в рабочей области в первый раз необходимо перезапустить существующие приложения, прежде чем они смогут использовать области. См. статью "Добавление областей в приложение".
Чтобы настроить авторизацию пользователя в коде агента, получите заголовок этого запроса из AgentServer и создайте клиент рабочей области с этими учетными данными.
Импортируйте утилиту аутентификации в ваш код агента.
При использовании одного из предоставленных шаблонов из databricks/app-templates импортируйте предоставленную программу:
from databricks_app.utils import get_user_workspace_clientВ противном случае импортируйте из утилит сервера-агента:
from agent_server.utils import get_user_workspace_clientФункция
get_user_workspace_client()использует сервер агента для записиx-forwarded-access-tokenзаголовка и создания клиента рабочей области с этими учетными данными пользователя, обработки проверки подлинности между пользователем, приложением и сервером агента.Инициализировать клиент рабочей области во время запроса, а не во время запуска приложения:
Это важно
Вызов
get_user_workspace_client()внутриinvokeиstreamобработчиков, а не в__init__или при запуске приложения. Учетные данные пользователя доступны только во время запроса, когда пользователь выполняет запрос. Инициализация во время запуска приложения приведет к ошибке, так как контекст пользователя еще не существует.# In your agent code (inside invoke or stream handler) user_client = get_user_workspace_client() # Use user_client to access Databricks resources with user permissions response = user_client.serving_endpoints.query(name="my-endpoint", inputs=inputs)
Полное руководство по добавлению областей и пониманию безопасности на основе областей см. в разделе "Безопасность на основе областей " и "Повышение привилегий". Запрашивайте только минимальные области, необходимые агенту, и регистрируйте каждое действие, выполняемое от имени пользователя; См. рекомендации по авторизации пользователей.
Проверка авторизации пользователя
После добавления областей и вызова get_user_workspace_client()убедитесь, что агент запускается как вызывающий объект, а не субъект-служба приложения. Если перенаправленный маркер отсутствует, get_user_workspace_client() возвращается к субъекту-службе без вызова, поэтому агент может вернуть обычный ответ, выполняя все еще роль приложения. Чтобы проверить, добавьте инструмент whoami и вызовите его от своего имени. Если он возвращает имя пользователя, авторизация пользователя работает.
current_user.me() охватывается областью по умолчанию iam.current-user:read , поэтому вам не нужно добавлять области для этого теста.
from agents import Agent, function_tool
from agent_server.utils import get_user_workspace_client
@function_tool
def whoami() -> str:
"""Returns the identity of the current user."""
user_wc = get_user_workspace_client()
return user_wc.current_user.me().user_name
agent = Agent(
name="my-agent",
instructions=(
"When the user asks who they are, call the whoami tool "
"and return the raw result."
),
model="databricks-claude-sonnet-4-6",
tools=[whoami],
)
Повторно разверните агент. См . статью "Создание агента" и его развертывание в Приложениях Databricks.
Пользовательский интерфейс рабочей области
Тест пользовательского интерфейса рабочей области — самая быстрая базовая проверка и не требует токенов OAuth.
- Изменения области действия вступают в силу немедленно, но обновление внутренних кэшей может занять до 5 минут — подождите это время перед тестированием (перезапускать приложение не требуется). Всегда очищайте файлы cookie браузера для URL-адреса приложения (см. раскрывающийся список ниже для шагов), в противном случае сеанс повторно использует маркеры, выданные до изменения области.
- Убедитесь, что у вас есть
CAN USEразрешение на приложение. См. настройку разрешений для приложения Databricks. - Откройте URL-адрес приложения в браузере. При первом входе примите запрос на предоставление согласия для запрошенных областей доступа.
- В чате попросите
Who am I?и подтвердите, что агент возвращает имя пользователя (например,you@your-company.com).
Очистка файлов cookie в Chrome
- Откройте devTools: нажмите клавишу F12 или Cmd+Option+I в macOS или CTRL+SHIFT+I в Windows или Linux.
- Откройте вкладку "Приложение ".
- В разделе Хранилище>Файлы cookie выберите URL-адрес приложения.
- Щелкните правой кнопкой мыши каждый файл cookie и выберите пункт "Удалить".
Python
Используйте профиль интерфейса командной строки или учетные данные субъекта-службы для вызова агента. Сведения о вариантах запроса см. в статье Запрос агента, развернутого на Azure Databricks, а сведения о создании токенов OAuth — в статье Подключение к приложению Databricks API с помощью аутентификации по токену.
Изменения области действия вступают в силу немедленно, но обновление внутренних кэшей может занять до 5 минут, поэтому подождите перед тестированием (перезапуск приложения не требуется).
Вызовите агента от своего имени:
from databricks.sdk import WorkspaceClient from databricks_openai import DatabricksOpenAI app_name = "<your-app-name>" prompt = [{"role": "user", "content": "Call the whoami tool and return only the raw result."}] w = WorkspaceClient(profile="<your-profile>") client = DatabricksOpenAI(workspace_client=w) response = client.responses.create(model=f"apps/{app_name}", input=prompt) print(response.output_text)Выходные данные должны быть вашим именем пользователя, например
you@your-company.com.
Если инструмент возвращает UUID вместо имени пользователя, значит, x-forwarded-access-token заголовок не передаётся инструменту, и агент использовал в качестве резервного варианта субъект-службу приложения (UUID — это идентификатор клиента субъект-службы приложения). Чтобы диагностировать, подтвердите каждое из следующих действий:
- Авторизация пользователя включена в рабочей области.
- Для приложения настроены области действия.
-
get_user_workspace_client()вызывается внутри обработчика@invokeили@streamне при запуске приложения. - Код используется
get_user_workspace_client()и неWorkspaceClient().
Несколько моментов, на которые стоит обратить внимание:
- Удалите
whoamiинструмент перед выпуском в эксплуатацию. Это предназначено только для диагностики и раскрывает личность пользователя любому, кто может вызвать агента. - Тестирование со вторым пользователем. Проверка с одним пользователем подтверждает, что токен передаётся; вторая сторона, выполняющая вызов, подтверждает, что каждый запрос получает собственную идентичность, а не общую резервную идентичность.
- Никогда не записывайте в журнал пересланный токен. Ознакомьтесь с рекомендациями по авторизации пользователей.
-
Чтобы проверить определенную область, замените
current_user.me()вызовом, требующим этой области. Например, операторSELECT current_user()к хранилищу задействует всю областьsqlот начала до конца.
Аутентификация на серверах Databricks MCP
Управляемые серверы MCP Databricks предоставляют индексы поиска ИИ и функции каталога Unity в качестве инструментов с помощью URL-адресов формы https://<workspace>/api/2.0/mcp/ai-search/<catalog>/<schema> и https://<workspace>/api/2.0/mcp/functions/<catalog>/<schema>. Префикс устаревшего /api/2.0/mcp/vector-search/ URL-адреса продолжает работать для обратной совместимости. Список доступных серверов и шаблоны их URL-адресов см. в разделе Управляемые серверы MCP в Azure Databricks.
Чтобы пройти проверку подлинности, предоставьте субъекту-службе агента (или пользователю, если используется авторизация пользователя) доступ к каждому нижестоящему ресурсу в этих схемах.
Например, если агент использует следующие URL-адреса сервера MCP:
https://<your-workspace>/api/2.0/mcp/ai-search/prod/customer_supporthttps://<your-workspace>/api/2.0/mcp/ai-search/prod/billinghttps://<your-workspace>/api/2.0/mcp/functions/prod/billing
Необходимо предоставить доступ ко всем индексам AI Search в prod.customer_support и prod.billing, а также ко всем функциям Unity Catalog в prod.billing.
Пользовательский интерфейс рабочей области
Добавьте каждый индекс и функцию в качестве ресурса в разделе ресурсов приложения. Следуйте тем же шагам, что и в разделе предоставление разрешений другим ресурсам Databricks.
Декларативные пакеты автоматизации
Добавьте по одной записи для каждого индекса и каждой функции в список
uc_securableвашего приложения:resources: apps: my_agent: resources: - name: 'support-index' uc_securable: securable_full_name: 'prod.customer_support.tickets_index' securable_type: 'TABLE' permission: 'SELECT' - name: 'billing-index' uc_securable: securable_full_name: 'prod.billing.invoices_index' securable_type: 'TABLE' permission: 'SELECT' - name: 'refund-function' uc_securable: securable_full_name: 'prod.billing.process_refund' securable_type: 'FUNCTION' permission: 'EXECUTE'Повторное развертывание пакета:
databricks bundle deploy databricks bundle run my_agent
Пользовательские серверы MCP, размещенные в качестве собственных приложений Databricks (имена приложений с префиксом mcp-) пока не поддерживаются как составные ресурсы. Предоставьте учетной записи службы Can Use агента вручную на приложении сервера MCP с помощью databricks apps update-permissions. См. навык пользовательского mcp-server в репозитории шаблонов агентов.