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


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

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

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

Замечание

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

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

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

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

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

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

Замечание

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

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

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

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

AzCopy извлекает маркер OAuth с помощью предоставленных учетных данных. Кроме того, AzCopy может использовать токен OAuth активного интерфейса командной строки Azure или сеанса 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 (например: 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 (например: 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 с использованием 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.