Аутентификация с использованием Microsoft Entra ID в bcp

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsБаза данных SQL в Microsoft Fabric

Программа массового копирования (bcp) поддерживает несколько моделей аутентификации Microsoft Entra ID при подключении к базе данных SQL Azure, управляемому экземпляру SQL Azure, базе данных SQL в Microsoft Fabric, Azure Synapse Analytics или SQL Server 2022 (16.x) и более поздних версиях.

Чтобы проверить, поддерживает ли установленная служба bcp проверку подлинности Microsoft Entra, запустите bcp --help и убедитесь, что -G отображается в списке доступных аргументов.

Ограничения платформы

Не все режимы проверки подлинности доступны на каждой платформе:

  • Интерактивная проверка подлинности Microsoft Entra поддерживается только в Windows.

  • Для интегрированной проверки подлинности Microsoft Entra в Linux и macOS требуется Microsoft ODBC Driver 18 для SQL Server (драйвер 17.6.1 или более поздней версии, если вы не можете перейти к драйверу 18) и правильно настроенной среде Kerberos.

  • Проверка подлинности с помощью файла маркера доступа (-P <token_file>) поддерживается только в Linux и macOS.

Имя пользователя и пароль Microsoft Entra

Укажите -G вместе -U (имя пользователя) и -P (пароль).

В следующем примере таблица bcptest экспортируется из базы данных testdb на contoso.database.windows.net в файл c:\last\data1.dat. Замените <password> допустимым паролем.

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com -P <password>

В следующем примере импортируются те же данные:

bcp bcptest in "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com -P <password>

Интегрированная Microsoft Entra

Укажите -G без -U или -P. Текущая учетная запись Windows (или удостоверение Kerberos в Linux/macOS) должна быть объединена с Microsoft Entra ID. В следующих примерах замените <server> на имя вашего сервера.

Экспорт:

bcp bcptest out "c:\last\data2.dat" -S <server>.database.windows.net -d testdb -G -c

Импорт:

bcp bcptest in "c:\last\data2.dat" -S <server>.database.windows.net -d testdb -G -c

Удостоверение управляемой службы Microsoft Entra

Проверка подлинности как назначаемого системой или назначаемого пользователем управляемого удостоверения с помощью настроенного имени DSN. Один и тот же подход работает для обоих bcp in и bcp out.

Important

bcp тесно связан с его драйвером. Основная версия bcp должна соответствовать основной версии драйвера, с которым создается DSN. Чтобы определить версию bcp , выполните команду bcp -v.

Настройте DSN с помощью администратора источника данных ODBC:

  1. Нажмите клавишу Windows на клавиатуре.
  2. Введите ODBC и выберите соответствующую версию администратора источника данных ODBC.
  3. Выберите вкладку Пользовательская DSN или Системная DSN.
  4. Нажмите кнопку "Добавить " и следуйте инструкциям.
  5. Когда вас попросят указать тип проверки подлинности, выберите проверку подлинности управляемого удостоверения службы Azure.
  6. Для управляемого идентификатора, назначаемого пользователем, вставьте Object (principal) ID идентификатор в поле идентификатора входа на вкладке аутентификации.
  7. Продолжайте следовать инструкциям, чтобы завершить настройку DSN.

Полное пошаговое руководство, включая снимки экрана, см. в разделе "Создание и редактирование доменных сетей" в пользовательском интерфейсе.

Используйте флаг -D, чтобы указать, что значение, передаваемое в -S, является DSN. Переключатели -D и -S могут располагаться в любом порядке в командной строке.

bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb

Токен доступа Microsoft Entra ID

Применяется только к Linux и macOS. Windows не поддерживается.

bcp 17.8 и более поздние версии на Linux и macOS могут аутентифицироваться с помощью токена доступа. В следующих примерах Azure CLI будет использоваться для получения токена и записи его в безопасный временный файл.

Important

Файл маркера должен быть в формате UTF-16LE без BOM. Ограничить разрешения файлов и удалить файл, если он больше не нужен, как показано в следующих примерах.

Системно назначенная управляемая идентичность

Замените <server> именем сервера.

  1. Войдите в систему, используя управляемую учетную запись

    az login --identity
    
  2. Получите маркер, напишите его в безопасный временный файл и запустите bcp:

    # Create a secure temporary file for the token
    tokenFile=$(mktemp)
    chmod 600 "$tokenFile"
    
    # Retrieve the access token and write it as UTF-16LE without BOM
    az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > "$tokenFile"
    
    # Run bcp with the token file
    bcp bcptest out data2.dat -S <server>.database.windows.net -d testdb -G -P "$tokenFile" -c
    
    # Clean up token file
    rm -f "$tokenFile"
    

Управляемая идентификация, назначаемая пользователем

  1. Войдите, используя управляемую учетную запись, назначенную пользователем. Замените <client_id> допустимым значением для вашей среды.

    az login --identity --username <client_id>
    
  2. Получите маркер, напишите его в безопасный временный файл и запустите bcp. Замените <server> допустимым значением для вашей среды.

    # Create a secure temporary file for the token
    tokenFile=$(mktemp)
    chmod 600 "$tokenFile"
    
    # Retrieve the access token and write it as UTF-16LE without BOM
    az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > "$tokenFile"
    
    # Run bcp with the token file
    bcp bcptest out data2.dat -S <server>.database.windows.net -d testdb -G -P "$tokenFile" -c
    
    # Clean up token file
    rm -f "$tokenFile"
    

Интерактивный Microsoft Entra

Применяется только к Windows. Linux и macOS не поддерживаются.

Интерактивная проверка подлинности Microsoft Entra использует диалоговое окно для проверки подлинности и поддерживает многофакторную проверку подлинности (MFA). Для интерактивной проверки подлинности требуется bcpверсии 15.0.1000.34 или более поздней версии, а драйвер ODBC 18 для SQL Server (или драйвер 17.2 или более поздней версии).

-G Укажите -U только (имя пользователя). Не включайте -P. bcp запрашивает пароль (или для учетных записей с поддержкой MFA выполняет настроенный процесс MFA).

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com

Для учетной записи Windows пользователя Microsoft Entra из федеративного домена добавьте домен в имя пользователя (например, joe@contoso.com):

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U joe@contoso.com

Если гостевые пользователи в клиенте Microsoft Entra являются частью группы с разрешениями базы данных в Базе данных SQL Azure, используйте псевдоним гостевого пользователя (например, keith0@adventure-works.com).

Получите помощь

Примите участие в разработке документации по SQL

Знаете ли вы, что содержимое SQL можно изменить самостоятельно? При этом вы не только помогаете улучшить нашу документацию, но и получаете признание в качестве участника страницы.

Дополнительные сведения см. в разделе Редактирование документации Microsoft Learn.