Подключение к Databricks из Python через управляемую идентификацию

Мне удалось подключиться к Databricks из Python, используя следующий фрагмент кода:

      from databricks import sql

connection = sql.connect(
  server_hostname='<server-hostname>',
  http_path='<http-path>',
  access_token='<personal-access-token>')

cursor = connection.cursor()

cursor.execute('SELECT * FROM <database-name>.<table-name> LIMIT 2')

result = cursor.fetchall()

for row in result:
  print(row)

cursor.close()

Этот фрагмент взят из официальной документации и, как видите, требует server_hostname, http_pathа также . У меня вопрос, могу ли я пройти аутентификацию без access_token? Может быть, использовать управляемую идентификацию, поскольку обе технологии от Microsoft?

1 ответ

Вы можете использовать токен AAD вместо личного токена доступа. Самый простой способ создать его — использовать библиотеку azure-identity от Microsoft.

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

      from databricks import sql
from azure.identity import ClientSecretCredential
import os

tenant_id = '...'
client_id = '...'
client_secret = os.environ['SP_SECRET']
csc = ClientSecretCredential(tenant_id, client_id, client_secret)

# important!
dbx_scope = '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default'
# this will be used as access token
aad_token = csc.get_token(dbx_scope).token

Для этого также должна быть возможность использовать управляемую идентификацию - вместо этого просто используйте класс ManagedIdentityCredential . Я считаю, что вы также можете сгенерировать токен AAD пользователя с помощью этой библиотеки. Если вы не хотите иметь дополнительную зависимость, вы можете сгенерировать ее через REST API, как этот код .

Администратор должен добавить используемое удостоверение в рабочую область Azure Databricks с помощью соответствующего REST API или поставщика Databricks Terraform . А также предоставлены разрешения на доступ к кластеру Databricks или конечной точке SQL — это также можно сделать через REST API или Terraform.

Необходимо учитывать одну вещь: срок действия токена AAD истекает (как быстро — это зависит от того, что вы используете: субъект-службу или управляемое удостоверение), поэтому вам может потребоваться периодически повторно создавать подключение.

Другие вопросы по тегам