Поделиться через


Проверка подлинности в экземпляре базы данных

Это важно

Эта функция доступна в общедоступной предварительной версии в следующих регионах: westus, westus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindia, . southeastasiauksouth

На этой странице описывается, как аутентифицироваться в экземпляре базы данных системы Lakebase. Существует два способа проверки подлинности:

  1. Получите маркер OAuth и выполните проверку подлинности с помощью удостоверений Azure Databricks.
  2. Используйте собственные роли Postgres с паролями.

Аутентификация с помощью учетных записей Azure Databricks

При аутентификации с использованием идентификатора Azure Databricks необходимо создать токен OAuth и использовать его в качестве пароля при подключении к PostgreSQL.

Рекомендации перед началом работы

  • Срок действия токенов OAuth истекает через час, но контролируется только при входе в систему. Открытые подключения остаются активными, даже если срок действия маркера истекает. Однако любая команда PostgreSQL, требующая проверки подлинности, завершается ошибкой, если срок действия маркера истек.

  • Токены OAuth, используемые для проверки подлинности Postgres, относятся к рабочей области и должны принадлежать той же рабочей области, которая управляет экземпляром базы данных. Аутентификация токена между рабочими пространствами не поддерживается. Дополнительные сведения о проверке подлинности см. в разделе "Проверка подлинности" для интерфейса командной строки Databricks.

  • Для проверки подлинности на основе маркеров требуется обычный пароль, поэтому разрешены только SSL-подключения. Убедитесь, что клиентская библиотека, используемая для доступа к Postgres с проверкой подлинности на основе маркеров, настроена для установления SSL-подключения.

Получение маркера OAuth в потоке "пользователь — компьютер"

Если вы являетесь владельцем базы данных, администратором или ваше удостоверение Azure Databricks имеет соответствующую роль Postgres для экземпляра базы данных, вы можете получить токен OAuth из пользовательского интерфейса, интерфейса командной строки Databricks или одного из SDK Databricks. Вы можете ограничить область действия маркера с помощью интерфейса командной строки Databricks.

Для других пользователей Azure Databricks см. раздел "Авторизация доступа пользователей к Azure Databricks с помощью OAuth" для получения токенов OAuth на уровне рабочей области.

Пользовательский интерфейс

Когда экземпляр базы данных имеет состояние Доступно, используйте интерфейс Azure Databricks для получения токена OAuth.

  1. Щелкните значок приложения.Приложения в правом верхнем углу и выберите Lakebase Postgres.
  2. Щелкните «Подготовлено», чтобы открыть страницу «Подготовленные экземпляры».
  3. Найдите и щелкните имя экземпляра базы данных, для которого требуется получить маркер OAuth.
  4. Перейдите на вкладку сведений о подключении.
  5. Нажмите кнопку "Получить маркер OAuth". Флаг указывает, когда токен был создан.
  6. Нажмите «Копировать OAuthToken», чтобы скопировать токен в буфер обмена.

интерфейс командной строки (CLI)

Когда экземпляр базы данных имеет состояниедоступно, используйте интерфейс командной строки Databricks (CLI) версии 0.256.0 и выше, чтобы получить токен OAuth.

  1. Чтобы получить маркер, используйте следующую команду.
     databricks database generate-database-credential \
       --request-id $(uuidgen) \
       --json '{
         "instance_names": ["db-instance-name"]
       }'
    
  2. Это создает ответ в следующем формате. Скопируйте token из ответа.
    {
      "expiration_time": "2025-08-24T14:15:22Z",
      "token": "<string>"
    }
    

Дополнительные сведения об использовании интерфейса командной строки Databricks для получения маркера OAuth см. в разделе проверки подлинности OAuth пользователь-компьютер (U2M).

Пакет SDK для Python

Вы можете создать токен OAuth с помощью пакета SDK Databricks для Python. Привязки пакета SDK для Azure Databricks доступны в пакете SDK Databricks для Python версии 0.56.0.

