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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

sqlcmd поддерживает различные модели проверки подлинности Microsoft Entra в зависимости от установленной версии.

Примечание.

Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

Дополнительные сведения о разнице между версиями sqlcmd см. в служебной программе sqlcmd.

sqlcmd (Go) поддерживает больше моделей проверки подлинности Microsoft Entra на основе пакета azidentity. Реализация использует соединитель Microsoft Entra в драйвере go-sqlcmd.

Command line arguments

Чтобы использовать проверку подлинности Microsoft Entra, можно использовать один из двух коммутаторов командной строки.

-G (в основном) совместим с его использованием в sqlcmd (ODBC). Если указано имя пользователя и пароль, он проходит проверку подлинности с помощью проверки подлинности паролей Microsoft Entra. Если указано имя пользователя, он использует интерактивную проверку подлинности Microsoft Entra, которая может отображать веб-браузер. Если имя пользователя или пароль не указан, он использует DefaultAzureCredentialметод, который пытается пройти проверку подлинности с помощью различных механизмов.

Для указания одного из следующих типов проверки подлинности можно использовать --authentication-method=.

ActiveDirectoryDefault

  • Общие сведения о типах проверки подлинности, используемых в этом режиме, см. в разделе "Учетные данные Azure по умолчанию".
  • Выберите этот метод, если скрипты автоматизации базы данных предназначены для выполнения как в локальных средах разработки, так и в рабочем развертывании в Azure. В среде разработки можно использовать секрет клиента или имя входа Azure CLI. Без изменения скрипта из среды разработки можно использовать управляемое удостоверение или секрет клиента в рабочем развертывании.
  • Установка переменных среды и AZURE_CLIENT_ID необходимы для DefaultAzureCredential начала проверки конфигурации среды и поиска одной из следующих дополнительных переменных AZURE_TENANT_ID среды для проверки подлинности:
    • Настройка переменной AZURE_CLIENT_SECRET среды настраивает DefaultAzureCredential выбор ClientSecretCredential.
    • Настройка переменной AZURE_CLIENT_CERTIFICATE_PATH среды настраивает DefaultAzureCredential выбор ClientCertificateCredential , если AZURE_CLIENT_SECRET он не задан.
  • Настройка переменной среды AZURE_USERNAME настраивает DefaultAzureCredential выбор, UsernamePasswordCredential если AZURE_CLIENT_SECRET и AZURE_CLIENT_CERTIFICATE_PATH не заданы.

ActiveDirectoryIntegrated

Этот метод в настоящее время не реализуется и возвращается в ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Этот метод проходит проверку подлинности с помощью имени пользователя и пароля. Он не работает, если требуется многофакторная проверка подлинности.

  • Вы предоставляете имя пользователя и пароль с помощью обычных коммутаторов командной строки или SQLCMD переменных среды.

  • Задайте для переменной среды AZURE_TENANT_ID идентификатор клиента сервера, если не используется клиент пользователя по умолчанию.

ActiveDirectoryInteractive

Этот метод запускает веб-браузер для проверки подлинности пользователя.

ActiveDirectoryManagedIdentity

Используйте этот метод при запуске sqlcmd (Go) на виртуальной машине Azure, которая имеет управляемое удостоверение, назначаемое системой или назначаемое пользователем. При использовании управляемого удостоверения, назначаемого пользователем, задайте имя пользователя идентификатору клиента управляемого удостоверения. Если используется удостоверение, назначаемое системой, оставьте имя пользователя пустым.

В этом примере показано, как подключиться с помощью управляемого удостоверения, назначенного службой (SAMI):

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

В этом примере показано, как подключиться к управляемому удостоверению, назначенному пользователем (UAMI), добавив идентификатор клиента назначаемого пользователем управляемого удостоверения:

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

Этот метод проверяет подлинность указанного имени пользователя в качестве идентификатора субъекта-службы и пароль в качестве секрета клиента для субъекта-службы. Укажите имя пользователя в формате <service principal id>@<tenant id>. Задайте для переменной SQLCMDPASSWORD секрет клиента. При использовании сертификата вместо секрета клиента задайте для переменной среды AZURE_CLIENT_CERTIFICATE_PATH путь к файлу сертификата.

Переменные среды для проверки подлинности Microsoft Entra

Некоторые параметры проверки подлинности Microsoft Entra не имеют входных данных командной строки, а некоторые переменные среды используются непосредственно azidentity пакетом, используемым sqlcmd (Go).

Эти переменные среды можно задать для настройки некоторых аспектов проверки подлинности Microsoft Entra и обхода поведения по умолчанию. Помимо перечисленных ранее переменных, следующие относятся к sqlcmd (Go) и применяются к нескольким методам.

SQLCMDCLIENTID

Задайте для этой переменной среды идентификатор приложения, зарегистрированного в Microsoft Entra, который авторизован для проверки подлинности в База данных SQL Azure. Применяется к методам ActiveDirectoryInteractive и ActiveDirectoryPassword.