Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как с помощью управляемых удостоверений получить доступ к службам Azure, таким как Azure Storage, из веб-приложения, работающего на службе приложений Azure, без использования учетной записи пользователя. В этом руководстве показано подключение к Azure Storage в качестве примера.
С помощью этого руководства доступ к любой службе, которая поддерживает управляемое удостоверение (B на следующем рисунке), можно безопасно получить:
- Azure Storage
- Azure SQL Database
- Azure Key Vault
Вы хотите добавить безопасный доступ к службам Azure, включая службу хранилища Azure, Базу данных SQL Azure и Azure Key Vault из веб-приложения. Вы могли бы использовать общий ключ, но это создаст дополнительные проблемы с оперативной безопасностью, то есть с распределением прав на создание, развертывание секрета и управление им. Также возможно, что ключ может быть случайно загружен в GitHub, где хакеры знают, как их искать. Есть более безопасный способ предоставить веб-приложению доступ к данным — применить управляемое удостоверение.
Управляемое удостоверение из Microsoft Entra ID позволяет службе приложений получать доступ к ресурсам с помощью управления доступом на основе ролей (RBAC), не требуя учетных данных приложения. После назначения управляемого удостоверения веб-приложению Azure позаботится о создании и распространении сертификата. Вам не придется беспокоиться об управлении секретами или учетными данными приложения.
В этом руководстве описано следующее:
- Создайте управляемое удостоверение с системным назначением для веб-приложения.
- Создайте учетную запись хранения и контейнер Azure Blob Storage.
- получить доступ к хранилищу из веб-приложения с помощью управляемых удостоверений.
Если у вас нет учетной записи Azure, создайте учетную запись free перед началом работы.
Предварительные требования
Веб-приложение, работающее в Службе приложений Azure:
- .NET краткое руководство
- Краткое руководство для JavaScript
Включение управляемого удостоверения в приложении
Если вы создаете и публикуете веб-приложение с помощью Visual Studio, управляемое удостоверение было включено в вашем приложении.
В вашей службе приложений в меню слева выберите Удостоверение, затем выберите Системное назначение. Убедитесь, что для параметра Состояние задано значение Вкл.
Если нет, нажмите кнопку "Вкл." и "Сохранить". Чтобы включить управляемое удостоверение, назначаемое системой, в диалоговом окне подтверждения нажмите кнопку "Да". Если управляемое удостоверение включено, для состояния устанавливается значение Вкл. и будет доступен идентификатор объекта.
Это действие создает новый идентификатор объекта, который отличается от идентификатора приложения, созданного на панели Проверка подлинности и авторизация. Скопируйте идентификатор объекта для управляемого удостоверения, назначаемого системой. Он понадобится вам позже.
Создание учетной записи хранения и контейнера Blob Storage
Теперь вы готовы создать учетную запись хранения и контейнер Blob Storage.
Каждая учетная запись хранения должна принадлежать группе ресурсов Azure. Группа ресурсов — это логический контейнер для служб Azure. При создании учетной записи хранения можно создать новую группу ресурсов или использовать существующую группу ресурсов. В этой статье показано, как создать группу ресурсов.
Учетная запись хранения общего назначения версии 2 предоставляет доступ ко всем службам Azure Storage: blob-объектам, файлам, очередям, таблицам и дискам. С помощью описанной здесь процедуры создается учетная запись хранения общего назначения версии 2, но создание любого типа учетной записи хранения происходит таким же образом.
Blob-объекты в Azure Storage организованы в контейнеры. Прежде чем загрузить blob чуть позже в этом учебнике, необходимо сначала создать контейнер.
Чтобы создать учетную запись хранения общего назначения версии 2 на портале Azure, выполните следующие действия.
В меню портала Azure введите Storage Accounts. Как только вы начнете вводить символы, список отфильтруется соответствующим образом. Выберите Учетные записи хранения.
В появившемся окне Учетные записи хранения выберите Создать.
Выберите подписку, в которой будет создана учетная запись хранения.
Для группы ресурсов выберите группу ресурсов, содержащую веб-приложение.
Введите имя учетной записи хранения. Выбранное имя должно быть уникальным в Azure. Имя должно быть от 3 до 24 символов длиной и может содержать только цифры и строчные буквы.
Выберите расположение (регион) учетной записи хранения или используйте значение по умолчанию.
Для предпочтительного типа хранилища выберите хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения.
Оставьте в следующих полях значения по умолчанию.
Поле значение Производительность Стандарт Избыточность Геоизбыточное хранилище Выберите Просмотр и создание, чтобы просмотреть настройки учетной записи хранения и создать учетную запись.
Нажмите кнопку создания.
Чтобы создать контейнер Blob Storage в Azure Storage, выполните следующие действия.
Перейдите к новой учетной записи хранения на портале Azure.
В меню слева для учетной записи хранения в разделе хранилища данных выберите контейнеры.
Выберите Добавить контейнер.
Введите имя для нового контейнера. Имя контейнера должно быть написано строчными буквами, начинаться с буквы или цифры и содержать только буквы, цифры и символ дефиса (-).
Задайте уровень общего доступа к контейнеру. По умолчанию используется уровень Частный (без анонимного доступа).
Выберите ОК, чтобы создать контейнер.
Предоставление доступа к учетной записи хранения
Чтобы получить возможность создавать, считывать и удалять большие двоичные объекты, вам необходимо предоставить веб-приложению доступ к учетной записи хранения. В предыдущем разделе вы настроили веб-приложение с управляемым удостоверением, запускаемое в службе приложений. Используя Azure RBAC, вы можете предоставить управляемому удостоверению доступ к другому ресурсу, как и любому объекту безопасности.
Роль участника данных BLOB-объектов хранилища предоставляет веб-приложению, представленному системно назначаемым управляемым удостоверением, доступ на чтение, запись и удаление к контейнеру BLOB-объектов и данным.
Примечание.
Azure RBAC не поддерживает некоторые операции с частными контейнерами blob, например просмотр или копирование blob между учетными записями. Контейнер Blob с частным уровнем доступа требует токен SAS для всех операций, которые не авторизует Azure RBAC. Дополнительные сведения см. в разделе "Когда следует использовать совместный токен доступа".
- На портале Azure откройте учетную запись хранилища, чтобы предоставить веб-приложению доступ.
- В меню слева выберите элемент управления доступом (IAM) и выберите назначения ролей. Вы увидите список пользователей, имеющих доступ к учетной записи хранения.
- Вы хотите добавить назначение ролей в службу приложений, требующую доступа к учетной записи хранения. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.
- Назначьте роль участника данных BLOB-объектов хранилищаслужбе приложений в области учетной записи хранения. Дополнительные сведения см. в разделе Назначение ролей Azure с помощью портала Azure.
Теперь веб-приложение сможет обращаться к этой учетной записи хранения.
Доступ к облачному хранилищу объектов
Класс DefaultAzureCredential используется для получения токенов для авторизации запросов в вашем коде на Azure Storage. Создайте экземпляр класса DefaultAzureCredential, который использует управляемое удостоверение для получения токенов и их подключения к клиенту службы. Приведенный ниже пример кода получает учетные данные аутентифицированного токена и использует их для создания объекта клиента службы, который загружает новый blob.
Чтобы просмотреть этот код как часть примера приложения, см. раздел sample GitHub.
Установка пакетов клиентских библиотек
Установите пакет NuGet Blob Storage для работы с Blob Storage и пакет NuGet клиентской библиотеки Azure Identity для .NET для аутентификации с использованием учетных данных Microsoft Entra. Установите клиентские библиотеки с помощью интерфейса командной строки .NET Core или консоли Package Manager в Visual Studio.
командная строка .NET Core
Откройте командную строку и перейдите в каталог с файлом проекта.
Выполните команды установки.
dotnet add package Azure.Storage.Blobs dotnet add package Azure.Identity
Консоль диспетчера пакетов
Откройте проект или решение в Visual Studio и откройте консоль с помощью команды Tools>NuGet Package Manager>Package Manager Console.
Выполните команды установки.
Install-Package Azure.Storage.Blobs Install-Package Azure.Identity
пример .NET
using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;
// Some code omitted for brevity.
static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
// Construct the blob container endpoint from the arguments.
string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get a credential and create a client object for the blob container.
BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
new DefaultAzureCredential());
try
{
// Create the container if it doesn't exist.
await containerClient.CreateIfNotExistsAsync();
// Upload text to a new block blob.
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
using (MemoryStream stream = new MemoryStream(byteArray))
{
await containerClient.UploadBlobAsync(blobName, stream);
}
}
catch (Exception e)
{
throw e;
}
}
Очистка ресурсов
Если вы завершите работу с этим руководством и больше не нуждаетесь в веб-приложении или связанных ресурсах, очистите созданные ресурсы.
Удаление группы ресурсов
На портале Azure выберите группы ресурсов в меню портала Azure и выберите группу ресурсов, содержащую службу приложений и план службы приложений.
Щелкните Удалить группу ресурсов. Одновременно с группой ресурсов удаляются все содержащиеся в ней ресурсы.
Введите имя группы ресурсов, чтобы подтвердить.
Выполнение этого процесса может занять несколько минут.
Следующие шаги
Из этого руководства вы узнали, как:
- создавать управляемое удостоверение, назначаемое системой;
- Создайте учетную запись хранения и контейнер Blob Storage.
- получить доступ к хранилищу из веб-приложения с помощью управляемых удостоверений.