Если вы работаете с более старой версией пакета SDK, сначала выполните эти команды.

%pip install --upgrade databricks-sdk
%restart_python

Пакет SDK Databricks для Python создает безопасный токен OAuth cred для экземпляра базы данных. Введите свои учетные данные, если это необходимо.

from databricks.sdk import WorkspaceClient
import uuid

w = WorkspaceClient()

instance_name = "<YOUR INSTANCE>"

cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])

пакет SDK для Java

Вы можете создать токен OAuth с помощью пакета SDK Databricks для Java. Привязки пакета SDK для баз данных доступны в пакете SDK Databricks для Java версии 0.53.0 или более поздней. Если вы работаете с более старой версией пакета SDK, может потребоваться обновить импортированный пакет SDK. Для получения дополнительных сведений см. здесь.

%scala

import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID

val w = new WorkspaceClient()

val instanceName = "<YOUR INSTANCE>"

// Generate database credential
val cred = w.database().generateDatabaseCredential(
    new GenerateDatabaseCredentialRequest()
        .setRequestId(UUID.randomUUID().toString())
        .setInstanceNames(Collections.singletonList(instanceName))
)

// Print out credential details
System.out.println("Credential: " + cred.getToken())

Получение токена OAuth в процессе авторизации между машинами

Чтобы обеспечить безопасный автоматизированный (машина-машина) доступ к экземпляру базы данных, необходимо получить токен OAuth с помощью служебного принципала Azure Databricks. Этот процесс включает настройку главного объекта службы, создание учетных данных и выпуск токенов OAuth для аутентификации.

  1. Настройте учетную запись службы с бессрочными учетными данными. Инструкции см. в статье "Авторизация доступа субъекта-службы к Azure Databricks с помощью OAuth".

  2. Выпустите новые токены OAuth в качестве учётной записи службы.

    интерфейс командной строки (CLI)

    Когда экземпляр базы данных имеет состояниедоступно, используйте интерфейс командной строки Databricks (CLI) версии 0.256.0 и выше, чтобы получить токен OAuth.

    1. Чтобы получить маркер, используйте следующую команду.

        databricks database generate-database-credential \
          --request-id $(uuidgen) \
          --json '{
            "instance_names": ["db-instance-name"]
          }'
      
    2. Это создает ответ в следующем формате. Скопируйте token из ответа.

      {
        "expiration_time": "2025-08-24T14:15:22Z",
        "token": "<string>"
      }
      

    Пакет SDK для Python

    Вы можете создать токен OAuth с помощью пакета SDK Databricks для Python. Привязки пакета SDK для Azure Databricks доступны в пакете SDK Databricks для Python версии 0.56.0.

    Если вы работаете с более старой версией пакета SDK, сначала выполните эти команды.

    %pip install --upgrade databricks-sdk
    %restart_python
    

    Пакет SDK Databricks для Python создает безопасный токен OAuth cred для экземпляра базы данных. Введите имя экземпляра базы данных, где это необходимо.

    from databricks.sdk import WorkspaceClient
    import uuid
    
    w = WorkspaceClient(
      host          = "https://<YOUR WORKSPACE URL>/",
      client_id     = "<YOUR SERVICE PRINCIPAL ID>",
      client_secret = "REDACTED"
    )
    
    instance_name = "<YOUR INSTANCE>"
    
    cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
    

    пакет SDK для Java

    Вы можете создать токен OAuth с помощью пакета SDK Databricks для Java. Привязки пакета SDK для баз данных доступны в пакете SDK Databricks для Java версии 0.53.0 или более поздней. Если вы работаете с более старой версией пакета SDK, может потребоваться обновление до более нового пакета SDK. Для получения дополнительных сведений см. здесь.

    %scala
    
    import com.databricks.sdk.WorkspaceClient
    import com.databricks.sdk.core.DatabricksConfig
    import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
    import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
    import com.databricks.sdk.service.database.DatabaseInstance
    import com.databricks.sdk.service.database.DatabaseCredential
    import java.util.Collections
    import java.util.UUID
    
    val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication
    val w = new WorkspaceClient(config)
    
    val instanceName = "<YOUR INSTANCE>"
    
    // Generate database credential
    val cred = w.database().generateDatabaseCredential(
        new GenerateDatabaseCredentialRequest()
            .setRequestId(UUID.randomUUID().toString())
            .setInstanceNames(Collections.singletonList(instanceName))
    )
    
    // Print out credential details
    System.out.println("Credential: " + cred.getToken())
    

