Поддержка семантической связи субъекта-службы

Субъект-служба Azure (SPN) — это удостоверение безопасности, используемое приложениями или средствами автоматизации для доступа к определенным ресурсам Azure. В отличие от удостоверений пользователей, субъекты-службы являются неинтерактивными удостоверениями на основе приложений, которые могут быть назначены точными разрешениями, что делает их идеальными для автоматизированных процессов или фоновых служб. Дополнительные сведения о субъектах-службах см. в разделе "Объекты приложения и субъекта-службы" в идентификаторе Microsoft Entra.

Microsoft Fabric поддерживает два распространенных сценария использования семантической связи с проверкой подлинности субъекта-службы:

  • Запускаемые субъектом-службой записные книжки: используйте субъект-службу для проверки подлинности автоматических или запланированных заданий записной книжки, вызывающих семантику, позволяя выполнять неинтерактивное выполнение без входа пользователя.
  • Аутентификация семантической связи вручную с помощью субъекта-службы. Укажите учетные данные субъекта-службы при вызове семантической связи во время интерактивных или нерегламентированных рабочих процессов.

Выберите сценарий, соответствующий рабочему процессу, и перейдите к инструкциям по настройке.

Замечание

Для поддержки субъекта-службы требуется семантическая ссылка версии 0.12.0 или более поздней. Образ среды выполнения по умолчанию может включать более раннюю версию. Обновите пакет в среде записной книжки следующим образом:

%pip install -U semantic-link

После установки перезапустите ядро (или повторно запустите задание), чтобы получить обновленный пакет. Проверьте установленную версию:

import sempy
print(sempy.__version__)

Если вы запускаете записные книжки в конвейерах или через API планировщика заданий, убедитесь, что среда выполнения устанавливает обновленный пакет в рамках установки задания.

Запущенная с помощью субъекта-службы записная книжка ссылается на неинтерактивные выполнения записных книжек, прошедших проверку подлинности с помощью субъекта-службы. Существует два сценария:

  • Конвейеры Fabric: записные книжки, вызываемые как часть конвейера с помощью проверки подлинности субъекта-службы.
  • API планировщика заданий: записные книжки, активированные через общедоступный API Fabric с помощью проверки подлинности субъекта-службы.

По умолчанию запуски записной книжки с активацией субъекта-службы не требуют дополнительных изменений конфигурации или кода. Служба маркеров по умолчанию автоматически обрабатывает базовую проверку подлинности для семантического канала. Однако этот поток по умолчанию имеет функциональные ограничения и поддерживает только подмножество функций семантической связи, см. поддерживаемые функции семантики. Чтобы использовать другие возможности, рекомендуется вручную пройти проверку подлинности семантической связи с помощью субъекта-службы.

Следующие функции семантической связи поддерживаются для запуска записной книжки субъекта-службы по умолчанию с помощью службы маркеров по умолчанию:

Замечание

Проверка подлинности субъекта-службы блокирует доступ к личной рабочей области "Моя рабочая область". Все вызовы, предназначенные для "Моя рабочая область", завершались сбоем, включая функции в этом поддерживаемом списке.

  • sempy.fabric.FabricRestClient
  • sempy.fabric.create_folder
  • sempy.fabric.create_lakehouse
  • sempy.fabric.create_notebook
  • sempy.fabric.delete_folder
  • sempy.fabric.delete_item
  • sempy.fabric.list_items
  • sempy.fabric.list_folders
  • sempy.fabric.list_datsets(..., mode='rest', endpoint='fabric')
  • sempy.fabric.list_dataflows(..., endpoint='fabric')
  • sempy.fabric.list_reports(..., endpoint='fabric')
  • sempy.fabric.list_workspaces(..., endpoint='fabric')
  • sempy.fabric.move_folder
  • sempy.fabric.rename_folder
  • sempy.fabric.resolve_workspace_id
  • sempy.fabric.resolve_workspace_name
  • sempy.fabric.resolve_workspace_name_and_id
  • sempy.fabric.resolve_dataset_id
  • sempy.fabric.resolve_dataset_name
  • sempy.fabric.resolve_dataset_name_and_id
  • sempy.fabric.resolve_folder_id
  • sempy.fabric.resolve_folder_path
  • sempy.fabric.resolve_item_id
  • sempy.fabric.resolve_item_name
  • sempy.fabric.run_notebook_job
  • sempy.fabric.get_lakehouse_id
  • sempy.fabric.get_workspace_id
  • sempy.fabric.get_artifact_id
  • sempy.fabric.get_notebook_workspace_id

