Подключение к 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 истекает (как быстро — это зависит от того, что вы используете: субъект-службу или управляемое удостоверение), поэтому вам может потребоваться периодически повторно создавать подключение.