Замечание

Перед истечением почасового срока действия обновите токены OAuth.

  • Проверьте время окончания срока действия токена OAuth каждый раз и обновите при необходимости.
  • Кроме того, настройте фоновый поток для периодического обновления текущего маркера OAuth.

Устранение неполадок с идентификацией токена

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

A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.

Выполните следующую команду, чтобы проверить, какое удостоверение Azure Databricks возвращается:

интерфейс командной строки (CLI)

databricks current-user me

Пакет SDK для Python

w.current_user.me().user_name

пакет SDK для Java

w.currentUser.me().getUserName()

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

Проверка подлинности с помощью идентификатора Microsoft Entra

Для Azure Databricks удостоверения и маркеры идентификаторов Microsoft Entra также можно использовать для проверки подлинности в API Azure Databricks. Используйте эти API-интерфейсы для получения токена для аутентификации в Postgres.

См. Управление пользователями, субъектами-службами и группами для управления управляемыми удостоверениями Microsoft Entra ID в Azure Databricks. Пользователи, группы и субъекты-службы из идентификатора Microsoft Entra можно создать в Azure Databricks. После добавления этих удостоверений в Azure Databricks их можно добавить в экземпляр базы данных, как описано в разделе "Управление ролями Postgres".

Чтобы получить токены Microsoft Entra ID, просмотрите следующее:

Проверка подлинности в группе Azure Databricks

Членства в группах и группах не синхронизируются из Azure Databricks в Postgres и не являются разрешениями каталога Unity. Однако после добавления группы Azure Databricks в Postgres любой пользователь Azure Databricks в группе может войти в качестве группы с помощью пароля пользователя. Это позволяет управлять разрешениями на уровне группы в Postgres. Любой прямой или косвенный член (пользователь или субъект-служба) удостоверения группы Azure Databricks может пройти проверку подлинности в Postgres и войти в систему в качестве роли Azure Databricks group Postgres.

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

export PGPASSWORD='<OAuth token of a group member>'
export GROUPROLENAME=<pg-case-sensitive-group-role-name>

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUPROLENAME

Для входа Postgres на основе групп поддерживаются только группы, назначенные рабочей области Azure Databricks экземпляра базы данных. Сведения о назначении группы рабочей области см. в статье "Назначение группы рабочей области".

Проверка подлинности с помощью ролей и паролей Postgres

Если у вас есть клиенты, которые не поддерживают смену учетных данных через час, можно создать собственные роли Postgres с паролями:

  1. Щелкните значок приложения.Приложения в правом верхнем углу и выберите Lakebase Postgres.

  2. Щелкните «Подготовлено», чтобы открыть страницу «Подготовленные экземпляры».

  3. Выберите экземпляр базы данных, который требуется обновить.

  4. Щелкните "Изменить " в правом верхнем углу.

  5. Включите возможность входа с помощью собственной роли Postgres.

  6. Нажмите кнопку Сохранить.

  7. Войдите в Postgres или используйте редактор SQL, чтобы создать роль с паролем.

    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
    
  8. Предоставьте дополнительные права Postgres новой роли. См. предоставление привилегий ролям Postgres с помощью PostgreSQL.

Дальнейшие шаги

Получив учетные данные (маркер OAuth или пароль), вы можете подключиться к экземпляру базы данных: