Авторизуйте доступ AzCopy с помощью служебного принципала

Субъекты-службы обеспечивают безопасный способ авторизации операций AzCopy для приложений и автоматизированных сценариев, требующих неинтерактивной проверки подлинности. Этот метод проверки подлинности идеально подходит для непрерывной интеграции и конвейеров непрерывного развертывания, запланированных задач и приложений, работающих за пределами Azure, где управляемые удостоверения недоступны.

В этой статье показано, как аутентифицировать AzCopy, используя учетную запись службы с секретом клиента или сертификатом. Вы узнаете, как настроить проверку подлинности с помощью переменных среды, команды входа AzCopy или использовать существующие сеансы Azure CLI или Azure PowerShell.

Замечание

Хотя служебные принципы обеспечивают гибкость для кроссплатформенных сценариев, корпорация Майкрософт рекомендует использовать управляемые удостоверения на ресурсах Azure для упрощенного управления учетными данными и повышения безопасности. Дополнительные сведения о других способах авторизации доступа к AzCopy см. в статье "Авторизация AzCopy".

Проверка назначений ролей

Убедитесь, что ваш служебный принципал имеет необходимую роль в Azure для ваших запланированных операций.

Для операций загрузки используйте чтение данных из Azure Blob Storage или привилегированное чтение данных из файлов Azure.

Для операций загрузки используйте Storage Blob Data Contributor или Storage Blob Data Owner (Blob Storage) или Storage File Data Privileged Contributor (Azure Files).

Инструкции по назначению ролей см. в статье Назначение роли Azure для доступа к данным BLOB-объектов (Blob-хранилище) или Выбор способа авторизации доступа к данным файлов на портале Azure (файлы Azure).

Замечание

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

Если вы передаёте блобы в учетной записи с иерархическим пространством имен, вам не нужно назначать одну из этих ролей субъекту безопасности, если вы добавите его в список управления доступом (ACL) целевого контейнера или каталога. В ACL субъект безопасности должен иметь разрешение на запись в целевом каталоге и выполнить разрешение на контейнер и каждый родительский каталог. Дополнительные сведения см. в статье " Модель управления доступом" в Azure Data Lake Storage.

Авторизация с помощью переменных среды

Чтобы авторизовать доступ, задайте переменные среды в памяти и выполните любую команду AzCopy. AzCopy извлекает маркер проверки подлинности, необходимый для выполнения операции. После завершения операции маркер исчезает из памяти.

AzCopy извлекает маркер OAuth с помощью предоставленных учетных данных или может использовать маркер OAuth из активного сеанса Azure CLI или Azure PowerShell.

Этот вариант идеально подходит, если вы планируете использовать AzCopy внутри скрипта, который выполняется без взаимодействия с пользователем, особенно при выполнении локальной среды. Если вы планируете запускать AzCopy на виртуальных машинах, работающих в Azure, управляемое удостоверение службы проще администрировать. Дополнительные сведения см. в статье "Авторизация доступа для AzCopy" с помощью управляемого удостоверения.

Caution

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые не присутствуют в других потоках. Используйте этот поток, только если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.

Вы можете войти в свою учетную запись, используя секрет клиента или пароль сертификата, связанного с регистрацией приложения основного пользователя службы.

Дополнительные сведения о создании субъекта-службы см. в статье "Практическое руководство. Создание приложения и субъекта-службы Microsoft Entra с доступом к ресурсам с помощью портала".

Дополнительные сведения о субъектах-службах см. в разделе Объекты приложений и субъектов-служб в Microsoft Entra ID.

Авторизуйте сервисный принципал с помощью секрета клиента

Введите следующую команду и нажмите клавишу ВВОД.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CLIENT_SECRET=<client-secret>
export AZCOPY_TENANT_ID=<tenant-id>

Замените <application-id> заполнитель идентификатором приложения в регистрации приложения служебного принципала. Замените <tenant-id> заполнитель идентификатором арендатора организации, к которой принадлежит учетная запись хранилища. Чтобы найти идентификатор приложения и идентификатор клиента, см. статью "Вход в приложение".

Замените <client-secret> заполнитель секретом клиента. Сведения о получении секрета клиента см. в статье "Создание нового секрета клиента". Рекомендуется использовать запрос на настройку переменной AZCOPY_SPA_CLIENT_SECRET , как показано в следующем примере. Таким образом пароль не будет отображаться в журнале команд консоли.

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