Субъект-служба для интерактивной записной книжки выполняется двумя способами:

Предпосылки

  1. Создайте субъект-службу, назначьте роли и создайте секрет с помощью Azure.

  2. Убедитесь, что пользователь с ролью рабочей области администратора может предоставить доступ для имени участника-службы через управление доступом в рабочей области.

    Снимок экрана: портал Fabric всплывающего окна управления доступом.

Вы можете задать проверку подлинности субъекта-службы с помощью простых значений:


import sempy.fabric as fabric
from sempy.fabric import set_service_principal

dataset = "<replace-with-your-dataset-name>"
workspace = "<replace-with-your-workspace-id>"

tenant_id = "<replace-with-your-tenant-id>"
client_id = "<replace-with-your-client-id>"
client_secret = "<replace-with-your-client-secret>"

with set_service_principal(tenant_id, client_id, client_secret=client_secret):
    fabric.run_model_bpa(dataset, workspace=workspace)

Если вы предпочитаете не внедрять секреты в записную книжку, укажите ссылки set_service_principalна Key Vault. set_service_principal принимает кортежи формы (vault_url, secret_name) для секретов или сертификатов и разрешает их во время выполнения, сохраняя учетные данные вне кода и сохраненные артефакты. Убедитесь, что субъект-служба, на котором запущена записная книжка, имеет разрешение "получить" key Vault для секретов и сертификатов.

Пример:


tenant_kv = ("<replace-with-your-tenant-vault-url>", "<replace-with-your-tenant-secret-name>")
client_kv = ("<replace-with-your-client-vault-url>", "<replace-with-your-client-secret-name>")
client_cert_kv = ("<replace-with-your-client-certification-vault-url>", "<replace-with-your-client-certification-secret-name>")

with set_service_principal(tenant_kv, client_kv, client_certificate=client_cert_kv):
    fabric.run_model_bpa(dataset, workspace=workspace)

Использование учетных данных маркера azure SDK

Вы можете использовать токен Azure SDKCredential для повышения контроля и взаимодействия с другими библиотеками Azure. Создайте объект учетных данных и передайте его в функции sempy или задайте его в качестве значения по умолчанию в пакете SDK для Аналитики Fabric.

Примеры.

Создайте tokenCredential и передайте его в функции sempy:

from azure.identity import ClientSecretCredential

tenant_id = "your-tenant-id"
client_id = "your-client-id"
client_secret = "your-client-secret" 

credential = ClientSecretCredential(tenant_id, client_id, client_secret)

fabric.run_model_bpa(dataset, workspace=workspace, credential=credential)

Или задайте tokenCredential в качестве проверки подлинности по умолчанию из пакета SDK для Аналитики Fabric:

from fabric.analytics.environment.credentials import SetFabricAnalyticsDefaultTokenCredentials

with SetFabricAnalyticsDefaultTokenCredentials(credential):
    fabric.run_model_bpa(dataset, workspace=workspace)

Замечание

  • Не фиксируйте секреты в системе управления версиями. Используйте переменные среды или ссылки Key Vault.
  • Убедитесь, что субъект-служба имеет необходимые роли и доступ к рабочей области.
  • Проверка подлинности субъекта-службы по-прежнему не может получить доступ к "Моя рабочая область".

Ограничения

При проверке подлинности семантической связи вручную с помощью субъекта-службы следует учитывать следующие ограничения:

  • Доступ к личной рабочей области запрещен. Все вызовы, предназначенные для него, завершались сбоем.
  • Следующие функции не поддерживаются при проверке подлинности субъекта-службы.
    • sempy.fabric.list_apps
    • sempy.fabric.list_dataflow_storage_accounts
    • sempy.fabric.evaluate_measure
    • sempy.fabric.read_table(..., mode='rest')
    • sempy.fabric.execute_tmsl