Перенос приложения на использование бессерверных подключений с Хранилище BLOB-объектов Azure

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

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

Настройка ролей и пользователей для аутентификации локальной разработки

Если вы выполняете разработку локально, убедитесь, что учетная запись пользователя, через которую осуществляется доступ к данным BLOB-объектов, имеет правильные разрешения. Вам потребуется служба хранилища участник данных BLOB-объектов для чтения и записи данных BLOB-объектов. Чтобы назначить себе эту роль, вам потребуется назначить роль Администратор istrator для доступа пользователей или другую роль, включающую действие Microsoft.Authorization/roleAssignments/write. Роли Azure RBAC можно назначить пользователю с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения о доступных областях назначения ролей можно узнать на странице обзора области.

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

В следующем примере будет назначена роль участника данных BLOB-объектов служба хранилища учетной записи пользователя, которая предоставляет доступ для чтения и записи к данным BLOB-объектов в вашей учетной записи хранения.

Важно!

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

  1. На портале Azure найдите свою учетную запись хранения, воспользовавшись основной панелью поиска или областью навигации слева.

  2. На странице обзора учетной записи хранения выберите Контроль доступа (IAM) в меню слева.

  3. На странице Контроль доступа (IAM) откройте вкладку Назначения ролей.

  4. Выберите + Добавить в верхнем меню, а затем выберите Добавить назначение роли в появившемся раскрывающемся меню.

    A screenshot showing how to assign a role.

  5. Используйте поле поиска, чтобы отфильтровать результаты для отображения нужной роли. В этом примере найдите участника данных BLOB-объектов хранилища и выберите соответствующий результат, а затем нажмите кнопку Далее.

  6. В разделе Назначение доступа для выберите Пользователь, группа или субъект-служба и + Выбрать членов.

  7. В диалоговом окне найдите имя пользователя Microsoft Entra (обычно ваш user@domain адрес электронной почты), а затем выберите в нижней части диалогового окна.

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

Вход и перенос кода приложения для использования подключений без пароля

Для локальной разработки убедитесь, что вы прошли проверку подлинности с той же учетной записью Microsoft Entra, которую вы назначили роли. Вы можете пройти проверку подлинности с помощью популярных средств разработки, таких как Azure CLI или Azure PowerShell. Средства разработки, с помощью которых можно пройти проверку подлинности на разных языках.

Войдите в Azure с помощью Azure CLI, выполнив следующую команду:

az login

Затем обновите код, чтобы использовать бессерверные подключения.

  1. Чтобы использовать DefaultAzureCredential в приложении .NET, установите Azure.Identity пакет:

    dotnet add package Azure.Identity
    
  2. В верхней части файла добавьте следующий код:

    using Azure.Identity;
    
  3. Определите расположения в коде, создающие BlobServiceClient подключение к Хранилище BLOB-объектов Azure. Обновите свой код, чтобы он соответствовал следующему примеру:

    DefaultAzureCredential credential = new();
    
    BlobServiceClient blobServiceClient = new(
        new Uri($"https://{storageAccountName}.blob.core.windows.net"),
        credential);
    
  1. Обязательно обновите имя учетной записи хранения в универсальном коде ресурса (URI) своего BlobServiceClient. Имя учетной записи хранения можно найти на странице обзора портал Azure.

    Screenshot showing how to find the storage account name.

Локальный запуск приложения

После внесения этих изменений кода запустите приложение локально. Новая конфигурация должна получить локальные учетные данные, например из Azure CLI, Visual Studio или IntelliJ. Роли, назначенные локальному пользователю разработки в Azure, позволяют приложению подключаться к службе Azure локально.

Настройка среды размещения Azure

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

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

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

  1. В верхней части портал Azure найдите управляемые удостоверения. Выберите результат управляемых удостоверений.
  2. Нажмите кнопку " + Создать " в верхней части страницы обзора управляемых удостоверений.
  3. На вкладке "Основные сведения" введите следующие значения:
    • Подписка: выберите нужную подписку.
    • Группа ресурсов: выберите нужную группу ресурсов.
    • Регион: выберите ближайший регион.
    • Имя: введите распознаваемое имя удостоверения, например MigrationIdentity.
  4. В нижней части страницы выберите Review + create (Проверить и создать).
  5. После завершения проверки проверка нажмите кнопку "Создать". Azure создает новое удостоверение, назначаемое пользователем.

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

A screenshot showing how to create a user assigned managed identity.

Связывание управляемого удостоверения с веб-приложением

Необходимо настроить веб-приложение для использования созданного управляемого удостоверения. Назначьте удостоверение приложению с помощью портал Azure или Azure CLI.

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

  • Azure Spring Apps
  • Приложения-контейнеры Azure
  • Виртуальные машины Azure
  • Служба Azure Kubernetes
  1. Перейдите на страницу обзора веб-приложения.

  2. Выберите удостоверение в области навигации слева.

  3. На странице "Удостоверение" перейдите на вкладку "Назначаемый пользователем".

  4. Нажмите кнопку +Добавить, чтобы открыть всплывающее окно добавления управляемого удостоверения, назначаемого пользователем.

  5. Выберите подписку, используемую ранее для создания удостоверения.

  6. Найдите идентификатор migrationIdentity по имени и выберите его из результатов поиска.

  7. Нажмите кнопку "Добавить ", чтобы связать удостоверение с приложением.

    Screenshot showing how to create a user assigned identity.

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

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

  1. Перейдите на страницу обзора учетной записи хранения и выберите Контроль доступа (IAM) в области навигации слева.

  2. Выберите Добавить назначение ролей.

    Screenshot showing how to add a role to a managed identity.

  3. В поле поиска Роль выполните поиск по строке Участник данных BLOB-объектов хранилища. Это общая роль, используемая для управления операциями с данными для BLOB-объектов. Вы можете назначить любую роль, подходящую для вашего варианта использования. Выберите значение Участник данных BLOB-объектов хранилища в списке и нажмите кнопку Далее.

  4. На экране Добавление назначения ролей для параметра Назначение доступа для выберите Управляемое удостоверение. Затем нажмите + Выбрать членов.

  5. В всплывающем элементе найдите управляемое удостоверение, созданное по имени, и выберите его из результатов. Нажмите кнопку "Выбрать", чтобы закрыть всплывающее меню.

    Screenshot showing how to select the assigned managed identity.

  6. Нажмите кнопку Далее несколько раз, пока не сможете нажать кнопку Проверить и назначить, чтобы завершить назначение роли.

Обновление кода приложения

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

  1. На странице обзора управляемого удостоверения скопируйте значение идентификатора клиента в буфер обмена.

  2. Примените следующие изменения, относящиеся к языку:

    DefaultAzureCredentialOptions Создайте объект и передайте его DefaultAzureCredentialв . Задайте для свойства ManagedIdentityClientId идентификатор клиента.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Повторно разверните код в Azure после внесения этого изменения в порядок применения обновлений конфигурации.

Тестирование приложения

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

Следующие шаги

Из этого учебника вы узнали, как выполнить переход приложения на подключение без пароля.

Дополнительные сведения о понятиях, описанных в этой статье, см. в следующих ресурсах: