Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
OAuth файлов Azure по протоколу REST обеспечивает доступ на уровне администратора для чтения и записи к общим папкам Azure для пользователей и приложений с помощью протокола проверки подлинности OAuth с помощью идентификатора Microsoft Entra для доступа на основе REST API. Пользователи, группы, сторонние службы, такие как портал Azure, и сторонние службы и приложения, использующие интерфейсы REST, теперь могут использовать проверку подлинности И авторизацию OAuth с учетной записью Microsoft Entra для доступа к данным в общих папках Azure. Командлеты PowerShell и команды Azure CLI, вызывающие REST API, могут также использовать OAuth для доступа к файловым хранилищам Azure. Необходимо вызвать REST API с помощью явного заголовка, чтобы указать намерение использовать дополнительные привилегии. Это также верно для доступа к Azure PowerShell и Azure CLI.
Это важно
В этой статье объясняется, как включить доступ на уровне администратора к общим папкам Azure для конкретных вариантов использования клиентов. Если вы ищете более общую статью о проверке подлинности на основе удостоверений для конечных пользователей, ознакомьтесь с обзором проверки подлинности на основе удостоверений Azure для доступа к SMB.
Применимо к
Модель управления | Модель выставления счетов | Уровень медиа | Избыточность | Малый и средний бизнес (SMB) | Сетевая файловая система (NFS) |
---|---|---|---|---|---|
Microsoft.Storage | Настроенная версия 2 | HDD (стандартный) | Локальное (LRS) |
![]() |
![]() |
Microsoft.Storage | Настроенная версия 2 | HDD (стандартный) | Зона (ZRS) |
![]() |
![]() |
Microsoft.Storage | Настроенная версия 2 | HDD (стандартный) | Гео (GRS) |
![]() |
![]() |
Microsoft.Storage | Настроенная версия 2 | HDD (стандартный) | GeoZone (GZRS) |
![]() |
![]() |
Microsoft.Storage | Настроенная версия v1 | SSD (премиум) | Локальное (LRS) |
![]() |
![]() |
Microsoft.Storage | Настроенная версия v1 | SSD (премиум) | Зона (ZRS) |
![]() |
![]() |
Microsoft.Storage | Оплата по мере использования | HDD (стандартный) | Локальное (LRS) |
![]() |
![]() |
Microsoft.Storage | Оплата по мере использования | HDD (стандартный) | Зона (ZRS) |
![]() |
![]() |
Microsoft.Storage | Оплата по мере использования | HDD (стандартный) | Гео (GRS) |
![]() |
![]() |
Microsoft.Storage | Оплата по мере использования | HDD (стандартный) | GeoZone (GZRS) |
![]() |
![]() |
Ограничения
Авторизация операций с данными файлов с идентификатором Microsoft Entra поддерживается только для REST API версий 2022-11-02 и более поздних версий.
Поддержка Azure Files OAuth через REST для файловых API уровня данных REST, которые управляют ресурсами FileService и FileShare, доступна с версиями REST API 2024-11-04 и более поздних.
См. раздел "Управление версиями для службы хранилища Azure".
Клиентские кейсы
Аутентификация и авторизация OAuth с помощью Azure Files через интерфейс REST API могут принести пользу клиентам в следующих сценариях.
Интеграция разработки приложений и служб
Проверка подлинности и авторизация OAuth позволяют разработчикам создавать приложения, которые обращаются к REST API службы хранилища Azure с помощью удостоверений пользователей или приложений из идентификатора Microsoft Entra.
Клиенты и партнеры также могут включать службы первой и третьей сторон для настройки безопасного и прозрачного доступа к учетной записи хранения клиента.
Средства DevOps, такие как портал Azure, PowerShell и CLI, AzCopy и Обозреватель службы хранилища, могут управлять данными с помощью удостоверения пользователя, устраняя необходимость управления ключами доступа к хранилищу или распространения.
Управляемые идентичности
Клиенты с приложениями и управляемыми удостоверениями, которым требуется доступ к данным общей папки для резервного копирования, восстановления или аудита, могут воспользоваться проверкой подлинности и авторизацией OAuth. Применение разрешений на уровне файлов и каталогов для каждой идентичности повышает сложность и может быть несовместимо с определёнными нагрузками. Например, клиентам может потребоваться авторизовать службу решения резервного копирования для доступа к общим папкам Azure с доступом только для чтения ко всем файлам без разрешения для определенных файлов.
Замена ключа учетной записи хранения
Идентификатор Microsoft Entra обеспечивает более высокую безопасность и удобство использования при доступе к общему ключу. Вы можете заменить доступ к ключу учетной записи хранения проверкой подлинности OAuth и авторизацией для доступа к общим папкам Azure с правами чтения и записи. Этот подход также обеспечивает более удобный аудит и отслеживание доступа конкретных пользователей.
Привилегированный доступ и разрешения на доступ для операций с данными
Чтобы использовать функцию OAuth для файлов Azure по протоколу REST, требуются дополнительные разрешения, которые необходимо включить в роль RBAC, назначенную пользователю, группе или учетной записи службы. В рамках этой функции представлены два новых действия с данными:
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Пользователи, группы или служебные принципы, которые вызывают REST API с помощью OAuth, должны иметь назначенное readFileBackupSemantics
или writeFileBackupSemantics
действие в роли, позволяющей доступ к данным. Это требование для использования этой функции. Дополнительные сведения о разрешениях, необходимых для вызова определенных операций службы файлов, см. в разделе "Разрешения для вызова операций с данными".
Эта функция предоставляет две новые встроенные роли, которые включают эти новые действия.
Роль | Действия с данными |
---|---|
Привилегированный читатель данных файлов хранилища | Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action |
Участник с привилегированным доступом к файловым данным хранилища | Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action |
Эти новые роли похожи на существующие встроенные роли читателя SMB-общих папок файловых данных хранилища и участника SMB-общих папок файловых данных хранилища с повышенными привилегиями, но существуют некоторые отличия:
Новые роли содержат дополнительные действия с данными, необходимые для доступа К OAuth.
Когда пользователь, группа или служебный принципал, которому назначены роли Привилегированный Читатель Данных Файлов Хранилища или Привилегированный Участник Данных Файлов Хранилища, вызывает FilesREST Data API с помощью OAuth, этот пользователь, группа или служебный принципал получит:
- Привилегированный читатель данных хранилища: Полный доступ на чтение всех данных в ресурсах общего пользования для всех настроенных учетных записей хранилища, независимо от установленных разрешений NTFS на уровне файла или каталога.
- Привилегированный участник для данных файла хранилища: Полный доступ на чтение, запись, изменение списков управления доступом (ACL), удаление всех данных на общих ресурсах всех настроенных учетных записей хранения независимо от разрешений NTFS, установленных на уровне файла или каталога.
С этими специальными разрешениями и ролями система будет обходить любые разрешения на уровне файлов и каталогов и разрешать доступ к данным общей папки.
Благодаря новым ролям и действиям с данными эта функция обеспечит привилегии на уровне учетной записи хранения, которые заменяют все разрешения на файлы и папки во всех общих папках в учетной записи хранения. Однако новые роли содержат только разрешения на доступ к службам данных. Они не включают какие-либо разрешения на доступ к службам управления общими папками (действия в общих папках). Чтобы использовать эту функцию, убедитесь, что у вас есть разрешения на доступ:
- учетная запись хранения
- Службы управления общими папками
- службы данных (данные в общей папке)
Существует множество встроенных ролей , которые предоставляют доступ к службам управления. Вы также можете создавать пользовательские роли с соответствующими разрешениями. Дополнительные сведения об управлении доступом на основе ролей см. в статье Azure RBAC. Дополнительные сведения об определении встроенных ролей см. в разделе Общие сведения об определениях ролей.
Помните, что для типа ресурса совместного доступа к файлам соответствующая область действия RBAC применяется shares
в плоскости управления (операции управления), но используется fileshares
в плоскости данных (операции с данными). Если вы пытаетесь использовать идентификатор ресурса общей папки, содержащий shares
в рамках области RBAC или в строках действий данных, это не будет работать. В области назначений RBAC необходимо использовать fileshares
, например:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/fileServices/default/fileshares/<share-name>
Это важно
Все варианты использования подстановочных знаков, определенные для пути Microsoft.Storage/storageAccounts/fileServices/*
или более высокого уровня, автоматически наследуют дополнительный доступ и разрешения, предоставленные этой новой операцией данных. Чтобы предотвратить непредвиденный или чрезмерно привилегированный доступ к файлам Azure, мы реализовали дополнительные проверки, требующие явного указания пользователей и приложений на использование дополнительных привилегий. Кроме того, мы настоятельно рекомендуем, чтобы клиенты пересматривали назначения ролей пользователей в RBAC и заменяли использование подстановочных знаков на явные разрешения, тем самым обеспечивая надлежащее управление доступом к данным.
Авторизация доступа к данным файла в коде приложения
Клиентская библиотека удостоверений Azure упрощает процесс получения токена доступа OAuth 2.0 для авторизации с Microsoft Entra ID через Azure SDK. Последние версии клиентских библиотек службы хранилища Azure для .NET, Java, Python, Java, JavaScript и Go интегрируются с библиотеками удостоверений Azure для каждого из этих языков, чтобы предоставить простые и безопасные средства для получения маркера доступа для авторизации запросов из файловой службы Azure.
Преимущество клиентских библиотек удостоверений Azure заключается в том, что они позволяют использовать один и тот же код для получения маркера доступа независимо от того, выполняется приложение в среде разработки или в Azure. Клиентская библиотека удостоверений Azure возвращает токен доступа для субъекта безопасности. Когда ваш код исполняется в Azure, объектом безопасности может быть управляемое удостоверение для ресурсов Azure, служебный принципал, пользователь или группа. В среде разработки клиентская библиотека предоставляет маркер доступа для пользователя или директора службы в целях тестирования.
Токен доступа, возвращенный клиентской библиотекой удостоверений Azure, инкапсулируется в учетные данные токена. Затем можно использовать учетные данные токена для получения объекта клиента службы для выполнения авторизованных операций со службой файлов Azure.
В следующем примере кода показано, как авторизовать клиентский объект с помощью идентификатора Microsoft Entra и выполнять операции на уровне каталога и файла. В этом примере предполагается, что общая папка уже существует.
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
namespace FilesOAuthSample
{
internal class Program
{
static async Task Main(string[] args)
{
string tenantId = "";
string appId = "";
string appSecret = "";
string entraEndpoint = "";
string accountUri = "https://<storage-account-name>.file.core.windows.net/";
string shareName = "test-share";
string directoryName = "test-directory";
string fileName = "test-file";
TokenCredential tokenCredential = new ClientSecretCredential(
tenantId,
appId,
appSecret,
new TokenCredentialOptions()
{
AuthorityHost = new Uri(entraEndpoint)
});
// Set client options
ShareClientOptions clientOptions = new ShareClientOptions();
clientOptions.AllowTrailingDot = true;
clientOptions.AllowSourceTrailingDot = true;
// x-ms-file-intent=backup will automatically be applied to all APIs
// where it is required in derived clients
clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;
ShareServiceClient shareServiceClient = new ShareServiceClient(
new Uri(accountUri),
tokenCredential,
clientOptions);
ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
await directoryClient.CreateAsync();
ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
await fileClient.CreateAsync(maxSize: 1024);
await fileClient.GetPropertiesAsync();
}
}
}
Авторизация доступа с помощью API плоскости данных FileREST
Вы также можете авторизовать доступ к данным файлов с помощью портала Azure, Azure PowerShell или Azure CLI.
Портал Azure может использовать учетную запись Microsoft Entra или ключ доступа к учетной записи хранения для доступа к данным файлов в учетной записи хранения Azure. Схема авторизации, используемая порталом Azure, зависит от назначенных вам ролей Azure.
При попытке получить доступ к данным файлов, портал Azure сначала проверяет, назначена ли вам роль Azure с Microsoft.Storage/storageAccounts/listkeys/action
. Если вам назначили роль с этим действием, то портал Azure использует ключ учетной записи для доступа к данным файлов через авторизацию по общему ключу. Если вам не была назначена роль с этим действием, то портал Azure попытается получить доступ к данным через вашу учетную запись Microsoft Entra.
Чтобы получить доступ к данным файлов на портале Azure с помощью учетной записи Microsoft Entra, вам потребуются разрешения на доступ к данным файла, а также необходимы разрешения для перехода по ресурсам учетной записи хранения на портале Azure. Встроенные роли, предоставляемые Azure, предоставляют доступ к файлам, но не предоставляют разрешения ресурсам учетной записи хранения. По этой причине для доступа к порталу также требуется назначить роль Azure Resource Manager (ARM), например роль Читателя, с областью действия на уровне учетной записи хранения или выше. Роль читателя предоставляет самые строгие разрешения, но любая роль ARM, которая предоставляет доступ к ресурсам управления учетными записями хранения, является приемлемым.
Портал Azure указывает, какая схема авторизации используется при переходе к контейнеру. Дополнительные сведения о доступе к данным на портале см. в статье "Выбор авторизации доступа к файлам" на портале Azure.