Затем выполните любую команду AzCopy (например: azcopy list https://contoso.blob.core.windows.net).

Авторизация представителя службы с помощью сертификата

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

Помимо отправки сертификата в регистрацию приложения, необходимо также сохранить копию сертификата на компьютере или виртуальной машине, где выполняется AzCopy. Эта копия сертификата должна быть в формате .PFX или .PEM и должна включать закрытый ключ. Закрытый ключ должен быть защищен паролем. Если вы используете Windows, а сертификат существует только в хранилище сертификатов, обязательно экспортируйте этот сертификат в PFX-файл (включая закрытый ключ). Инструкции см. в статье Export-PfxCertificate.

Введите следующую команду и нажмите клавишу ВВОД.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CERT_PATH=<path-to-certificate-file>
export AZCOPY_SPA_CERT_PASSWORD=<certificate-password>
export AZCOPY_TENANT_ID=<tenant-id>

Замените <application-id> заполнитель идентификатором приложения в регистрации приложения служебного принципала. Замените <tenant-id> заполнитель идентификатором арендатора организации, к которой принадлежит учетная запись хранилища. Чтобы найти идентификатор приложения и идентификатор клиента, см. статью "Вход в приложение".

Замените <path-to-certificate-file> местозаполнитель относительным или полным путем к файлу сертификата. AzCopy сохраняет путь к этому сертификату, но не сохраняет копию сертификата, так что убедитесь, что сертификат остается на месте. Замените <certificate-password> заполнитель паролем сертификата. Рекомендуется использовать запрос на настройку переменной AZCOPY_SPA_CERT_PASSWORD , как показано в следующем примере. Таким образом пароль не будет отображаться в журнале команд консоли.

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

Затем выполните любую команду AzCopy (например: azcopy list https://contoso.blob.core.windows.net).

Авторизация с помощью команды входа AzCopy

В качестве альтернативы использованию переменных в памяти можно авторизовать доступ с помощью команды azcopy login.

Команда azcopy login извлекает токен OAuth, а затем помещает этот токен в хранилище секретов вашей системы. Если в вашей операционной системе нет хранилища секретов, такого как хранилище Linux keyring, команда azcopy login не будет работать, поскольку нет места для размещения токена.

Авторизация субъекта-службы

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

Вы можете войти в свою учетную запись, используя секрет клиента или пароль сертификата, связанного с регистрацией приложения основного пользователя службы.

Чтобы узнать больше о создании учетной записи службы, см. раздел «Практическое руководство: использование портала для создания приложения Microsoft Entra и учетной записи службы, которая может получать доступ к ресурсам».

Caution

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые не присутствуют в других потоках. Используйте этот поток, только если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.

Авторизуйте сервисный принципал с помощью секрета клиента

Начните с задания переменной среды AZCOPY_SPA_CLIENT_SECRET в секретный ключ клиента регистрации приложения служебного объекта. Сведения о получении секрета клиента см. в статье "Создание нового секрета клиента".

Замечание

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

В этом примере показано, как это можно сделать в PowerShell. Рекомендуется использовать запрос, как показано в этом примере. Таким образом пароль не будет отображаться в журнале команд консоли.

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

Затем введите следующую команду и нажмите клавишу ВВОД.

azcopy login --service-principal  --application-id application-id --tenant-id=tenant-id

Замените application-id заполнитель идентификатором приложения в регистрации приложения служебного принципала. Замените <tenant-id> заполнитель идентификатором арендатора организации, к которой принадлежит учетная запись хранилища. Чтобы найти идентификатор приложения и идентификатор клиента, см. статью "Вход в приложение".

Авторизация представителя службы с помощью сертификата

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

Помимо отправки сертификата в регистрацию приложения, необходимо также сохранить копию сертификата на компьютере или виртуальной машине, где выполняется AzCopy. Эта копия сертификата должна быть в формате .PFX или .PEM и должна включать закрытый ключ. Закрытый ключ должен быть защищен паролем. Если вы используете Windows, а сертификат существует только в хранилище сертификатов, обязательно экспортируйте этот сертификат в PFX-файл (включая закрытый ключ). Инструкции см. в статье Export-PfxCertificate.

Затем задайте для переменной AZCOPY_SPA_CERT_PASSWORD среды пароль сертификата.

Замечание

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

В этом примере показано, как выполнить эту задачу в PowerShell. Рекомендуется использовать запрос, как показано в этом примере. Таким образом пароль не отображается в журнале команд консоли.

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

Затем введите следующую команду и нажмите клавишу ВВОД.

azcopy login --service-principal --application-id application-id --certificate-path <path-to-certificate-file> --tenant-id=<tenant-id>

Замените application-id заполнитель идентификатором приложения в регистрации приложения служебного принципала. Замените tenant-id заполнитель идентификатором арендатора организации, к которой принадлежит учетная запись хранилища. Чтобы найти идентификатор приложения и идентификатор клиента, см. статью "Вход в приложение".

Замените <path-to-certificate-file> местозаполнитель относительным или полным путем к файлу сертификата. AzCopy сохраняет путь к этому сертификату, но не сохраняет копию сертификата, поэтому убедитесь, что сертификат остается на месте.

Авторизация с помощью Azure CLI

При входе с помощью Azure CLI, Azure CLI получает маркер OAuth, который AzCopy использует для авторизации операций.

Чтобы разрешить AzCopy использовать этот токен, введите следующую команду и нажмите клавишу ВВОД.

export AZCOPY_AUTO_LOGIN_TYPE=AZCLI
export AZCOPY_TENANT_ID=<tenant-id>

Для получения дополнительной информации о том, как войти с помощью Azure CLI, см. раздел "Как войти в Azure с использованием субъекта-службы через Azure CLI".

Авторизация с помощью Azure PowerShell

При входе с помощью Azure PowerShell Azure PowerShell получает маркер OAuth, который AzCopy использует для авторизации операций.

Чтобы разрешить AzCopy использовать этот токен, введите следующую команду и нажмите клавишу ВВОД.

$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"
$Env:AZCOPY_TENANT_ID="<tenant-id>"

Дополнительные сведения о входе с помощью Azure PowerShell см. в разделе «Вход с помощью служебного клиента».

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

  • Дополнительные сведения об AzCopy см. в статье "Начало работы с AzCopy".

  • Если у вас есть вопросы, возникли проблемы или есть общие отзывы, отправьте их на GitHub.